From acd6737071f81b80fa42acbedce6c33d7b425901 Mon Sep 17 00:00:00 2001 From: EC2 Default User Date: Thu, 30 Apr 2020 18:35:36 +0000 Subject: [PATCH] added scoreboard with use of usecontext --- tic-tac-toe-app/App.js | 18 + tic-tac-toe-app/README.md | 6 + tic-tac-toe-app/components/Scoreboard.jsx | 13 + tic-tac-toe-app/components/board.jsx | 121 + tic-tac-toe-app/components/players.jsx | 11 + tic-tac-toe-app/contexts/ScoreContext.jsx | 11 + tic-tac-toe-app/game.js | 87 + tic-tac-toe-app/index.html | 22 + .../node_modules/@types/color-name/LICENSE | 21 + .../node_modules/@types/color-name/README.md | 16 + .../node_modules/@types/color-name/index.d.ts | 161 + .../@types/color-name/package.json | 52 + .../@zeit/schemas/.circleci/config.yml | 40 + .../node_modules/@zeit/schemas/.editorconfig | 37 + .../node_modules/@zeit/schemas/.yarnrc | 1 + .../node_modules/@zeit/schemas/LICENSE | 21 + .../node_modules/@zeit/schemas/README.md | 45 + .../@zeit/schemas/deployment/config-env.js | 41 + .../@zeit/schemas/deployment/config-static.js | 79 + .../@zeit/schemas/deployment/config.js | 145 + .../node_modules/@zeit/schemas/package.json | 63 + .../@zeit/schemas/test/deployment-env.js | 88 + .../@zeit/schemas/test/deployment.js | 299 + .../node_modules/@zeit/schemas/test/user.js | 129 + .../node_modules/@zeit/schemas/user/index.js | 43 + .../node_modules/@zeit/schemas/yarn.lock | 1520 ++ .../node_modules/accepts/HISTORY.md | 236 + tic-tac-toe-app/node_modules/accepts/LICENSE | 23 + .../node_modules/accepts/README.md | 142 + tic-tac-toe-app/node_modules/accepts/index.js | 238 + .../node_modules/accepts/package.json | 86 + .../node_modules/acorn/CHANGELOG.md | 574 + tic-tac-toe-app/node_modules/acorn/LICENSE | 19 + tic-tac-toe-app/node_modules/acorn/README.md | 270 + tic-tac-toe-app/node_modules/acorn/bin/acorn | 4 + .../node_modules/acorn/dist/acorn.d.ts | 209 + .../node_modules/acorn/dist/acorn.js | 5020 ++++++ .../node_modules/acorn/dist/acorn.js.map | 1 + .../node_modules/acorn/dist/acorn.mjs | 4989 ++++++ .../node_modules/acorn/dist/acorn.mjs.map | 1 + .../node_modules/acorn/dist/bin.js | 64 + .../node_modules/acorn/package.json | 67 + .../node_modules/ajv/.tonic_example.js | 20 + tic-tac-toe-app/node_modules/ajv/LICENSE | 22 + tic-tac-toe-app/node_modules/ajv/README.md | 1295 ++ .../node_modules/ajv/dist/ajv.bundle.js | 7030 ++++++++ .../node_modules/ajv/dist/ajv.min.js | 3 + .../node_modules/ajv/dist/ajv.min.js.map | 1 + tic-tac-toe-app/node_modules/ajv/lib/ajv.d.ts | 363 + tic-tac-toe-app/node_modules/ajv/lib/ajv.js | 503 + tic-tac-toe-app/node_modules/ajv/lib/cache.js | 26 + .../node_modules/ajv/lib/compile/async.js | 90 + .../node_modules/ajv/lib/compile/equal.js | 3 + .../ajv/lib/compile/error_classes.js | 34 + .../node_modules/ajv/lib/compile/formats.js | 149 + .../node_modules/ajv/lib/compile/index.js | 379 + .../node_modules/ajv/lib/compile/resolve.js | 270 + .../node_modules/ajv/lib/compile/rules.js | 66 + .../ajv/lib/compile/schema_obj.js | 9 + .../ajv/lib/compile/ucs2length.js | 20 + .../node_modules/ajv/lib/compile/util.js | 267 + tic-tac-toe-app/node_modules/ajv/lib/data.js | 49 + .../node_modules/ajv/lib/dot/_limit.jst | 104 + .../node_modules/ajv/lib/dot/_limitItems.jst | 10 + .../node_modules/ajv/lib/dot/_limitLength.jst | 10 + .../ajv/lib/dot/_limitProperties.jst | 10 + .../node_modules/ajv/lib/dot/allOf.jst | 34 + .../node_modules/ajv/lib/dot/anyOf.jst | 48 + .../node_modules/ajv/lib/dot/coerce.def | 61 + .../node_modules/ajv/lib/dot/comment.jst | 9 + .../node_modules/ajv/lib/dot/const.jst | 11 + .../node_modules/ajv/lib/dot/contains.jst | 57 + .../node_modules/ajv/lib/dot/custom.jst | 191 + .../node_modules/ajv/lib/dot/defaults.def | 32 + .../node_modules/ajv/lib/dot/definitions.def | 199 + .../node_modules/ajv/lib/dot/dependencies.jst | 80 + .../node_modules/ajv/lib/dot/enum.jst | 30 + .../node_modules/ajv/lib/dot/errors.def | 194 + .../node_modules/ajv/lib/dot/format.jst | 106 + .../node_modules/ajv/lib/dot/if.jst | 75 + .../node_modules/ajv/lib/dot/items.jst | 100 + .../node_modules/ajv/lib/dot/missing.def | 39 + .../node_modules/ajv/lib/dot/multipleOf.jst | 20 + .../node_modules/ajv/lib/dot/not.jst | 43 + .../node_modules/ajv/lib/dot/oneOf.jst | 54 + .../node_modules/ajv/lib/dot/pattern.jst | 14 + .../node_modules/ajv/lib/dot/properties.jst | 244 + .../ajv/lib/dot/propertyNames.jst | 54 + .../node_modules/ajv/lib/dot/ref.jst | 85 + .../node_modules/ajv/lib/dot/required.jst | 108 + .../node_modules/ajv/lib/dot/uniqueItems.jst | 62 + .../node_modules/ajv/lib/dot/validate.jst | 255 + .../node_modules/ajv/lib/dotjs/README.md | 3 + .../node_modules/ajv/lib/dotjs/_limit.js | 155 + .../node_modules/ajv/lib/dotjs/_limitItems.js | 76 + .../ajv/lib/dotjs/_limitLength.js | 81 + .../ajv/lib/dotjs/_limitProperties.js | 76 + .../node_modules/ajv/lib/dotjs/allOf.js | 43 + .../node_modules/ajv/lib/dotjs/anyOf.js | 73 + .../node_modules/ajv/lib/dotjs/comment.js | 14 + .../node_modules/ajv/lib/dotjs/const.js | 55 + .../node_modules/ajv/lib/dotjs/contains.js | 81 + .../node_modules/ajv/lib/dotjs/custom.js | 226 + .../ajv/lib/dotjs/dependencies.js | 167 + .../node_modules/ajv/lib/dotjs/enum.js | 65 + .../node_modules/ajv/lib/dotjs/format.js | 149 + .../node_modules/ajv/lib/dotjs/if.js | 103 + .../node_modules/ajv/lib/dotjs/index.js | 33 + .../node_modules/ajv/lib/dotjs/items.js | 140 + .../node_modules/ajv/lib/dotjs/multipleOf.js | 76 + .../node_modules/ajv/lib/dotjs/not.js | 83 + .../node_modules/ajv/lib/dotjs/oneOf.js | 72 + .../node_modules/ajv/lib/dotjs/pattern.js | 74 + .../node_modules/ajv/lib/dotjs/properties.js | 328 + .../ajv/lib/dotjs/propertyNames.js | 81 + .../node_modules/ajv/lib/dotjs/ref.js | 123 + .../node_modules/ajv/lib/dotjs/required.js | 268 + .../node_modules/ajv/lib/dotjs/uniqueItems.js | 85 + .../node_modules/ajv/lib/dotjs/validate.js | 445 + .../node_modules/ajv/lib/keyword.js | 135 + .../node_modules/ajv/lib/refs/data.json | 17 + .../ajv/lib/refs/json-schema-draft-04.json | 150 + .../ajv/lib/refs/json-schema-draft-06.json | 154 + .../ajv/lib/refs/json-schema-draft-07.json | 168 + tic-tac-toe-app/node_modules/ajv/package.json | 125 + .../node_modules/ajv/scripts/.eslintrc.yml | 3 + .../node_modules/ajv/scripts/bundle.js | 61 + .../node_modules/ajv/scripts/compile-dots.js | 73 + tic-tac-toe-app/node_modules/ajv/scripts/info | 10 + .../node_modules/ajv/scripts/prepare-tests | 9 + .../ajv/scripts/publish-built-version | 32 + .../node_modules/ajv/scripts/travis-gh-pages | 23 + .../node_modules/ansi-align/CHANGELOG.md | 36 + .../node_modules/ansi-align/LICENSE | 13 + .../node_modules/ansi-align/README.md | 79 + .../node_modules/ansi-align/index.js | 61 + .../node_modules/ansi-align/package.json | 70 + .../node_modules/ansi-regex/index.js | 10 + .../node_modules/ansi-regex/license | 9 + .../node_modules/ansi-regex/package.json | 85 + .../node_modules/ansi-regex/readme.md | 46 + tic-tac-toe-app/node_modules/arch/LICENSE | 20 + tic-tac-toe-app/node_modules/arch/README.md | 71 + tic-tac-toe-app/node_modules/arch/browser.js | 43 + tic-tac-toe-app/node_modules/arch/index.js | 59 + .../node_modules/arch/package.json | 70 + .../node_modules/arg/.editorconfig | 15 + tic-tac-toe-app/node_modules/arg/LICENSE.md | 21 + tic-tac-toe-app/node_modules/arg/README.md | 163 + tic-tac-toe-app/node_modules/arg/index.js | 96 + tic-tac-toe-app/node_modules/arg/package.json | 58 + tic-tac-toe-app/node_modules/arg/test.js | 180 + tic-tac-toe-app/node_modules/arg/yarn.lock | 3431 ++++ .../node_modules/aria-query/CHANGELOG.md | 19 + .../node_modules/aria-query/LICENSE | 201 + .../node_modules/aria-query/README.md | 161 + .../aria-query/lib/ariaPropsMap.js | 116 + .../node_modules/aria-query/lib/domMap.js | 266 + .../aria-query/lib/elementRoleMap.js | 47 + .../lib/etc/roles/abstract/commandRole.js | 25 + .../lib/etc/roles/abstract/compositeRole.js | 22 + .../lib/etc/roles/abstract/inputRole.js | 25 + .../lib/etc/roles/abstract/landmarkRole.js | 20 + .../lib/etc/roles/abstract/rangeRole.js | 25 + .../lib/etc/roles/abstract/roletypeRole.js | 57 + .../lib/etc/roles/abstract/sectionRole.js | 37 + .../lib/etc/roles/abstract/sectionheadRole.js | 22 + .../lib/etc/roles/abstract/selectRole.js | 22 + .../lib/etc/roles/abstract/structureRole.js | 20 + .../lib/etc/roles/abstract/widgetRole.js | 20 + .../lib/etc/roles/abstract/windowRole.js | 23 + .../lib/etc/roles/ariaAbstractRoles.js | 59 + .../aria-query/lib/etc/roles/ariaDpubRoles.js | 166 + .../lib/etc/roles/ariaLiteralRoles.js | 286 + .../lib/etc/roles/dpub/docAbstractRole.js | 27 + .../etc/roles/dpub/docAcknowledgmentsRole.js | 27 + .../lib/etc/roles/dpub/docAfterwordRole.js | 27 + .../lib/etc/roles/dpub/docAppendixRole.js | 27 + .../lib/etc/roles/dpub/docBacklinkRole.js | 27 + .../lib/etc/roles/dpub/docBiblioentryRole.js | 27 + .../lib/etc/roles/dpub/docBibliographyRole.js | 27 + .../lib/etc/roles/dpub/docBibliorefRole.js | 27 + .../lib/etc/roles/dpub/docChapterRole.js | 27 + .../lib/etc/roles/dpub/docColophonRole.js | 27 + .../lib/etc/roles/dpub/docConclusionRole.js | 27 + .../lib/etc/roles/dpub/docCoverRole.js | 27 + .../lib/etc/roles/dpub/docCreditRole.js | 27 + .../lib/etc/roles/dpub/docCreditsRole.js | 27 + .../lib/etc/roles/dpub/docDedicationRole.js | 27 + .../lib/etc/roles/dpub/docEndnoteRole.js | 27 + .../lib/etc/roles/dpub/docEndnotesRole.js | 27 + .../lib/etc/roles/dpub/docEpigraphRole.js | 27 + .../lib/etc/roles/dpub/docEpilogueRole.js | 27 + .../lib/etc/roles/dpub/docErrataRole.js | 27 + .../lib/etc/roles/dpub/docExampleRole.js | 22 + .../lib/etc/roles/dpub/docFootnoteRole.js | 27 + .../lib/etc/roles/dpub/docForewordRole.js | 27 + .../lib/etc/roles/dpub/docGlossaryRole.js | 27 + .../lib/etc/roles/dpub/docGlossrefRole.js | 27 + .../lib/etc/roles/dpub/docIndexRole.js | 27 + .../lib/etc/roles/dpub/docIntroductionRole.js | 27 + .../lib/etc/roles/dpub/docNoterefRole.js | 27 + .../lib/etc/roles/dpub/docNoticeRole.js | 27 + .../lib/etc/roles/dpub/docPagebreakRole.js | 27 + .../lib/etc/roles/dpub/docPagelistRole.js | 27 + .../lib/etc/roles/dpub/docPartRole.js | 27 + .../lib/etc/roles/dpub/docPrefaceRole.js | 27 + .../lib/etc/roles/dpub/docPrologueRole.js | 27 + .../lib/etc/roles/dpub/docPullquoteRole.js | 25 + .../lib/etc/roles/dpub/docQnaRole.js | 27 + .../lib/etc/roles/dpub/docSubtitleRole.js | 27 + .../lib/etc/roles/dpub/docTipRole.js | 27 + .../lib/etc/roles/dpub/docTocRole.js | 27 + .../lib/etc/roles/literal/alertRole.js | 28 + .../lib/etc/roles/literal/alertdialogRole.js | 25 + .../lib/etc/roles/literal/applicationRole.js | 26 + .../lib/etc/roles/literal/articleRole.js | 28 + .../lib/etc/roles/literal/bannerRole.js | 20 + .../lib/etc/roles/literal/buttonRole.js | 38 + .../lib/etc/roles/literal/cellRole.js | 30 + .../lib/etc/roles/literal/checkboxRole.js | 39 + .../lib/etc/roles/literal/columnheaderRole.js | 27 + .../lib/etc/roles/literal/comboboxRole.js | 39 + .../etc/roles/literal/complementaryRole.js | 20 + .../lib/etc/roles/literal/contentinfoRole.js | 20 + .../lib/etc/roles/literal/definitionRole.js | 30 + .../lib/etc/roles/literal/dialogRole.js | 20 + .../lib/etc/roles/literal/directoryRole.js | 22 + .../lib/etc/roles/literal/documentRole.js | 26 + .../lib/etc/roles/literal/feedRole.js | 20 + .../lib/etc/roles/literal/figureRole.js | 25 + .../lib/etc/roles/literal/formRole.js | 25 + .../lib/etc/roles/literal/gridRole.js | 33 + .../lib/etc/roles/literal/gridcellRole.js | 33 + .../lib/etc/roles/literal/groupRole.js | 27 + .../lib/etc/roles/literal/headingRole.js | 52 + .../lib/etc/roles/literal/imgRole.js | 30 + .../lib/etc/roles/literal/linkRole.js | 43 + .../lib/etc/roles/literal/listRole.js | 30 + .../lib/etc/roles/literal/listboxRole.js | 40 + .../lib/etc/roles/literal/listitemRole.js | 34 + .../lib/etc/roles/literal/logRole.js | 22 + .../lib/etc/roles/literal/mainRole.js | 25 + .../lib/etc/roles/literal/marqueeRole.js | 20 + .../lib/etc/roles/literal/mathRole.js | 20 + .../lib/etc/roles/literal/menuRole.js | 42 + .../lib/etc/roles/literal/menubarRole.js | 27 + .../lib/etc/roles/literal/menuitemRole.js | 43 + .../etc/roles/literal/menuitemcheckboxRole.js | 29 + .../etc/roles/literal/menuitemradioRole.js | 29 + .../lib/etc/roles/literal/navigationRole.js | 25 + .../lib/etc/roles/literal/noneRole.js | 20 + .../lib/etc/roles/literal/noteRole.js | 20 + .../lib/etc/roles/literal/optionRole.js | 42 + .../lib/etc/roles/literal/presentationRole.js | 20 + .../lib/etc/roles/literal/progressbarRole.js | 25 + .../lib/etc/roles/literal/radioRole.js | 36 + .../lib/etc/roles/literal/radiogroupRole.js | 28 + .../lib/etc/roles/literal/regionRole.js | 41 + .../lib/etc/roles/literal/rowRole.js | 30 + .../lib/etc/roles/literal/rowgroupRole.js | 38 + .../lib/etc/roles/literal/rowheaderRole.js | 31 + .../lib/etc/roles/literal/scrollbarRole.js | 48 + .../lib/etc/roles/literal/searchRole.js | 20 + .../lib/etc/roles/literal/searchboxRole.js | 29 + .../lib/etc/roles/literal/separatorRole.js | 28 + .../lib/etc/roles/literal/sliderRole.js | 30 + .../lib/etc/roles/literal/spinbuttonRole.js | 28 + .../lib/etc/roles/literal/statusRole.js | 23 + .../lib/etc/roles/literal/switchRole.js | 29 + .../lib/etc/roles/literal/tabRole.js | 24 + .../lib/etc/roles/literal/tableRole.js | 28 + .../lib/etc/roles/literal/tablistRole.js | 30 + .../lib/etc/roles/literal/tabpanelRole.js | 20 + .../lib/etc/roles/literal/termRole.js | 25 + .../lib/etc/roles/literal/textboxRole.js | 51 + .../lib/etc/roles/literal/timerRole.js | 20 + .../lib/etc/roles/literal/toolbarRole.js | 27 + .../lib/etc/roles/literal/tooltipRole.js | 20 + .../lib/etc/roles/literal/treeRole.js | 24 + .../lib/etc/roles/literal/treegridRole.js | 20 + .../lib/etc/roles/literal/treeitemRole.js | 20 + .../node_modules/aria-query/lib/index.js | 35 + .../aria-query/lib/roleElementMap.js | 33 + .../node_modules/aria-query/lib/rolesMap.js | 108 + .../node_modules/aria-query/package.json | 94 + .../node_modules/array-includes/.editorconfig | 13 + .../node_modules/array-includes/.eslintrc | 22 + .../array-includes/.github/FUNDING.yml | 12 + .../.github/workflows/rebase.yml | 15 + .../node_modules/array-includes/.travis.yml | 12 + .../node_modules/array-includes/CHANGELOG.md | 101 + .../node_modules/array-includes/LICENSE | 21 + .../node_modules/array-includes/README.md | 94 + .../node_modules/array-includes/auto.js | 3 + .../array-includes/implementation.js | 35 + .../node_modules/array-includes/index.js | 26 + .../node_modules/array-includes/package.json | 121 + .../node_modules/array-includes/polyfill.js | 7 + .../node_modules/array-includes/shim.js | 14 + .../node_modules/array-includes/test.html | 14606 ++++++++++++++++ .../node_modules/array-includes/test/index.js | 17 + .../array-includes/test/shimmed.js | 36 + .../node_modules/array-includes/test/tests.js | 94 + .../array.prototype.flat/.editorconfig | 20 + .../array.prototype.flat/.eslintrc | 40 + .../array.prototype.flat/.github/FUNDING.yml | 12 + .../.github/workflows/rebase.yml | 15 + .../node_modules/array.prototype.flat/.nycrc | 13 + .../array.prototype.flat/.travis.yml | 9 + .../array.prototype.flat/CHANGELOG.md | 53 + .../node_modules/array.prototype.flat/LICENSE | 21 + .../array.prototype.flat/README.md | 72 + .../node_modules/array.prototype.flat/auto.js | 3 + .../array.prototype.flat/implementation.js | 22 + .../array.prototype.flat/index.js | 19 + .../array.prototype.flat/package.json | 125 + .../array.prototype.flat/polyfill.js | 7 + .../node_modules/array.prototype.flat/shim.js | 14 + .../array.prototype.flat/test/index.js | 17 + .../array.prototype.flat/test/shimmed.js | 36 + .../array.prototype.flat/test/tests.js | 30 + .../node_modules/ast-types-flow/README.md | 99 + .../node_modules/ast-types-flow/lib/types.js | 5045 ++++++ .../node_modules/ast-types-flow/package.json | 63 + .../node_modules/astral-regex/index.js | 4 + .../node_modules/astral-regex/license | 9 + .../node_modules/astral-regex/package.json | 64 + .../node_modules/astral-regex/readme.md | 43 + .../node_modules/axobject-query/CHANGELOG.md | 26 + .../node_modules/axobject-query/LICENSE | 201 + .../node_modules/axobject-query/README.md | 384 + .../axobject-query/lib/AXObjectElementMap.js | 67 + .../axobject-query/lib/AXObjectRoleMap.js | 67 + .../axobject-query/lib/AXObjectsMap.js | 258 + .../axobject-query/lib/elementAXObjectMap.js | 89 + .../lib/etc/objects/AbbrRole.js | 17 + .../lib/etc/objects/AlertDialogRole.js | 17 + .../lib/etc/objects/AlertRole.js | 17 + .../lib/etc/objects/AnnotationRole.js | 12 + .../lib/etc/objects/ApplicationRole.js | 17 + .../lib/etc/objects/ArticleRole.js | 22 + .../lib/etc/objects/AudioRole.js | 17 + .../lib/etc/objects/BannerRole.js | 17 + .../lib/etc/objects/BlockquoteRole.js | 17 + .../lib/etc/objects/BusyIndicatorRole.js | 20 + .../lib/etc/objects/ButtonRole.js | 22 + .../lib/etc/objects/CanvasRole.js | 17 + .../lib/etc/objects/CaptionRole.js | 17 + .../lib/etc/objects/CellRole.js | 27 + .../lib/etc/objects/CheckBoxRole.js | 26 + .../lib/etc/objects/ColorWellRole.js | 21 + .../lib/etc/objects/ColumnHeaderRole.js | 22 + .../lib/etc/objects/ColumnRole.js | 12 + .../lib/etc/objects/ComboBoxRole.js | 22 + .../lib/etc/objects/ComplementaryRole.js | 17 + .../lib/etc/objects/ContentInfoRole.js | 17 + .../lib/etc/objects/DateRole.js | 21 + .../lib/etc/objects/DateTimeRole.js | 21 + .../lib/etc/objects/DefinitionRole.js | 17 + .../etc/objects/DescriptionListDetailRole.js | 17 + .../lib/etc/objects/DescriptionListRole.js | 17 + .../etc/objects/DescriptionListTermRole.js | 17 + .../lib/etc/objects/DetailsRole.js | 17 + .../lib/etc/objects/DialogRole.js | 22 + .../lib/etc/objects/DirectoryRole.js | 22 + .../lib/etc/objects/DisclosureTriangleRole.js | 12 + .../axobject-query/lib/etc/objects/DivRole.js | 17 + .../lib/etc/objects/DocumentRole.js | 17 + .../lib/etc/objects/EmbeddedObjectRole.js | 17 + .../lib/etc/objects/FeedRole.js | 17 + .../lib/etc/objects/FigcaptionRole.js | 17 + .../lib/etc/objects/FigureRole.js | 22 + .../lib/etc/objects/FooterRole.js | 17 + .../lib/etc/objects/FormRole.js | 22 + .../lib/etc/objects/GridRole.js | 17 + .../lib/etc/objects/GroupRole.js | 17 + .../lib/etc/objects/HeadingRole.js | 47 + .../etc/objects/IframePresentationalRole.js | 12 + .../lib/etc/objects/IframeRole.js | 17 + .../lib/etc/objects/IgnoredRole.js | 12 + .../lib/etc/objects/ImageMapLinkRole.js | 12 + .../lib/etc/objects/ImageMapRole.js | 20 + .../lib/etc/objects/ImageRole.js | 22 + .../lib/etc/objects/InlineTextBoxRole.js | 17 + .../lib/etc/objects/InputTimeRole.js | 21 + .../lib/etc/objects/LabelRole.js | 17 + .../lib/etc/objects/LegendRole.js | 17 + .../lib/etc/objects/LineBreakRole.js | 17 + .../lib/etc/objects/LinkRole.js | 25 + .../lib/etc/objects/ListBoxOptionRole.js | 22 + .../lib/etc/objects/ListBoxRole.js | 27 + .../lib/etc/objects/ListItemRole.js | 22 + .../lib/etc/objects/ListMarkerRole.js | 12 + .../lib/etc/objects/ListRole.js | 27 + .../axobject-query/lib/etc/objects/LogRole.js | 17 + .../lib/etc/objects/MainRole.js | 22 + .../lib/etc/objects/MarkRole.js | 17 + .../lib/etc/objects/MarqueeRole.js | 22 + .../lib/etc/objects/MathRole.js | 17 + .../lib/etc/objects/MenuBarRole.js | 17 + .../lib/etc/objects/MenuButtonRole.js | 12 + .../lib/etc/objects/MenuItemCheckBoxRole.js | 17 + .../lib/etc/objects/MenuItemRadioRole.js | 17 + .../lib/etc/objects/MenuItemRole.js | 22 + .../lib/etc/objects/MenuListOptionRole.js | 12 + .../lib/etc/objects/MenuListPopupRole.js | 12 + .../lib/etc/objects/MenuRole.js | 22 + .../lib/etc/objects/MeterRole.js | 17 + .../lib/etc/objects/NavigationRole.js | 22 + .../lib/etc/objects/NoneRole.js | 17 + .../lib/etc/objects/NoteRole.js | 17 + .../lib/etc/objects/OutlineRole.js | 12 + .../lib/etc/objects/ParagraphRole.js | 17 + .../lib/etc/objects/PopUpButtonRole.js | 12 + .../axobject-query/lib/etc/objects/PreRole.js | 17 + .../lib/etc/objects/PresentationalRole.js | 17 + .../lib/etc/objects/ProgressIndicatorRole.js | 22 + .../lib/etc/objects/RadioButtonRole.js | 26 + .../lib/etc/objects/RadioGroupRole.js | 17 + .../lib/etc/objects/RegionRole.js | 17 + .../lib/etc/objects/RootWebAreaRole.js | 12 + .../lib/etc/objects/RowHeaderRole.js | 26 + .../axobject-query/lib/etc/objects/RowRole.js | 22 + .../lib/etc/objects/RubyRole.js | 17 + .../lib/etc/objects/RulerRole.js | 12 + .../lib/etc/objects/SVGRootRole.js | 12 + .../lib/etc/objects/ScrollAreaRole.js | 12 + .../lib/etc/objects/ScrollBarRole.js | 17 + .../lib/etc/objects/SeamlessWebAreaRole.js | 12 + .../lib/etc/objects/SearchBoxRole.js | 26 + .../lib/etc/objects/SearchRole.js | 17 + .../lib/etc/objects/SliderRole.js | 26 + .../lib/etc/objects/SliderThumbRole.js | 12 + .../lib/etc/objects/SpinButtonPartRole.js | 12 + .../lib/etc/objects/SpinButtonRole.js | 26 + .../lib/etc/objects/SplitterRole.js | 17 + .../lib/etc/objects/StaticTextRole.js | 12 + .../lib/etc/objects/StatusRole.js | 17 + .../lib/etc/objects/SwitchRole.js | 26 + .../lib/etc/objects/TabGroupRole.js | 17 + .../lib/etc/objects/TabListRole.js | 17 + .../lib/etc/objects/TabPanelRole.js | 17 + .../axobject-query/lib/etc/objects/TabRole.js | 17 + .../etc/objects/TableHeaderContainerRole.js | 12 + .../lib/etc/objects/TableRole.js | 22 + .../lib/etc/objects/TermRole.js | 17 + .../lib/etc/objects/TextFieldRole.js | 31 + .../lib/etc/objects/TimeRole.js | 17 + .../lib/etc/objects/TimerRole.js | 17 + .../lib/etc/objects/ToggleButtonRole.js | 19 + .../lib/etc/objects/ToolbarRole.js | 17 + .../lib/etc/objects/TreeGridRole.js | 17 + .../lib/etc/objects/TreeItemRole.js | 17 + .../lib/etc/objects/TreeRole.js | 17 + .../etc/objects/UserInterfaceTooltipRole.js | 17 + .../lib/etc/objects/VideoRole.js | 17 + .../lib/etc/objects/WebAreaRole.js | 12 + .../lib/etc/objects/WindowRole.js | 12 + .../node_modules/axobject-query/lib/index.js | 25 + .../node_modules/axobject-query/package.json | 89 + .../node_modules/balanced-match/.npmignore | 5 + .../node_modules/balanced-match/LICENSE.md | 21 + .../node_modules/balanced-match/README.md | 91 + .../node_modules/balanced-match/index.js | 59 + .../node_modules/balanced-match/package.json | 77 + tic-tac-toe-app/node_modules/boxen/index.js | 138 + tic-tac-toe-app/node_modules/boxen/license | 9 + .../node_modules/boxen/package.json | 79 + tic-tac-toe-app/node_modules/boxen/readme.md | 175 + .../node_modules/brace-expansion/LICENSE | 21 + .../node_modules/brace-expansion/README.md | 129 + .../node_modules/brace-expansion/index.js | 201 + .../node_modules/brace-expansion/package.json | 75 + tic-tac-toe-app/node_modules/bytes/History.md | 82 + tic-tac-toe-app/node_modules/bytes/LICENSE | 23 + tic-tac-toe-app/node_modules/bytes/Readme.md | 125 + tic-tac-toe-app/node_modules/bytes/index.js | 159 + .../node_modules/bytes/package.json | 82 + .../node_modules/camelcase/index.js | 64 + .../node_modules/camelcase/license | 21 + .../node_modules/camelcase/package.json | 74 + .../node_modules/camelcase/readme.md | 57 + tic-tac-toe-app/node_modules/chalk/index.js | 228 + .../node_modules/chalk/index.js.flow | 93 + tic-tac-toe-app/node_modules/chalk/license | 9 + .../node_modules/chalk/package.json | 106 + tic-tac-toe-app/node_modules/chalk/readme.md | 314 + .../node_modules/chalk/templates.js | 128 + .../node_modules/chalk/types/index.d.ts | 97 + .../node_modules/chardet/.travis.yml | 5 + tic-tac-toe-app/node_modules/chardet/LICENSE | 19 + .../node_modules/chardet/README.md | 81 + .../node_modules/chardet/encoding/iso2022.js | 141 + .../node_modules/chardet/encoding/mbcs.js | 502 + .../node_modules/chardet/encoding/sbcs.js | 907 + .../node_modules/chardet/encoding/unicode.js | 112 + .../node_modules/chardet/encoding/utf8.js | 84 + tic-tac-toe-app/node_modules/chardet/index.js | 151 + tic-tac-toe-app/node_modules/chardet/match.js | 6 + .../node_modules/chardet/package.json | 83 + .../node_modules/cli-cursor/index.d.ts | 45 + .../node_modules/cli-cursor/index.js | 35 + .../node_modules/cli-cursor/license | 9 + .../node_modules/cli-cursor/package.json | 78 + .../node_modules/cli-cursor/readme.md | 55 + .../00ef1b3d-3687-482b-8d03-de2f76b58f54.json | 1 + .../00ef1b3d-3687-482b-8d03-de2f76b58f54.json | 1 + .../.nyc_output/processinfo/index.json | 1 + .../node_modules/cli-width/.travis.yml | 14 + .../node_modules/cli-width/CHANGELOG.md | 25 + .../node_modules/cli-width/LICENSE | 13 + .../node_modules/cli-width/README.md | 72 + .../node_modules/cli-width/index.js | 49 + .../node_modules/cli-width/package.json | 57 + .../clipboardy/fallbacks/.DS_Store | Bin 0 -> 8196 bytes .../clipboardy/fallbacks/linux/xsel | Bin 0 -> 129416 bytes .../clipboardy/fallbacks/windows/.DS_Store | Bin 0 -> 6148 bytes .../fallbacks/windows/clipboard_i686.exe | Bin 0 -> 443903 bytes .../fallbacks/windows/clipboard_x86_64.exe | Bin 0 -> 331438 bytes .../node_modules/clipboardy/index.js | 41 + .../node_modules/clipboardy/lib/linux.js | 48 + .../node_modules/clipboardy/lib/macos.js | 11 + .../node_modules/clipboardy/lib/termux.js | 29 + .../node_modules/clipboardy/lib/windows.js | 16 + .../node_modules/clipboardy/license | 9 + .../clipboardy/node_modules/execa/index.js | 314 + .../node_modules/execa/lib/errname.js | 37 + .../node_modules/execa/lib/stdio.js | 41 + .../clipboardy/node_modules/execa/license | 9 + .../node_modules/execa/package.json | 108 + .../clipboardy/node_modules/execa/readme.md | 279 + .../node_modules/clipboardy/package.json | 84 + .../node_modules/clipboardy/readme.md | 64 + .../node_modules/color-name/.eslintrc.json | 43 + .../node_modules/color-name/.npmignore | 107 + .../node_modules/color-name/LICENSE | 8 + .../node_modules/color-name/README.md | 11 + .../node_modules/color-name/index.js | 152 + .../node_modules/color-name/package.json | 53 + .../node_modules/color-name/test.js | 7 + .../node_modules/commander/CHANGELOG.md | 419 + .../node_modules/commander/LICENSE | 22 + .../node_modules/commander/Readme.md | 428 + .../node_modules/commander/index.js | 1224 ++ .../node_modules/commander/package.json | 70 + .../node_modules/commander/typings/index.d.ts | 310 + .../node_modules/compressible/HISTORY.md | 111 + .../node_modules/compressible/LICENSE | 24 + .../node_modules/compressible/README.md | 61 + .../node_modules/compressible/index.js | 58 + .../node_modules/compressible/package.json | 91 + .../node_modules/compression/HISTORY.md | 297 + .../node_modules/compression/LICENSE | 23 + .../node_modules/compression/README.md | 240 + .../node_modules/compression/index.js | 277 + .../node_modules/compression/package.json | 86 + .../node_modules/concat-map/.travis.yml | 4 + .../node_modules/concat-map/LICENSE | 18 + .../node_modules/concat-map/README.markdown | 62 + .../node_modules/concat-map/example/map.js | 6 + .../node_modules/concat-map/index.js | 13 + .../node_modules/concat-map/package.json | 88 + .../node_modules/concat-map/test/map.js | 39 + .../confusing-browser-globals/LICENSE | 21 + .../confusing-browser-globals/README.md | 45 + .../confusing-browser-globals/index.js | 69 + .../confusing-browser-globals/package.json | 55 + .../node_modules/contains-path/LICENSE | 21 + .../node_modules/contains-path/README.md | 83 + .../node_modules/contains-path/index.js | 33 + .../node_modules/contains-path/package.json | 86 + .../core-js-pure/features/README.md | 1 + .../core-js-pure/features/aggregate-error.js | 6 + .../features/array-buffer/constructor.js | 3 + .../features/array-buffer/index.js | 3 + .../features/array-buffer/is-view.js | 3 + .../features/array-buffer/slice.js | 3 + .../core-js-pure/features/array/concat.js | 3 + .../features/array/copy-within.js | 3 + .../core-js-pure/features/array/entries.js | 3 + .../core-js-pure/features/array/every.js | 3 + .../core-js-pure/features/array/fill.js | 3 + .../core-js-pure/features/array/filter.js | 3 + .../core-js-pure/features/array/find-index.js | 3 + .../core-js-pure/features/array/find.js | 3 + .../core-js-pure/features/array/flat-map.js | 3 + .../core-js-pure/features/array/flat.js | 3 + .../core-js-pure/features/array/for-each.js | 3 + .../core-js-pure/features/array/from.js | 3 + .../core-js-pure/features/array/includes.js | 3 + .../core-js-pure/features/array/index-of.js | 3 + .../core-js-pure/features/array/index.js | 6 + .../core-js-pure/features/array/is-array.js | 3 + .../features/array/is-template-object.js | 4 + .../core-js-pure/features/array/iterator.js | 3 + .../core-js-pure/features/array/join.js | 3 + .../core-js-pure/features/array/keys.js | 3 + .../features/array/last-index-of.js | 3 + .../core-js-pure/features/array/last-index.js | 1 + .../core-js-pure/features/array/last-item.js | 1 + .../core-js-pure/features/array/map.js | 3 + .../core-js-pure/features/array/of.js | 3 + .../features/array/reduce-right.js | 3 + .../core-js-pure/features/array/reduce.js | 3 + .../core-js-pure/features/array/reverse.js | 3 + .../core-js-pure/features/array/slice.js | 3 + .../core-js-pure/features/array/some.js | 3 + .../core-js-pure/features/array/sort.js | 3 + .../core-js-pure/features/array/splice.js | 3 + .../core-js-pure/features/array/values.js | 3 + .../features/array/virtual/concat.js | 3 + .../features/array/virtual/copy-within.js | 3 + .../features/array/virtual/entries.js | 3 + .../features/array/virtual/every.js | 3 + .../features/array/virtual/fill.js | 3 + .../features/array/virtual/filter.js | 3 + .../features/array/virtual/find-index.js | 3 + .../features/array/virtual/find.js | 3 + .../features/array/virtual/flat-map.js | 3 + .../features/array/virtual/flat.js | 3 + .../features/array/virtual/for-each.js | 3 + .../features/array/virtual/includes.js | 3 + .../features/array/virtual/index-of.js | 3 + .../features/array/virtual/index.js | 3 + .../features/array/virtual/iterator.js | 3 + .../features/array/virtual/join.js | 3 + .../features/array/virtual/keys.js | 3 + .../features/array/virtual/last-index-of.js | 3 + .../features/array/virtual/map.js | 3 + .../features/array/virtual/reduce-right.js | 3 + .../features/array/virtual/reduce.js | 3 + .../features/array/virtual/reverse.js | 3 + .../features/array/virtual/slice.js | 3 + .../features/array/virtual/some.js | 3 + .../features/array/virtual/sort.js | 3 + .../features/array/virtual/splice.js | 3 + .../features/array/virtual/values.js | 3 + .../async-iterator/as-indexed-pairs.js | 10 + .../features/async-iterator/drop.js | 10 + .../features/async-iterator/every.js | 10 + .../features/async-iterator/filter.js | 10 + .../features/async-iterator/find.js | 10 + .../features/async-iterator/flat-map.js | 10 + .../features/async-iterator/for-each.js | 10 + .../features/async-iterator/from.js | 10 + .../features/async-iterator/index.js | 22 + .../features/async-iterator/map.js | 10 + .../features/async-iterator/reduce.js | 10 + .../features/async-iterator/some.js | 10 + .../features/async-iterator/take.js | 10 + .../features/async-iterator/to-array.js | 10 + .../core-js-pure/features/clear-immediate.js | 3 + .../core-js-pure/features/composite-key.js | 4 + .../core-js-pure/features/composite-symbol.js | 5 + .../core-js-pure/features/data-view/index.js | 3 + .../core-js-pure/features/date/index.js | 3 + .../core-js-pure/features/date/now.js | 3 + .../features/date/to-iso-string.js | 3 + .../core-js-pure/features/date/to-json.js | 3 + .../features/date/to-primitive.js | 3 + .../core-js-pure/features/date/to-string.js | 3 + .../features/dom-collections/for-each.js | 3 + .../features/dom-collections/index.js | 3 + .../features/dom-collections/iterator.js | 3 + .../core-js-pure/features/function/bind.js | 3 + .../features/function/has-instance.js | 3 + .../core-js-pure/features/function/index.js | 3 + .../core-js-pure/features/function/name.js | 3 + .../features/function/virtual/bind.js | 3 + .../features/function/virtual/index.js | 3 + .../features/get-iterator-method.js | 5 + .../core-js-pure/features/get-iterator.js | 5 + .../core-js-pure/features/global-this.js | 6 + .../core-js-pure/features/index.js | 3 + .../core-js-pure/features/instance/at.js | 9 + .../core-js-pure/features/instance/bind.js | 3 + .../features/instance/code-point-at.js | 3 + .../features/instance/code-points.js | 9 + .../core-js-pure/features/instance/concat.js | 3 + .../features/instance/copy-within.js | 3 + .../features/instance/ends-with.js | 3 + .../core-js-pure/features/instance/entries.js | 3 + .../core-js-pure/features/instance/every.js | 3 + .../core-js-pure/features/instance/fill.js | 3 + .../core-js-pure/features/instance/filter.js | 3 + .../features/instance/find-index.js | 3 + .../core-js-pure/features/instance/find.js | 3 + .../core-js-pure/features/instance/flags.js | 3 + .../features/instance/flat-map.js | 3 + .../core-js-pure/features/instance/flat.js | 3 + .../features/instance/for-each.js | 3 + .../features/instance/includes.js | 3 + .../features/instance/index-of.js | 3 + .../core-js-pure/features/instance/keys.js | 3 + .../features/instance/last-index-of.js | 3 + .../core-js-pure/features/instance/map.js | 3 + .../features/instance/match-all.js | 6 + .../core-js-pure/features/instance/pad-end.js | 3 + .../features/instance/pad-start.js | 3 + .../features/instance/reduce-right.js | 3 + .../core-js-pure/features/instance/reduce.js | 3 + .../core-js-pure/features/instance/repeat.js | 3 + .../features/instance/replace-all.js | 9 + .../core-js-pure/features/instance/reverse.js | 3 + .../core-js-pure/features/instance/slice.js | 3 + .../core-js-pure/features/instance/some.js | 3 + .../core-js-pure/features/instance/sort.js | 3 + .../core-js-pure/features/instance/splice.js | 3 + .../features/instance/starts-with.js | 3 + .../features/instance/trim-end.js | 3 + .../features/instance/trim-left.js | 3 + .../features/instance/trim-right.js | 3 + .../features/instance/trim-start.js | 3 + .../core-js-pure/features/instance/trim.js | 3 + .../core-js-pure/features/instance/values.js | 3 + .../core-js-pure/features/is-iterable.js | 5 + .../features/iterator/as-indexed-pairs.js | 10 + .../core-js-pure/features/iterator/drop.js | 9 + .../core-js-pure/features/iterator/every.js | 9 + .../core-js-pure/features/iterator/filter.js | 9 + .../core-js-pure/features/iterator/find.js | 9 + .../features/iterator/flat-map.js | 9 + .../features/iterator/for-each.js | 9 + .../core-js-pure/features/iterator/from.js | 9 + .../core-js-pure/features/iterator/index.js | 21 + .../core-js-pure/features/iterator/map.js | 9 + .../core-js-pure/features/iterator/reduce.js | 9 + .../core-js-pure/features/iterator/some.js | 9 + .../core-js-pure/features/iterator/take.js | 9 + .../features/iterator/to-array.js | 9 + .../core-js-pure/features/json/index.js | 3 + .../core-js-pure/features/json/stringify.js | 3 + .../features/json/to-string-tag.js | 3 + .../core-js-pure/features/map/delete-all.js | 5 + .../core-js-pure/features/map/every.js | 5 + .../core-js-pure/features/map/filter.js | 5 + .../core-js-pure/features/map/find-key.js | 5 + .../core-js-pure/features/map/find.js | 5 + .../core-js-pure/features/map/from.js | 13 + .../core-js-pure/features/map/group-by.js | 11 + .../core-js-pure/features/map/includes.js | 5 + .../core-js-pure/features/map/index.js | 23 + .../core-js-pure/features/map/key-by.js | 11 + .../core-js-pure/features/map/key-of.js | 5 + .../core-js-pure/features/map/map-keys.js | 5 + .../core-js-pure/features/map/map-values.js | 5 + .../core-js-pure/features/map/merge.js | 5 + .../core-js-pure/features/map/of.js | 13 + .../core-js-pure/features/map/reduce.js | 5 + .../core-js-pure/features/map/some.js | 5 + .../features/map/update-or-insert.js | 6 + .../core-js-pure/features/map/update.js | 5 + .../core-js-pure/features/map/upsert.js | 5 + .../core-js-pure/features/math/acosh.js | 3 + .../core-js-pure/features/math/asinh.js | 3 + .../core-js-pure/features/math/atanh.js | 3 + .../core-js-pure/features/math/cbrt.js | 3 + .../core-js-pure/features/math/clamp.js | 4 + .../core-js-pure/features/math/clz32.js | 3 + .../core-js-pure/features/math/cosh.js | 3 + .../core-js-pure/features/math/deg-per-rad.js | 3 + .../core-js-pure/features/math/degrees.js | 4 + .../core-js-pure/features/math/expm1.js | 3 + .../core-js-pure/features/math/fround.js | 3 + .../core-js-pure/features/math/fscale.js | 4 + .../core-js-pure/features/math/hypot.js | 3 + .../core-js-pure/features/math/iaddh.js | 4 + .../core-js-pure/features/math/imul.js | 3 + .../core-js-pure/features/math/imulh.js | 4 + .../core-js-pure/features/math/index.js | 17 + .../core-js-pure/features/math/isubh.js | 4 + .../core-js-pure/features/math/log10.js | 3 + .../core-js-pure/features/math/log1p.js | 3 + .../core-js-pure/features/math/log2.js | 3 + .../core-js-pure/features/math/rad-per-deg.js | 3 + .../core-js-pure/features/math/radians.js | 4 + .../core-js-pure/features/math/scale.js | 4 + .../core-js-pure/features/math/seeded-prng.js | 4 + .../core-js-pure/features/math/sign.js | 3 + .../core-js-pure/features/math/signbit.js | 4 + .../core-js-pure/features/math/sinh.js | 3 + .../core-js-pure/features/math/tanh.js | 3 + .../features/math/to-string-tag.js | 3 + .../core-js-pure/features/math/trunc.js | 3 + .../core-js-pure/features/math/umulh.js | 4 + .../features/number/constructor.js | 3 + .../core-js-pure/features/number/epsilon.js | 3 + .../features/number/from-string.js | 4 + .../core-js-pure/features/number/index.js | 5 + .../core-js-pure/features/number/is-finite.js | 3 + .../features/number/is-integer.js | 3 + .../core-js-pure/features/number/is-nan.js | 3 + .../features/number/is-safe-integer.js | 3 + .../features/number/max-safe-integer.js | 3 + .../features/number/min-safe-integer.js | 3 + .../features/number/parse-float.js | 3 + .../core-js-pure/features/number/parse-int.js | 3 + .../core-js-pure/features/number/to-fixed.js | 3 + .../features/number/to-precision.js | 3 + .../features/number/virtual/index.js | 3 + .../features/number/virtual/to-fixed.js | 3 + .../features/number/virtual/to-precision.js | 3 + .../core-js-pure/features/object/assign.js | 3 + .../core-js-pure/features/object/create.js | 3 + .../features/object/define-getter.js | 3 + .../features/object/define-properties.js | 3 + .../features/object/define-property.js | 3 + .../features/object/define-setter.js | 3 + .../core-js-pure/features/object/entries.js | 3 + .../core-js-pure/features/object/freeze.js | 3 + .../features/object/from-entries.js | 3 + .../object/get-own-property-descriptor.js | 3 + .../object/get-own-property-descriptors.js | 3 + .../features/object/get-own-property-names.js | 3 + .../object/get-own-property-symbols.js | 3 + .../features/object/get-prototype-of.js | 3 + .../core-js-pure/features/object/index.js | 6 + .../features/object/is-extensible.js | 3 + .../core-js-pure/features/object/is-frozen.js | 3 + .../core-js-pure/features/object/is-sealed.js | 3 + .../core-js-pure/features/object/is.js | 3 + .../features/object/iterate-entries.js | 4 + .../features/object/iterate-keys.js | 4 + .../features/object/iterate-values.js | 4 + .../core-js-pure/features/object/keys.js | 3 + .../features/object/lookup-getter.js | 3 + .../features/object/lookup-setter.js | 3 + .../features/object/prevent-extensions.js | 3 + .../core-js-pure/features/object/seal.js | 3 + .../features/object/set-prototype-of.js | 3 + .../core-js-pure/features/object/to-string.js | 3 + .../core-js-pure/features/object/values.js | 3 + .../core-js-pure/features/observable/index.js | 8 + .../core-js-pure/features/parse-float.js | 3 + .../core-js-pure/features/parse-int.js | 3 + .../features/promise/all-settled.js | 6 + .../core-js-pure/features/promise/any.js | 12 + .../core-js-pure/features/promise/finally.js | 3 + .../core-js-pure/features/promise/index.js | 8 + .../core-js-pure/features/promise/try.js | 11 + .../core-js-pure/features/queue-microtask.js | 3 + .../core-js-pure/features/reflect/apply.js | 3 + .../features/reflect/construct.js | 3 + .../features/reflect/define-metadata.js | 4 + .../features/reflect/define-property.js | 3 + .../features/reflect/delete-metadata.js | 4 + .../features/reflect/delete-property.js | 3 + .../features/reflect/get-metadata-keys.js | 4 + .../features/reflect/get-metadata.js | 4 + .../features/reflect/get-own-metadata-keys.js | 4 + .../features/reflect/get-own-metadata.js | 4 + .../reflect/get-own-property-descriptor.js | 3 + .../features/reflect/get-prototype-of.js | 3 + .../core-js-pure/features/reflect/get.js | 3 + .../features/reflect/has-metadata.js | 4 + .../features/reflect/has-own-metadata.js | 4 + .../core-js-pure/features/reflect/has.js | 3 + .../core-js-pure/features/reflect/index.js | 12 + .../features/reflect/is-extensible.js | 3 + .../core-js-pure/features/reflect/metadata.js | 4 + .../core-js-pure/features/reflect/own-keys.js | 3 + .../features/reflect/prevent-extensions.js | 3 + .../features/reflect/set-prototype-of.js | 3 + .../core-js-pure/features/reflect/set.js | 3 + .../features/regexp/constructor.js | 3 + .../core-js-pure/features/regexp/flags.js | 3 + .../core-js-pure/features/regexp/index.js | 3 + .../core-js-pure/features/regexp/match.js | 3 + .../core-js-pure/features/regexp/replace.js | 3 + .../core-js-pure/features/regexp/search.js | 3 + .../core-js-pure/features/regexp/split.js | 3 + .../core-js-pure/features/regexp/sticky.js | 3 + .../core-js-pure/features/regexp/test.js | 3 + .../core-js-pure/features/regexp/to-string.js | 3 + .../core-js-pure/features/set-immediate.js | 3 + .../core-js-pure/features/set-interval.js | 3 + .../core-js-pure/features/set-timeout.js | 3 + .../core-js-pure/features/set/add-all.js | 5 + .../core-js-pure/features/set/delete-all.js | 5 + .../core-js-pure/features/set/difference.js | 7 + .../core-js-pure/features/set/every.js | 5 + .../core-js-pure/features/set/filter.js | 5 + .../core-js-pure/features/set/find.js | 5 + .../core-js-pure/features/set/from.js | 13 + .../core-js-pure/features/set/index.js | 21 + .../core-js-pure/features/set/intersection.js | 5 + .../features/set/is-disjoint-from.js | 5 + .../core-js-pure/features/set/is-subset-of.js | 7 + .../features/set/is-superset-of.js | 5 + .../core-js-pure/features/set/join.js | 5 + .../core-js-pure/features/set/map.js | 5 + .../core-js-pure/features/set/of.js | 13 + .../core-js-pure/features/set/reduce.js | 5 + .../core-js-pure/features/set/some.js | 5 + .../features/set/symmetric-difference.js | 7 + .../core-js-pure/features/set/union.js | 7 + .../core-js-pure/features/string/anchor.js | 3 + .../core-js-pure/features/string/at.js | 4 + .../core-js-pure/features/string/big.js | 3 + .../core-js-pure/features/string/blink.js | 3 + .../core-js-pure/features/string/bold.js | 3 + .../features/string/code-point-at.js | 3 + .../features/string/code-points.js | 3 + .../core-js-pure/features/string/ends-with.js | 3 + .../core-js-pure/features/string/fixed.js | 3 + .../core-js-pure/features/string/fontcolor.js | 3 + .../core-js-pure/features/string/fontsize.js | 3 + .../features/string/from-code-point.js | 3 + .../core-js-pure/features/string/includes.js | 3 + .../core-js-pure/features/string/index.js | 8 + .../core-js-pure/features/string/italics.js | 3 + .../core-js-pure/features/string/iterator.js | 3 + .../core-js-pure/features/string/link.js | 3 + .../core-js-pure/features/string/match-all.js | 6 + .../core-js-pure/features/string/match.js | 3 + .../core-js-pure/features/string/pad-end.js | 3 + .../core-js-pure/features/string/pad-start.js | 3 + .../core-js-pure/features/string/raw.js | 3 + .../core-js-pure/features/string/repeat.js | 3 + .../features/string/replace-all.js | 4 + .../core-js-pure/features/string/replace.js | 3 + .../core-js-pure/features/string/search.js | 3 + .../core-js-pure/features/string/small.js | 3 + .../core-js-pure/features/string/split.js | 3 + .../features/string/starts-with.js | 3 + .../core-js-pure/features/string/strike.js | 3 + .../core-js-pure/features/string/sub.js | 3 + .../core-js-pure/features/string/sup.js | 3 + .../core-js-pure/features/string/trim-end.js | 3 + .../core-js-pure/features/string/trim-left.js | 3 + .../features/string/trim-right.js | 3 + .../features/string/trim-start.js | 3 + .../core-js-pure/features/string/trim.js | 3 + .../features/string/virtual/anchor.js | 3 + .../features/string/virtual/at.js | 4 + .../features/string/virtual/big.js | 3 + .../features/string/virtual/blink.js | 3 + .../features/string/virtual/bold.js | 3 + .../features/string/virtual/code-point-at.js | 3 + .../features/string/virtual/code-points.js | 3 + .../features/string/virtual/ends-with.js | 3 + .../features/string/virtual/fixed.js | 3 + .../features/string/virtual/fontcolor.js | 3 + .../features/string/virtual/fontsize.js | 3 + .../features/string/virtual/includes.js | 3 + .../features/string/virtual/index.js | 8 + .../features/string/virtual/italics.js | 3 + .../features/string/virtual/iterator.js | 3 + .../features/string/virtual/link.js | 3 + .../features/string/virtual/match-all.js | 6 + .../features/string/virtual/pad-end.js | 3 + .../features/string/virtual/pad-start.js | 3 + .../features/string/virtual/repeat.js | 3 + .../features/string/virtual/replace-all.js | 4 + .../features/string/virtual/small.js | 3 + .../features/string/virtual/starts-with.js | 3 + .../features/string/virtual/strike.js | 3 + .../features/string/virtual/sub.js | 3 + .../features/string/virtual/sup.js | 3 + .../features/string/virtual/trim-end.js | 3 + .../features/string/virtual/trim-left.js | 3 + .../features/string/virtual/trim-right.js | 3 + .../features/string/virtual/trim-start.js | 3 + .../features/string/virtual/trim.js | 3 + .../features/symbol/async-dispose.js | 4 + .../features/symbol/async-iterator.js | 3 + .../features/symbol/description.js | 1 + .../core-js-pure/features/symbol/dispose.js | 4 + .../core-js-pure/features/symbol/for.js | 3 + .../features/symbol/has-instance.js | 3 + .../core-js-pure/features/symbol/index.js | 9 + .../features/symbol/is-concat-spreadable.js | 3 + .../core-js-pure/features/symbol/iterator.js | 3 + .../core-js-pure/features/symbol/key-for.js | 3 + .../core-js-pure/features/symbol/match-all.js | 3 + .../core-js-pure/features/symbol/match.js | 3 + .../features/symbol/observable.js | 4 + .../features/symbol/pattern-match.js | 4 + .../features/symbol/replace-all.js | 5 + .../core-js-pure/features/symbol/replace.js | 3 + .../core-js-pure/features/symbol/search.js | 3 + .../core-js-pure/features/symbol/species.js | 3 + .../core-js-pure/features/symbol/split.js | 3 + .../features/symbol/to-primitive.js | 3 + .../features/symbol/to-string-tag.js | 3 + .../features/symbol/unscopables.js | 3 + .../features/typed-array/copy-within.js | 1 + .../features/typed-array/entries.js | 1 + .../features/typed-array/every.js | 1 + .../core-js-pure/features/typed-array/fill.js | 1 + .../features/typed-array/filter.js | 1 + .../features/typed-array/find-index.js | 1 + .../core-js-pure/features/typed-array/find.js | 1 + .../features/typed-array/float32-array.js | 3 + .../features/typed-array/float64-array.js | 3 + .../features/typed-array/for-each.js | 1 + .../core-js-pure/features/typed-array/from.js | 1 + .../features/typed-array/includes.js | 1 + .../features/typed-array/index-of.js | 1 + .../features/typed-array/index.js | 3 + .../features/typed-array/int16-array.js | 3 + .../features/typed-array/int32-array.js | 3 + .../features/typed-array/int8-array.js | 3 + .../features/typed-array/iterator.js | 1 + .../core-js-pure/features/typed-array/join.js | 1 + .../core-js-pure/features/typed-array/keys.js | 1 + .../features/typed-array/last-index-of.js | 1 + .../core-js-pure/features/typed-array/map.js | 1 + .../core-js-pure/features/typed-array/of.js | 1 + .../features/typed-array/reduce-right.js | 1 + .../features/typed-array/reduce.js | 1 + .../features/typed-array/reverse.js | 1 + .../core-js-pure/features/typed-array/set.js | 1 + .../features/typed-array/slice.js | 1 + .../core-js-pure/features/typed-array/some.js | 1 + .../core-js-pure/features/typed-array/sort.js | 1 + .../features/typed-array/subarray.js | 1 + .../features/typed-array/to-locale-string.js | 1 + .../features/typed-array/to-string.js | 1 + .../features/typed-array/uint16-array.js | 3 + .../features/typed-array/uint32-array.js | 3 + .../features/typed-array/uint8-array.js | 3 + .../typed-array/uint8-clamped-array.js | 3 + .../features/typed-array/values.js | 1 + .../features/url-search-params/index.js | 3 + .../core-js-pure/features/url/index.js | 3 + .../core-js-pure/features/url/to-json.js | 3 + .../features/weak-map/delete-all.js | 5 + .../core-js-pure/features/weak-map/from.js | 13 + .../core-js-pure/features/weak-map/index.js | 7 + .../core-js-pure/features/weak-map/of.js | 13 + .../core-js-pure/features/weak-map/upsert.js | 5 + .../core-js-pure/features/weak-set/add-all.js | 5 + .../features/weak-set/delete-all.js | 5 + .../core-js-pure/features/weak-set/from.js | 13 + .../core-js-pure/features/weak-set/index.js | 7 + .../core-js-pure/features/weak-set/of.js | 13 + .../core-js-pure/modules/README.md | 1 + .../modules/es.array-buffer.constructor.js | 1 + .../modules/es.array-buffer.is-view.js | 1 + .../modules/es.array-buffer.slice.js | 1 + .../core-js-pure/modules/es.array.concat.js | 60 + .../modules/es.array.copy-within.js | 12 + .../core-js-pure/modules/es.array.every.js | 16 + .../core-js-pure/modules/es.array.fill.js | 12 + .../core-js-pure/modules/es.array.filter.js | 18 + .../modules/es.array.find-index.js | 24 + .../core-js-pure/modules/es.array.find.js | 24 + .../core-js-pure/modules/es.array.flat-map.js | 21 + .../core-js-pure/modules/es.array.flat.js | 20 + .../core-js-pure/modules/es.array.for-each.js | 9 + .../core-js-pure/modules/es.array.from.js | 13 + .../core-js-pure/modules/es.array.includes.js | 18 + .../core-js-pure/modules/es.array.index-of.js | 22 + .../core-js-pure/modules/es.array.is-array.js | 8 + .../core-js-pure/modules/es.array.iterator.js | 53 + .../core-js-pure/modules/es.array.join.js | 18 + .../modules/es.array.last-index-of.js | 8 + .../core-js-pure/modules/es.array.map.js | 18 + .../core-js-pure/modules/es.array.of.js | 23 + .../modules/es.array.reduce-right.js | 17 + .../core-js-pure/modules/es.array.reduce.js | 16 + .../core-js-pure/modules/es.array.reverse.js | 18 + .../core-js-pure/modules/es.array.slice.js | 49 + .../core-js-pure/modules/es.array.some.js | 16 + .../core-js-pure/modules/es.array.sort.js | 32 + .../core-js-pure/modules/es.array.species.js | 5 + .../core-js-pure/modules/es.array.splice.js | 70 + .../modules/es.array.unscopables.flat-map.js | 5 + .../modules/es.array.unscopables.flat.js | 5 + .../core-js-pure/modules/es.data-view.js | 1 + .../core-js-pure/modules/es.date.now.js | 9 + .../modules/es.date.to-iso-string.js | 9 + .../core-js-pure/modules/es.date.to-json.js | 22 + .../modules/es.date.to-primitive.js | 1 + .../core-js-pure/modules/es.date.to-string.js | 1 + .../core-js-pure/modules/es.function.bind.js | 8 + .../modules/es.function.has-instance.js | 20 + .../core-js-pure/modules/es.function.name.js | 1 + .../core-js-pure/modules/es.global-this.js | 8 + .../core-js-pure/modules/es.json.stringify.js | 32 + .../modules/es.json.to-string-tag.js | 6 + .../core-js-pure/modules/es.map.js | 9 + .../core-js-pure/modules/es.math.acosh.js | 23 + .../core-js-pure/modules/es.math.asinh.js | 16 + .../core-js-pure/modules/es.math.atanh.js | 13 + .../core-js-pure/modules/es.math.cbrt.js | 13 + .../core-js-pure/modules/es.math.clz32.js | 13 + .../core-js-pure/modules/es.math.cosh.js | 15 + .../core-js-pure/modules/es.math.expm1.js | 6 + .../core-js-pure/modules/es.math.fround.js | 6 + .../core-js-pure/modules/es.math.hypot.js | 33 + .../core-js-pure/modules/es.math.imul.js | 22 + .../core-js-pure/modules/es.math.log10.js | 12 + .../core-js-pure/modules/es.math.log1p.js | 6 + .../core-js-pure/modules/es.math.log2.js | 12 + .../core-js-pure/modules/es.math.sign.js | 8 + .../core-js-pure/modules/es.math.sinh.js | 20 + .../core-js-pure/modules/es.math.tanh.js | 14 + .../modules/es.math.to-string-tag.js | 5 + .../core-js-pure/modules/es.math.trunc.js | 12 + .../modules/es.number.constructor.js | 1 + .../core-js-pure/modules/es.number.epsilon.js | 7 + .../modules/es.number.is-finite.js | 6 + .../modules/es.number.is-integer.js | 8 + .../core-js-pure/modules/es.number.is-nan.js | 10 + .../modules/es.number.is-safe-integer.js | 12 + .../modules/es.number.max-safe-integer.js | 7 + .../modules/es.number.min-safe-integer.js | 7 + .../modules/es.number.parse-float.js | 8 + .../modules/es.number.parse-int.js | 8 + .../modules/es.number.to-fixed.js | 126 + .../modules/es.number.to-precision.js | 24 + .../core-js-pure/modules/es.object.assign.js | 8 + .../core-js-pure/modules/es.object.create.js | 9 + .../modules/es.object.define-getter.js | 17 + .../modules/es.object.define-properties.js | 9 + .../modules/es.object.define-property.js | 9 + .../modules/es.object.define-setter.js | 17 + .../core-js-pure/modules/es.object.entries.js | 10 + .../core-js-pure/modules/es.object.freeze.js | 16 + .../modules/es.object.from-entries.js | 15 + .../es.object.get-own-property-descriptor.js | 16 + .../es.object.get-own-property-descriptors.js | 24 + .../es.object.get-own-property-names.js | 11 + .../modules/es.object.get-prototype-of.js | 16 + .../modules/es.object.is-extensible.js | 14 + .../modules/es.object.is-frozen.js | 14 + .../modules/es.object.is-sealed.js | 14 + .../core-js-pure/modules/es.object.is.js | 8 + .../core-js-pure/modules/es.object.keys.js | 14 + .../modules/es.object.lookup-getter.js | 23 + .../modules/es.object.lookup-setter.js | 23 + .../modules/es.object.prevent-extensions.js | 16 + .../core-js-pure/modules/es.object.seal.js | 16 + .../modules/es.object.set-prototype-of.js | 8 + .../modules/es.object.to-string.js | 1 + .../core-js-pure/modules/es.object.values.js | 10 + .../core-js-pure/modules/es.parse-float.js | 8 + .../core-js-pure/modules/es.parse-int.js | 8 + .../modules/es.promise.all-settled.js | 43 + .../modules/es.promise.finally.js | 36 + .../core-js-pure/modules/es.promise.js | 379 + .../core-js-pure/modules/es.reflect.apply.js | 25 + .../modules/es.reflect.construct.js | 51 + .../modules/es.reflect.define-property.js | 28 + .../modules/es.reflect.delete-property.js | 12 + .../es.reflect.get-own-property-descriptor.js | 12 + .../modules/es.reflect.get-prototype-of.js | 12 + .../core-js-pure/modules/es.reflect.get.js | 24 + .../core-js-pure/modules/es.reflect.has.js | 9 + .../modules/es.reflect.is-extensible.js | 13 + .../modules/es.reflect.own-keys.js | 8 + .../modules/es.reflect.prevent-extensions.js | 19 + .../modules/es.reflect.set-prototype-of.js | 19 + .../core-js-pure/modules/es.reflect.set.js | 45 + .../modules/es.regexp.constructor.js | 3 + .../core-js-pure/modules/es.regexp.exec.js | 1 + .../core-js-pure/modules/es.regexp.flags.js | 1 + .../core-js-pure/modules/es.regexp.sticky.js | 1 + .../core-js-pure/modules/es.regexp.test.js | 1 + .../modules/es.regexp.to-string.js | 1 + .../core-js-pure/modules/es.set.js | 9 + .../core-js-pure/modules/es.string.anchor.js | 12 + .../core-js-pure/modules/es.string.big.js | 12 + .../core-js-pure/modules/es.string.blink.js | 12 + .../core-js-pure/modules/es.string.bold.js | 12 + .../modules/es.string.code-point-at.js | 11 + .../modules/es.string.ends-with.js | 34 + .../core-js-pure/modules/es.string.fixed.js | 12 + .../modules/es.string.fontcolor.js | 12 + .../modules/es.string.fontsize.js | 12 + .../modules/es.string.from-code-point.js | 27 + .../modules/es.string.includes.js | 14 + .../core-js-pure/modules/es.string.italics.js | 12 + .../modules/es.string.iterator.js | 29 + .../core-js-pure/modules/es.string.link.js | 12 + .../modules/es.string.match-all.js | 109 + .../core-js-pure/modules/es.string.match.js | 1 + .../core-js-pure/modules/es.string.pad-end.js | 12 + .../modules/es.string.pad-start.js | 12 + .../core-js-pure/modules/es.string.raw.js | 19 + .../core-js-pure/modules/es.string.repeat.js | 8 + .../core-js-pure/modules/es.string.replace.js | 1 + .../core-js-pure/modules/es.string.search.js | 1 + .../core-js-pure/modules/es.string.small.js | 12 + .../core-js-pure/modules/es.string.split.js | 1 + .../modules/es.string.starts-with.js | 32 + .../core-js-pure/modules/es.string.strike.js | 12 + .../core-js-pure/modules/es.string.sub.js | 12 + .../core-js-pure/modules/es.string.sup.js | 12 + .../modules/es.string.trim-end.js | 17 + .../modules/es.string.trim-start.js | 17 + .../core-js-pure/modules/es.string.trim.js | 12 + .../modules/es.symbol.async-iterator.js | 5 + .../modules/es.symbol.description.js | 1 + .../modules/es.symbol.has-instance.js | 5 + .../modules/es.symbol.is-concat-spreadable.js | 5 + .../modules/es.symbol.iterator.js | 5 + .../core-js-pure/modules/es.symbol.js | 311 + .../modules/es.symbol.match-all.js | 4 + .../core-js-pure/modules/es.symbol.match.js | 5 + .../core-js-pure/modules/es.symbol.replace.js | 5 + .../core-js-pure/modules/es.symbol.search.js | 5 + .../core-js-pure/modules/es.symbol.species.js | 5 + .../core-js-pure/modules/es.symbol.split.js | 5 + .../modules/es.symbol.to-primitive.js | 5 + .../modules/es.symbol.to-string-tag.js | 5 + .../modules/es.symbol.unscopables.js | 5 + .../modules/es.typed-array.copy-within.js | 1 + .../modules/es.typed-array.every.js | 1 + .../modules/es.typed-array.fill.js | 1 + .../modules/es.typed-array.filter.js | 1 + .../modules/es.typed-array.find-index.js | 1 + .../modules/es.typed-array.find.js | 1 + .../modules/es.typed-array.float32-array.js | 1 + .../modules/es.typed-array.float64-array.js | 1 + .../modules/es.typed-array.for-each.js | 1 + .../modules/es.typed-array.from.js | 1 + .../modules/es.typed-array.includes.js | 1 + .../modules/es.typed-array.index-of.js | 1 + .../modules/es.typed-array.int16-array.js | 1 + .../modules/es.typed-array.int32-array.js | 1 + .../modules/es.typed-array.int8-array.js | 1 + .../modules/es.typed-array.iterator.js | 1 + .../modules/es.typed-array.join.js | 1 + .../modules/es.typed-array.last-index-of.js | 1 + .../modules/es.typed-array.map.js | 1 + .../core-js-pure/modules/es.typed-array.of.js | 1 + .../modules/es.typed-array.reduce-right.js | 1 + .../modules/es.typed-array.reduce.js | 1 + .../modules/es.typed-array.reverse.js | 1 + .../modules/es.typed-array.set.js | 1 + .../modules/es.typed-array.slice.js | 1 + .../modules/es.typed-array.some.js | 1 + .../modules/es.typed-array.sort.js | 1 + .../modules/es.typed-array.subarray.js | 1 + .../es.typed-array.to-locale-string.js | 1 + .../modules/es.typed-array.to-string.js | 1 + .../modules/es.typed-array.uint16-array.js | 1 + .../modules/es.typed-array.uint32-array.js | 1 + .../modules/es.typed-array.uint8-array.js | 1 + .../es.typed-array.uint8-clamped-array.js | 1 + .../core-js-pure/modules/es.weak-map.js | 67 + .../core-js-pure/modules/es.weak-set.js | 9 + .../modules/esnext.aggregate-error.js | 45 + .../esnext.array.is-template-object.js | 28 + .../modules/esnext.array.last-index.js | 1 + .../modules/esnext.array.last-item.js | 1 + .../esnext.async-iterator.as-indexed-pairs.js | 27 + .../esnext.async-iterator.constructor.js | 29 + .../modules/esnext.async-iterator.drop.js | 41 + .../modules/esnext.async-iterator.every.js | 10 + .../modules/esnext.async-iterator.filter.js | 42 + .../modules/esnext.async-iterator.find.js | 10 + .../modules/esnext.async-iterator.flat-map.js | 67 + .../modules/esnext.async-iterator.for-each.js | 10 + .../modules/esnext.async-iterator.from.js | 30 + .../modules/esnext.async-iterator.map.js | 30 + .../modules/esnext.async-iterator.reduce.js | 46 + .../modules/esnext.async-iterator.some.js | 10 + .../modules/esnext.async-iterator.take.js | 22 + .../modules/esnext.async-iterator.to-array.js | 10 + .../modules/esnext.composite-key.js | 16 + .../modules/esnext.composite-symbol.js | 11 + .../modules/esnext.global-this.js | 2 + .../esnext.iterator.as-indexed-pairs.js | 20 + .../modules/esnext.iterator.constructor.js | 48 + .../modules/esnext.iterator.drop.js | 30 + .../modules/esnext.iterator.every.js | 16 + .../modules/esnext.iterator.filter.js | 30 + .../modules/esnext.iterator.find.js | 16 + .../modules/esnext.iterator.flat-map.js | 46 + .../modules/esnext.iterator.for-each.js | 11 + .../modules/esnext.iterator.from.js | 32 + .../modules/esnext.iterator.map.js | 23 + .../modules/esnext.iterator.reduce.js | 25 + .../modules/esnext.iterator.some.js | 16 + .../modules/esnext.iterator.take.js | 25 + .../modules/esnext.iterator.to-array.js | 15 + .../modules/esnext.map.delete-all.js | 12 + .../core-js-pure/modules/esnext.map.every.js | 20 + .../core-js-pure/modules/esnext.map.filter.js | 26 + .../modules/esnext.map.find-key.js | 20 + .../core-js-pure/modules/esnext.map.find.js | 20 + .../core-js-pure/modules/esnext.map.from.js | 8 + .../modules/esnext.map.group-by.js | 22 + .../modules/esnext.map.includes.js | 17 + .../core-js-pure/modules/esnext.map.key-by.js | 18 + .../core-js-pure/modules/esnext.map.key-of.js | 16 + .../modules/esnext.map.map-keys.js | 26 + .../modules/esnext.map.map-values.js | 26 + .../core-js-pure/modules/esnext.map.merge.js | 21 + .../core-js-pure/modules/esnext.map.of.js | 8 + .../core-js-pure/modules/esnext.map.reduce.js | 29 + .../core-js-pure/modules/esnext.map.some.js | 20 + .../modules/esnext.map.update-or-insert.js | 11 + .../core-js-pure/modules/esnext.map.update.js | 22 + .../core-js-pure/modules/esnext.map.upsert.js | 10 + .../core-js-pure/modules/esnext.math.clamp.js | 12 + .../modules/esnext.math.deg-per-rad.js | 7 + .../modules/esnext.math.degrees.js | 11 + .../modules/esnext.math.fscale.js | 12 + .../core-js-pure/modules/esnext.math.iaddh.js | 13 + .../core-js-pure/modules/esnext.math.imulh.js | 18 + .../core-js-pure/modules/esnext.math.isubh.js | 13 + .../modules/esnext.math.rad-per-deg.js | 7 + .../modules/esnext.math.radians.js | 11 + .../core-js-pure/modules/esnext.math.scale.js | 8 + .../modules/esnext.math.seeded-prng.js | 33 + .../modules/esnext.math.signbit.js | 9 + .../core-js-pure/modules/esnext.math.umulh.js | 18 + .../modules/esnext.number.from-string.js | 30 + .../modules/esnext.object.iterate-entries.js | 11 + .../modules/esnext.object.iterate-keys.js | 11 + .../modules/esnext.object.iterate-values.js | 11 + .../core-js-pure/modules/esnext.observable.js | 207 + .../modules/esnext.promise.all-settled.js | 2 + .../modules/esnext.promise.any.js | 46 + .../modules/esnext.promise.try.js | 15 + .../modules/esnext.reflect.define-metadata.js | 15 + .../modules/esnext.reflect.delete-metadata.js | 21 + .../esnext.reflect.get-metadata-keys.js | 33 + .../modules/esnext.reflect.get-metadata.js | 24 + .../esnext.reflect.get-own-metadata-keys.js | 15 + .../esnext.reflect.get-own-metadata.js | 15 + .../modules/esnext.reflect.has-metadata.js | 23 + .../esnext.reflect.has-own-metadata.js | 15 + .../modules/esnext.reflect.metadata.js | 16 + .../modules/esnext.set.add-all.js | 12 + .../modules/esnext.set.delete-all.js | 12 + .../modules/esnext.set.difference.js | 22 + .../core-js-pure/modules/esnext.set.every.js | 20 + .../core-js-pure/modules/esnext.set.filter.js | 26 + .../core-js-pure/modules/esnext.set.find.js | 20 + .../core-js-pure/modules/esnext.set.from.js | 8 + .../modules/esnext.set.intersection.js | 23 + .../modules/esnext.set.is-disjoint-from.js | 18 + .../modules/esnext.set.is-subset-of.js | 25 + .../modules/esnext.set.is-superset-of.js | 18 + .../core-js-pure/modules/esnext.set.join.js | 19 + .../core-js-pure/modules/esnext.set.map.js | 26 + .../core-js-pure/modules/esnext.set.of.js | 8 + .../core-js-pure/modules/esnext.set.reduce.js | 29 + .../core-js-pure/modules/esnext.set.some.js | 20 + .../esnext.set.symmetric-difference.js | 23 + .../core-js-pure/modules/esnext.set.union.js | 19 + .../core-js-pure/modules/esnext.string.at.js | 11 + .../modules/esnext.string.code-points.js | 38 + .../modules/esnext.string.match-all.js | 2 + .../modules/esnext.string.replace-all.js | 50 + .../modules/esnext.symbol.async-dispose.js | 5 + .../modules/esnext.symbol.dispose.js | 5 + .../modules/esnext.symbol.observable.js | 5 + .../modules/esnext.symbol.pattern-match.js | 5 + .../modules/esnext.symbol.replace-all.js | 4 + .../modules/esnext.weak-map.delete-all.js | 12 + .../modules/esnext.weak-map.from.js | 8 + .../modules/esnext.weak-map.of.js | 8 + .../modules/esnext.weak-map.upsert.js | 10 + .../modules/esnext.weak-set.add-all.js | 12 + .../modules/esnext.weak-set.delete-all.js | 12 + .../modules/esnext.weak-set.from.js | 8 + .../modules/esnext.weak-set.of.js | 8 + .../modules/web.dom-collections.for-each.js | 1 + .../modules/web.dom-collections.iterator.js | 18 + .../core-js-pure/modules/web.immediate.js | 15 + .../modules/web.queue-microtask.js | 16 + .../core-js-pure/modules/web.timers.js | 28 + .../modules/web.url-search-params.js | 347 + .../core-js-pure/modules/web.url.js | 1007 ++ .../core-js-pure/modules/web.url.to-json.js | 1 + .../node_modules/core-js-pure/package.json | 86 + .../core-js-pure/stable/README.md | 1 + .../stable/array-buffer/constructor.js | 3 + .../core-js-pure/stable/array-buffer/index.js | 3 + .../stable/array-buffer/is-view.js | 3 + .../core-js-pure/stable/array-buffer/slice.js | 3 + .../core-js-pure/stable/array/concat.js | 3 + .../core-js-pure/stable/array/copy-within.js | 3 + .../core-js-pure/stable/array/entries.js | 3 + .../core-js-pure/stable/array/every.js | 3 + .../core-js-pure/stable/array/fill.js | 3 + .../core-js-pure/stable/array/filter.js | 3 + .../core-js-pure/stable/array/find-index.js | 3 + .../core-js-pure/stable/array/find.js | 3 + .../core-js-pure/stable/array/flat-map.js | 3 + .../core-js-pure/stable/array/flat.js | 3 + .../core-js-pure/stable/array/for-each.js | 3 + .../core-js-pure/stable/array/from.js | 3 + .../core-js-pure/stable/array/includes.js | 3 + .../core-js-pure/stable/array/index-of.js | 3 + .../core-js-pure/stable/array/index.js | 3 + .../core-js-pure/stable/array/is-array.js | 3 + .../core-js-pure/stable/array/iterator.js | 3 + .../core-js-pure/stable/array/join.js | 3 + .../core-js-pure/stable/array/keys.js | 3 + .../stable/array/last-index-of.js | 3 + .../core-js-pure/stable/array/map.js | 3 + .../core-js-pure/stable/array/of.js | 3 + .../core-js-pure/stable/array/reduce-right.js | 3 + .../core-js-pure/stable/array/reduce.js | 3 + .../core-js-pure/stable/array/reverse.js | 3 + .../core-js-pure/stable/array/slice.js | 3 + .../core-js-pure/stable/array/some.js | 3 + .../core-js-pure/stable/array/sort.js | 3 + .../core-js-pure/stable/array/splice.js | 3 + .../core-js-pure/stable/array/values.js | 3 + .../stable/array/virtual/concat.js | 3 + .../stable/array/virtual/copy-within.js | 3 + .../stable/array/virtual/entries.js | 3 + .../stable/array/virtual/every.js | 3 + .../core-js-pure/stable/array/virtual/fill.js | 3 + .../stable/array/virtual/filter.js | 3 + .../stable/array/virtual/find-index.js | 3 + .../core-js-pure/stable/array/virtual/find.js | 3 + .../stable/array/virtual/flat-map.js | 3 + .../core-js-pure/stable/array/virtual/flat.js | 3 + .../stable/array/virtual/for-each.js | 3 + .../stable/array/virtual/includes.js | 3 + .../stable/array/virtual/index-of.js | 3 + .../stable/array/virtual/index.js | 3 + .../stable/array/virtual/iterator.js | 3 + .../core-js-pure/stable/array/virtual/join.js | 3 + .../core-js-pure/stable/array/virtual/keys.js | 3 + .../stable/array/virtual/last-index-of.js | 3 + .../core-js-pure/stable/array/virtual/map.js | 3 + .../stable/array/virtual/reduce-right.js | 3 + .../stable/array/virtual/reduce.js | 3 + .../stable/array/virtual/reverse.js | 3 + .../stable/array/virtual/slice.js | 3 + .../core-js-pure/stable/array/virtual/some.js | 3 + .../core-js-pure/stable/array/virtual/sort.js | 3 + .../stable/array/virtual/splice.js | 3 + .../stable/array/virtual/values.js | 3 + .../core-js-pure/stable/clear-immediate.js | 4 + .../core-js-pure/stable/data-view/index.js | 3 + .../stable/dom-collections/for-each.js | 5 + .../stable/dom-collections/index.js | 12 + .../stable/dom-collections/iterator.js | 4 + .../core-js-pure/stable/function/bind.js | 3 + .../stable/function/has-instance.js | 3 + .../core-js-pure/stable/function/index.js | 3 + .../core-js-pure/stable/function/name.js | 3 + .../stable/function/virtual/bind.js | 3 + .../stable/function/virtual/index.js | 3 + .../node_modules/core-js-pure/stable/index.js | 5 + .../core-js-pure/stable/json/index.js | 3 + .../core-js-pure/stable/json/stringify.js | 3 + .../core-js-pure/stable/json/to-string-tag.js | 3 + .../core-js-pure/stable/map/index.js | 3 + .../core-js-pure/stable/number/constructor.js | 3 + .../core-js-pure/stable/number/epsilon.js | 3 + .../core-js-pure/stable/number/index.js | 3 + .../core-js-pure/stable/number/is-finite.js | 3 + .../core-js-pure/stable/number/is-integer.js | 3 + .../core-js-pure/stable/number/is-nan.js | 3 + .../stable/number/is-safe-integer.js | 3 + .../stable/number/max-safe-integer.js | 3 + .../stable/number/min-safe-integer.js | 3 + .../core-js-pure/stable/number/parse-float.js | 3 + .../core-js-pure/stable/number/parse-int.js | 3 + .../core-js-pure/stable/number/to-fixed.js | 3 + .../stable/number/to-precision.js | 3 + .../stable/number/virtual/index.js | 3 + .../stable/number/virtual/to-fixed.js | 3 + .../stable/number/virtual/to-precision.js | 3 + .../core-js-pure/stable/parse-float.js | 3 + .../core-js-pure/stable/queue-microtask.js | 3 + .../core-js-pure/stable/regexp/constructor.js | 3 + .../core-js-pure/stable/regexp/flags.js | 3 + .../core-js-pure/stable/regexp/index.js | 3 + .../core-js-pure/stable/regexp/match.js | 3 + .../core-js-pure/stable/regexp/replace.js | 3 + .../core-js-pure/stable/regexp/search.js | 3 + .../core-js-pure/stable/regexp/split.js | 3 + .../core-js-pure/stable/regexp/sticky.js | 3 + .../core-js-pure/stable/regexp/test.js | 3 + .../core-js-pure/stable/regexp/to-string.js | 3 + .../core-js-pure/stable/set-interval.js | 4 + .../stable/symbol/async-iterator.js | 3 + .../core-js-pure/stable/symbol/description.js | 1 + .../core-js-pure/stable/symbol/for.js | 3 + .../stable/symbol/has-instance.js | 3 + .../core-js-pure/stable/symbol/index.js | 3 + .../stable/symbol/is-concat-spreadable.js | 3 + .../core-js-pure/stable/symbol/iterator.js | 3 + .../core-js-pure/stable/symbol/key-for.js | 3 + .../core-js-pure/stable/symbol/match-all.js | 3 + .../core-js-pure/stable/symbol/match.js | 3 + .../core-js-pure/stable/symbol/replace.js | 3 + .../core-js-pure/stable/symbol/search.js | 3 + .../core-js-pure/stable/symbol/species.js | 3 + .../core-js-pure/stable/symbol/split.js | 3 + .../stable/symbol/to-primitive.js | 3 + .../stable/symbol/to-string-tag.js | 3 + .../core-js-pure/stable/symbol/unscopables.js | 3 + .../stable/typed-array/entries.js | 1 + .../core-js-pure/stable/typed-array/every.js | 1 + .../core-js-pure/stable/typed-array/fill.js | 1 + .../core-js-pure/stable/typed-array/filter.js | 1 + .../stable/typed-array/find-index.js | 1 + .../core-js-pure/stable/typed-array/find.js | 1 + .../stable/typed-array/float64-array.js | 3 + .../stable/typed-array/for-each.js | 1 + .../core-js-pure/stable/typed-array/from.js | 1 + .../stable/typed-array/includes.js | 1 + .../stable/typed-array/index-of.js | 1 + .../core-js-pure/stable/typed-array/index.js | 3 + .../stable/typed-array/int16-array.js | 3 + .../stable/typed-array/int32-array.js | 3 + .../core-js-pure/stable/typed-array/join.js | 1 + .../stable/typed-array/last-index-of.js | 1 + .../core-js-pure/stable/typed-array/map.js | 1 + .../core-js-pure/stable/typed-array/of.js | 1 + .../stable/typed-array/reduce-right.js | 1 + .../core-js-pure/stable/typed-array/reduce.js | 1 + .../stable/typed-array/reverse.js | 1 + .../core-js-pure/stable/typed-array/set.js | 1 + .../core-js-pure/stable/typed-array/some.js | 1 + .../core-js-pure/stable/typed-array/sort.js | 1 + .../stable/typed-array/to-locale-string.js | 1 + .../stable/typed-array/to-string.js | 1 + .../stable/typed-array/uint16-array.js | 3 + .../stable/typed-array/uint8-array.js | 3 + .../stable/typed-array/uint8-clamped-array.js | 3 + .../core-js-pure/stable/typed-array/values.js | 1 + .../core-js-pure/stable/url/index.js | 3 + .../core-js-pure/stable/url/to-json.js | 1 + .../core-js-pure/stable/weak-map/index.js | 3 + .../damerau-levenshtein/CHANGELOG.md | 67 + .../node_modules/damerau-levenshtein/LICENSE | 25 + .../damerau-levenshtein/README.md | 47 + .../node_modules/damerau-levenshtein/index.js | 72 + .../damerau-levenshtein/package.json | 76 + .../scripts/update-changelog.sh | 21 + .../damerau-levenshtein/test/test.js | 168 + .../node_modules/debug/.coveralls.yml | 1 + tic-tac-toe-app/node_modules/debug/.eslintrc | 11 + tic-tac-toe-app/node_modules/debug/.npmignore | 9 + .../node_modules/debug/.travis.yml | 14 + .../node_modules/debug/CHANGELOG.md | 362 + tic-tac-toe-app/node_modules/debug/LICENSE | 19 + tic-tac-toe-app/node_modules/debug/Makefile | 50 + tic-tac-toe-app/node_modules/debug/README.md | 312 + .../node_modules/debug/component.json | 19 + .../node_modules/debug/karma.conf.js | 70 + tic-tac-toe-app/node_modules/debug/node.js | 1 + .../node_modules/debug/package.json | 91 + .../node_modules/debug/src/browser.js | 185 + .../node_modules/debug/src/debug.js | 202 + .../node_modules/debug/src/index.js | 10 + .../node_modules/debug/src/inspector-log.js | 15 + .../node_modules/debug/src/node.js | 248 + .../node_modules/deep-extend/CHANGELOG.md | 46 + .../node_modules/deep-extend/LICENSE | 20 + .../node_modules/deep-extend/README.md | 91 + .../node_modules/deep-extend/index.js | 1 + .../deep-extend/lib/deep-extend.js | 150 + .../node_modules/deep-extend/package.json | 92 + .../node_modules/deep-is/.npmignore | 1 + .../node_modules/deep-is/.travis.yml | 6 + tic-tac-toe-app/node_modules/deep-is/LICENSE | 22 + .../node_modules/deep-is/README.markdown | 70 + .../node_modules/deep-is/example/cmp.js | 11 + tic-tac-toe-app/node_modules/deep-is/index.js | 102 + .../node_modules/deep-is/package.json | 90 + .../node_modules/deep-is/test/NaN.js | 16 + .../node_modules/deep-is/test/cmp.js | 23 + .../node_modules/deep-is/test/neg-vs-pos-0.js | 15 + .../define-properties/.editorconfig | 13 + .../node_modules/define-properties/.eslintrc | 12 + .../node_modules/define-properties/.jscs.json | 175 + .../define-properties/.travis.yml | 233 + .../define-properties/CHANGELOG.md | 44 + .../node_modules/define-properties/LICENSE | 21 + .../node_modules/define-properties/README.md | 86 + .../node_modules/define-properties/index.js | 58 + .../define-properties/package.json | 107 + .../define-properties/test/index.js | 125 + .../node_modules/doctrine/CHANGELOG.md | 101 + tic-tac-toe-app/node_modules/doctrine/LICENSE | 177 + .../doctrine/LICENSE.closure-compiler | 202 + .../node_modules/doctrine/LICENSE.esprima | 19 + .../node_modules/doctrine/README.md | 165 + .../node_modules/doctrine/lib/doctrine.js | 898 + .../node_modules/doctrine/lib/typed.js | 1305 ++ .../node_modules/doctrine/lib/utility.js | 35 + .../node_modules/doctrine/package.json | 89 + .../node_modules/emoji-regex/LICENSE-MIT.txt | 20 + .../node_modules/emoji-regex/README.md | 73 + .../node_modules/emoji-regex/es2015/index.js | 6 + .../node_modules/emoji-regex/es2015/text.js | 6 + .../node_modules/emoji-regex/index.d.ts | 23 + .../node_modules/emoji-regex/index.js | 6 + .../node_modules/emoji-regex/package.json | 77 + .../node_modules/emoji-regex/text.js | 6 + tic-tac-toe-app/node_modules/error-ex/LICENSE | 21 + .../node_modules/error-ex/README.md | 144 + .../node_modules/error-ex/index.js | 141 + .../node_modules/error-ex/package.json | 86 + .../node_modules/es-abstract/.editorconfig | 13 + .../node_modules/es-abstract/.eslintignore | 1 + .../node_modules/es-abstract/.eslintrc | 66 + .../node_modules/es-abstract/.gitattributes | 472 + .../es-abstract/.github/FUNDING.yml | 12 + .../es-abstract/.github/workflows/rebase.yml | 15 + .../node_modules/es-abstract/.nycrc | 14 + .../node_modules/es-abstract/.travis.yml | 32 + .../2015/AbstractEqualityComparison.js | 37 + .../2015/AbstractRelationalComparison.js | 66 + .../es-abstract/2015/AdvanceStringIndex.js | 45 + .../es-abstract/2015/ArrayCreate.js | 53 + .../es-abstract/2015/ArraySetLength.js | 85 + .../es-abstract/2015/ArraySpeciesCreate.js | 46 + .../node_modules/es-abstract/2015/Call.js | 19 + .../2015/CanonicalNumericIndexString.js | 22 + .../2015/CompletePropertyDescriptor.js | 39 + .../es-abstract/2015/CreateDataProperty.js | 45 + .../2015/CreateDataPropertyOrThrow.js | 25 + .../es-abstract/2015/CreateHTML.js | 30 + .../2015/CreateIterResultObject.js | 19 + .../2015/CreateListFromArrayLike.js | 43 + .../es-abstract/2015/CreateMethodProperty.js | 40 + .../es-abstract/2015/DateFromTime.js | 54 + .../node_modules/es-abstract/2015/Day.js | 13 + .../es-abstract/2015/DayFromYear.js | 12 + .../es-abstract/2015/DayWithinYear.js | 11 + .../es-abstract/2015/DaysInYear.js | 18 + .../es-abstract/2015/DefinePropertyOrThrow.js | 50 + .../es-abstract/2015/DeletePropertyOrThrow.js | 27 + .../es-abstract/2015/EnumerableOwnNames.js | 19 + .../2015/FromPropertyDescriptor.js | 36 + .../node_modules/es-abstract/2015/Get.js | 30 + .../es-abstract/2015/GetIterator.js | 35 + .../es-abstract/2015/GetMethod.js | 42 + .../es-abstract/2015/GetOwnPropertyKeys.js | 31 + .../2015/GetPrototypeFromConstructor.js | 28 + .../es-abstract/2015/GetSubstitution.js | 104 + .../node_modules/es-abstract/2015/GetV.js | 29 + .../es-abstract/2015/HasOwnProperty.js | 22 + .../es-abstract/2015/HasProperty.js | 20 + .../es-abstract/2015/HourFromTime.js | 16 + .../es-abstract/2015/InLeapYear.js | 21 + .../es-abstract/2015/InstanceofOperator.js | 30 + .../node_modules/es-abstract/2015/Invoke.js | 22 + .../es-abstract/2015/IsAccessorDescriptor.js | 23 + .../node_modules/es-abstract/2015/IsArray.js | 14 + .../es-abstract/2015/IsCallable.js | 5 + .../es-abstract/2015/IsConcatSpreadable.js | 25 + .../es-abstract/2015/IsConstructor.js | 7 + .../es-abstract/2015/IsDataDescriptor.js | 23 + .../es-abstract/2015/IsExtensible.js | 20 + .../es-abstract/2015/IsGenericDescriptor.js | 23 + .../es-abstract/2015/IsInteger.js | 21 + .../es-abstract/2015/IsPromise.js | 24 + .../es-abstract/2015/IsPropertyDescriptor.js | 17 + .../es-abstract/2015/IsPropertyKey.js | 7 + .../node_modules/es-abstract/2015/IsRegExp.js | 24 + .../es-abstract/2015/IteratorClose.js | 50 + .../es-abstract/2015/IteratorComplete.js | 18 + .../es-abstract/2015/IteratorNext.js | 18 + .../es-abstract/2015/IteratorStep.js | 13 + .../es-abstract/2015/IteratorValue.js | 18 + .../node_modules/es-abstract/2015/MakeDate.js | 13 + .../node_modules/es-abstract/2015/MakeDay.js | 33 + .../node_modules/es-abstract/2015/MakeTime.js | 23 + .../es-abstract/2015/MinFromTime.js | 16 + .../es-abstract/2015/MonthFromTime.js | 47 + .../es-abstract/2015/ObjectCreate.js | 37 + .../2015/OrdinaryDefineOwnProperty.js | 61 + .../2015/OrdinaryGetOwnProperty.js | 44 + .../es-abstract/2015/OrdinaryHasInstance.js | 25 + .../es-abstract/2015/OrdinaryHasProperty.js | 20 + .../es-abstract/2015/RegExpExec.js | 32 + .../2015/RequireObjectCoercible.js | 3 + .../es-abstract/2015/SameValue.js | 13 + .../es-abstract/2015/SameValueZero.js | 9 + .../es-abstract/2015/SecFromTime.js | 16 + .../node_modules/es-abstract/2015/Set.js | 32 + .../es-abstract/2015/SetFunctionName.js | 44 + .../es-abstract/2015/SetIntegrityLevel.js | 57 + .../es-abstract/2015/SpeciesConstructor.js | 32 + .../2015/StrictEqualityComparison.js | 17 + .../2015/SymbolDescriptiveString.js | 20 + .../es-abstract/2015/TestIntegrityLevel.js | 42 + .../node_modules/es-abstract/2015/TimeClip.js | 21 + .../es-abstract/2015/TimeFromYear.js | 11 + .../es-abstract/2015/TimeWithinDay.js | 11 + .../es-abstract/2015/ToBoolean.js | 5 + .../es-abstract/2015/ToDateString.js | 22 + .../node_modules/es-abstract/2015/ToInt16.js | 10 + .../node_modules/es-abstract/2015/ToInt32.js | 9 + .../node_modules/es-abstract/2015/ToInt8.js | 10 + .../es-abstract/2015/ToInteger.js | 12 + .../node_modules/es-abstract/2015/ToLength.js | 12 + .../node_modules/es-abstract/2015/ToNumber.js | 59 + .../node_modules/es-abstract/2015/ToObject.js | 14 + .../es-abstract/2015/ToPrimitive.js | 12 + .../es-abstract/2015/ToPropertyDescriptor.js | 52 + .../es-abstract/2015/ToPropertyKey.js | 15 + .../node_modules/es-abstract/2015/ToString.js | 15 + .../node_modules/es-abstract/2015/ToUint16.js | 24 + .../node_modules/es-abstract/2015/ToUint32.js | 9 + .../node_modules/es-abstract/2015/ToUint8.js | 22 + .../es-abstract/2015/ToUint8Clamp.js | 24 + .../node_modules/es-abstract/2015/Type.js | 12 + .../ValidateAndApplyPropertyDescriptor.js | 170 + .../node_modules/es-abstract/2015/WeekDay.js | 11 + .../es-abstract/2015/YearFromTime.js | 16 + .../node_modules/es-abstract/2015/modulo.js | 9 + .../es-abstract/2015/msFromTime.js | 10 + .../es-abstract/2015/thisBooleanValue.js | 15 + .../es-abstract/2015/thisNumberValue.js | 18 + .../es-abstract/2015/thisStringValue.js | 15 + .../es-abstract/2015/thisTimeValue.js | 9 + .../2016/AbstractEqualityComparison.js | 37 + .../2016/AbstractRelationalComparison.js | 66 + .../es-abstract/2016/AdvanceStringIndex.js | 45 + .../es-abstract/2016/ArrayCreate.js | 53 + .../es-abstract/2016/ArraySetLength.js | 85 + .../es-abstract/2016/ArraySpeciesCreate.js | 46 + .../node_modules/es-abstract/2016/Call.js | 19 + .../2016/CanonicalNumericIndexString.js | 22 + .../2016/CompletePropertyDescriptor.js | 39 + .../es-abstract/2016/CreateDataProperty.js | 45 + .../2016/CreateDataPropertyOrThrow.js | 25 + .../es-abstract/2016/CreateHTML.js | 30 + .../2016/CreateIterResultObject.js | 19 + .../2016/CreateListFromArrayLike.js | 43 + .../es-abstract/2016/CreateMethodProperty.js | 40 + .../es-abstract/2016/DateFromTime.js | 54 + .../node_modules/es-abstract/2016/Day.js | 13 + .../es-abstract/2016/DayFromYear.js | 12 + .../es-abstract/2016/DayWithinYear.js | 11 + .../es-abstract/2016/DaysInYear.js | 18 + .../es-abstract/2016/DefinePropertyOrThrow.js | 50 + .../es-abstract/2016/DeletePropertyOrThrow.js | 27 + .../es-abstract/2016/EnumerableOwnNames.js | 19 + .../2016/FromPropertyDescriptor.js | 36 + .../node_modules/es-abstract/2016/Get.js | 30 + .../es-abstract/2016/GetIterator.js | 35 + .../es-abstract/2016/GetMethod.js | 42 + .../es-abstract/2016/GetOwnPropertyKeys.js | 31 + .../2016/GetPrototypeFromConstructor.js | 28 + .../es-abstract/2016/GetSubstitution.js | 104 + .../node_modules/es-abstract/2016/GetV.js | 29 + .../es-abstract/2016/HasOwnProperty.js | 22 + .../es-abstract/2016/HasProperty.js | 20 + .../es-abstract/2016/HourFromTime.js | 16 + .../es-abstract/2016/InLeapYear.js | 21 + .../es-abstract/2016/InstanceofOperator.js | 30 + .../node_modules/es-abstract/2016/Invoke.js | 22 + .../es-abstract/2016/IsAccessorDescriptor.js | 23 + .../node_modules/es-abstract/2016/IsArray.js | 14 + .../es-abstract/2016/IsCallable.js | 5 + .../es-abstract/2016/IsConcatSpreadable.js | 25 + .../es-abstract/2016/IsConstructor.js | 7 + .../es-abstract/2016/IsDataDescriptor.js | 23 + .../es-abstract/2016/IsExtensible.js | 20 + .../es-abstract/2016/IsGenericDescriptor.js | 23 + .../es-abstract/2016/IsInteger.js | 21 + .../es-abstract/2016/IsPromise.js | 24 + .../es-abstract/2016/IsPropertyDescriptor.js | 17 + .../es-abstract/2016/IsPropertyKey.js | 7 + .../node_modules/es-abstract/2016/IsRegExp.js | 24 + .../es-abstract/2016/IterableToArrayLike.js | 74 + .../es-abstract/2016/IteratorClose.js | 50 + .../es-abstract/2016/IteratorComplete.js | 18 + .../es-abstract/2016/IteratorNext.js | 18 + .../es-abstract/2016/IteratorStep.js | 13 + .../es-abstract/2016/IteratorValue.js | 18 + .../node_modules/es-abstract/2016/MakeDate.js | 13 + .../node_modules/es-abstract/2016/MakeDay.js | 33 + .../node_modules/es-abstract/2016/MakeTime.js | 23 + .../es-abstract/2016/MinFromTime.js | 16 + .../es-abstract/2016/MonthFromTime.js | 47 + .../es-abstract/2016/ObjectCreate.js | 37 + .../2016/OrdinaryDefineOwnProperty.js | 61 + .../2016/OrdinaryGetOwnProperty.js | 44 + .../2016/OrdinaryGetPrototypeOf.js | 21 + .../es-abstract/2016/OrdinaryHasInstance.js | 25 + .../es-abstract/2016/OrdinaryHasProperty.js | 20 + .../2016/OrdinarySetPrototypeOf.js | 53 + .../es-abstract/2016/RegExpExec.js | 32 + .../2016/RequireObjectCoercible.js | 3 + .../es-abstract/2016/SameValue.js | 13 + .../es-abstract/2016/SameValueNonNumber.js | 16 + .../es-abstract/2016/SameValueZero.js | 9 + .../es-abstract/2016/SecFromTime.js | 16 + .../node_modules/es-abstract/2016/Set.js | 32 + .../es-abstract/2016/SetFunctionName.js | 44 + .../es-abstract/2016/SetIntegrityLevel.js | 57 + .../es-abstract/2016/SpeciesConstructor.js | 32 + .../2016/StrictEqualityComparison.js | 17 + .../2016/SymbolDescriptiveString.js | 20 + .../es-abstract/2016/TestIntegrityLevel.js | 42 + .../node_modules/es-abstract/2016/TimeClip.js | 21 + .../es-abstract/2016/TimeFromYear.js | 11 + .../es-abstract/2016/TimeWithinDay.js | 11 + .../es-abstract/2016/ToBoolean.js | 5 + .../es-abstract/2016/ToDateString.js | 22 + .../node_modules/es-abstract/2016/ToInt16.js | 10 + .../node_modules/es-abstract/2016/ToInt32.js | 9 + .../node_modules/es-abstract/2016/ToInt8.js | 10 + .../es-abstract/2016/ToInteger.js | 12 + .../node_modules/es-abstract/2016/ToLength.js | 12 + .../node_modules/es-abstract/2016/ToNumber.js | 59 + .../node_modules/es-abstract/2016/ToObject.js | 14 + .../es-abstract/2016/ToPrimitive.js | 12 + .../es-abstract/2016/ToPropertyDescriptor.js | 52 + .../es-abstract/2016/ToPropertyKey.js | 15 + .../node_modules/es-abstract/2016/ToString.js | 15 + .../node_modules/es-abstract/2016/ToUint16.js | 24 + .../node_modules/es-abstract/2016/ToUint32.js | 9 + .../node_modules/es-abstract/2016/ToUint8.js | 22 + .../es-abstract/2016/ToUint8Clamp.js | 24 + .../node_modules/es-abstract/2016/Type.js | 12 + .../ValidateAndApplyPropertyDescriptor.js | 170 + .../node_modules/es-abstract/2016/WeekDay.js | 11 + .../es-abstract/2016/YearFromTime.js | 16 + .../node_modules/es-abstract/2016/modulo.js | 9 + .../es-abstract/2016/msFromTime.js | 10 + .../es-abstract/2016/thisBooleanValue.js | 15 + .../es-abstract/2016/thisNumberValue.js | 18 + .../es-abstract/2016/thisStringValue.js | 15 + .../es-abstract/2016/thisTimeValue.js | 9 + .../2017/AbstractEqualityComparison.js | 37 + .../2017/AbstractRelationalComparison.js | 66 + .../es-abstract/2017/AdvanceStringIndex.js | 45 + .../es-abstract/2017/ArrayCreate.js | 53 + .../es-abstract/2017/ArraySetLength.js | 85 + .../es-abstract/2017/ArraySpeciesCreate.js | 46 + .../node_modules/es-abstract/2017/Call.js | 19 + .../2017/CanonicalNumericIndexString.js | 22 + .../2017/CompletePropertyDescriptor.js | 39 + .../es-abstract/2017/CreateDataProperty.js | 45 + .../2017/CreateDataPropertyOrThrow.js | 25 + .../es-abstract/2017/CreateHTML.js | 30 + .../2017/CreateIterResultObject.js | 19 + .../2017/CreateListFromArrayLike.js | 43 + .../es-abstract/2017/CreateMethodProperty.js | 40 + .../es-abstract/2017/DateFromTime.js | 54 + .../node_modules/es-abstract/2017/Day.js | 13 + .../es-abstract/2017/DayFromYear.js | 12 + .../es-abstract/2017/DayWithinYear.js | 11 + .../es-abstract/2017/DaysInYear.js | 18 + .../es-abstract/2017/DefinePropertyOrThrow.js | 50 + .../es-abstract/2017/DeletePropertyOrThrow.js | 27 + .../2017/EnumerableOwnProperties.js | 43 + .../2017/FromPropertyDescriptor.js | 36 + .../node_modules/es-abstract/2017/Get.js | 30 + .../es-abstract/2017/GetIterator.js | 35 + .../es-abstract/2017/GetMethod.js | 42 + .../es-abstract/2017/GetOwnPropertyKeys.js | 31 + .../2017/GetPrototypeFromConstructor.js | 28 + .../es-abstract/2017/GetSubstitution.js | 104 + .../node_modules/es-abstract/2017/GetV.js | 29 + .../es-abstract/2017/HasOwnProperty.js | 22 + .../es-abstract/2017/HasProperty.js | 20 + .../es-abstract/2017/HourFromTime.js | 16 + .../es-abstract/2017/InLeapYear.js | 21 + .../es-abstract/2017/InstanceofOperator.js | 30 + .../node_modules/es-abstract/2017/Invoke.js | 22 + .../es-abstract/2017/IsAccessorDescriptor.js | 23 + .../node_modules/es-abstract/2017/IsArray.js | 14 + .../es-abstract/2017/IsCallable.js | 5 + .../es-abstract/2017/IsConcatSpreadable.js | 25 + .../es-abstract/2017/IsConstructor.js | 7 + .../es-abstract/2017/IsDataDescriptor.js | 23 + .../es-abstract/2017/IsExtensible.js | 20 + .../es-abstract/2017/IsGenericDescriptor.js | 23 + .../es-abstract/2017/IsInteger.js | 21 + .../es-abstract/2017/IsPromise.js | 24 + .../es-abstract/2017/IsPropertyDescriptor.js | 17 + .../es-abstract/2017/IsPropertyKey.js | 7 + .../node_modules/es-abstract/2017/IsRegExp.js | 24 + .../es-abstract/2017/IterableToList.js | 24 + .../es-abstract/2017/IteratorClose.js | 50 + .../es-abstract/2017/IteratorComplete.js | 18 + .../es-abstract/2017/IteratorNext.js | 18 + .../es-abstract/2017/IteratorStep.js | 13 + .../es-abstract/2017/IteratorValue.js | 18 + .../node_modules/es-abstract/2017/MakeDate.js | 13 + .../node_modules/es-abstract/2017/MakeDay.js | 33 + .../node_modules/es-abstract/2017/MakeTime.js | 23 + .../es-abstract/2017/MinFromTime.js | 16 + .../es-abstract/2017/MonthFromTime.js | 47 + .../es-abstract/2017/ObjectCreate.js | 37 + .../2017/OrdinaryDefineOwnProperty.js | 61 + .../2017/OrdinaryGetOwnProperty.js | 44 + .../2017/OrdinaryGetPrototypeOf.js | 21 + .../es-abstract/2017/OrdinaryHasInstance.js | 25 + .../es-abstract/2017/OrdinaryHasProperty.js | 20 + .../2017/OrdinarySetPrototypeOf.js | 53 + .../es-abstract/2017/RegExpExec.js | 32 + .../2017/RequireObjectCoercible.js | 3 + .../es-abstract/2017/SameValue.js | 13 + .../es-abstract/2017/SameValueNonNumber.js | 16 + .../es-abstract/2017/SameValueZero.js | 9 + .../es-abstract/2017/SecFromTime.js | 16 + .../node_modules/es-abstract/2017/Set.js | 32 + .../es-abstract/2017/SetFunctionName.js | 44 + .../es-abstract/2017/SetIntegrityLevel.js | 57 + .../es-abstract/2017/SpeciesConstructor.js | 32 + .../2017/StrictEqualityComparison.js | 17 + .../2017/SymbolDescriptiveString.js | 20 + .../es-abstract/2017/TestIntegrityLevel.js | 42 + .../node_modules/es-abstract/2017/TimeClip.js | 21 + .../es-abstract/2017/TimeFromYear.js | 11 + .../es-abstract/2017/TimeWithinDay.js | 11 + .../es-abstract/2017/ToBoolean.js | 5 + .../es-abstract/2017/ToDateString.js | 22 + .../node_modules/es-abstract/2017/ToIndex.js | 26 + .../node_modules/es-abstract/2017/ToInt16.js | 10 + .../node_modules/es-abstract/2017/ToInt32.js | 9 + .../node_modules/es-abstract/2017/ToInt8.js | 10 + .../es-abstract/2017/ToInteger.js | 12 + .../node_modules/es-abstract/2017/ToLength.js | 12 + .../node_modules/es-abstract/2017/ToNumber.js | 59 + .../node_modules/es-abstract/2017/ToObject.js | 14 + .../es-abstract/2017/ToPrimitive.js | 12 + .../es-abstract/2017/ToPropertyDescriptor.js | 52 + .../es-abstract/2017/ToPropertyKey.js | 15 + .../node_modules/es-abstract/2017/ToString.js | 15 + .../node_modules/es-abstract/2017/ToUint16.js | 24 + .../node_modules/es-abstract/2017/ToUint32.js | 9 + .../node_modules/es-abstract/2017/ToUint8.js | 22 + .../es-abstract/2017/ToUint8Clamp.js | 24 + .../node_modules/es-abstract/2017/Type.js | 12 + .../ValidateAndApplyPropertyDescriptor.js | 170 + .../node_modules/es-abstract/2017/WeekDay.js | 11 + .../es-abstract/2017/YearFromTime.js | 16 + .../node_modules/es-abstract/2017/modulo.js | 9 + .../es-abstract/2017/msFromTime.js | 10 + .../es-abstract/2017/thisBooleanValue.js | 15 + .../es-abstract/2017/thisNumberValue.js | 18 + .../es-abstract/2017/thisStringValue.js | 15 + .../es-abstract/2017/thisTimeValue.js | 9 + .../2018/AbstractEqualityComparison.js | 37 + .../2018/AbstractRelationalComparison.js | 66 + .../es-abstract/2018/AdvanceStringIndex.js | 45 + .../es-abstract/2018/ArrayCreate.js | 53 + .../es-abstract/2018/ArraySetLength.js | 85 + .../es-abstract/2018/ArraySpeciesCreate.js | 46 + .../node_modules/es-abstract/2018/Call.js | 19 + .../2018/CanonicalNumericIndexString.js | 22 + .../2018/CompletePropertyDescriptor.js | 39 + .../es-abstract/2018/CopyDataProperties.js | 60 + .../es-abstract/2018/CreateDataProperty.js | 45 + .../2018/CreateDataPropertyOrThrow.js | 25 + .../es-abstract/2018/CreateHTML.js | 30 + .../2018/CreateIterResultObject.js | 19 + .../2018/CreateListFromArrayLike.js | 43 + .../es-abstract/2018/CreateMethodProperty.js | 40 + .../es-abstract/2018/DateFromTime.js | 54 + .../es-abstract/2018/DateString.js | 30 + .../node_modules/es-abstract/2018/Day.js | 13 + .../es-abstract/2018/DayFromYear.js | 12 + .../es-abstract/2018/DayWithinYear.js | 11 + .../es-abstract/2018/DaysInYear.js | 18 + .../es-abstract/2018/DefinePropertyOrThrow.js | 50 + .../es-abstract/2018/DeletePropertyOrThrow.js | 27 + .../2018/EnumerableOwnPropertyNames.js | 43 + .../2018/FromPropertyDescriptor.js | 36 + .../node_modules/es-abstract/2018/Get.js | 30 + .../es-abstract/2018/GetIterator.js | 35 + .../es-abstract/2018/GetMethod.js | 42 + .../es-abstract/2018/GetOwnPropertyKeys.js | 31 + .../2018/GetPrototypeFromConstructor.js | 28 + .../es-abstract/2018/GetSubstitution.js | 128 + .../node_modules/es-abstract/2018/GetV.js | 29 + .../es-abstract/2018/HasOwnProperty.js | 22 + .../es-abstract/2018/HasProperty.js | 20 + .../es-abstract/2018/HourFromTime.js | 16 + .../es-abstract/2018/InLeapYear.js | 21 + .../es-abstract/2018/InstanceofOperator.js | 30 + .../node_modules/es-abstract/2018/Invoke.js | 22 + .../es-abstract/2018/IsAccessorDescriptor.js | 23 + .../node_modules/es-abstract/2018/IsArray.js | 14 + .../es-abstract/2018/IsCallable.js | 5 + .../es-abstract/2018/IsConcatSpreadable.js | 25 + .../es-abstract/2018/IsConstructor.js | 7 + .../es-abstract/2018/IsDataDescriptor.js | 23 + .../es-abstract/2018/IsExtensible.js | 20 + .../es-abstract/2018/IsGenericDescriptor.js | 23 + .../es-abstract/2018/IsInteger.js | 21 + .../es-abstract/2018/IsPromise.js | 24 + .../es-abstract/2018/IsPropertyKey.js | 7 + .../node_modules/es-abstract/2018/IsRegExp.js | 24 + .../es-abstract/2018/IsStringPrefix.js | 47 + .../es-abstract/2018/IterableToList.js | 24 + .../es-abstract/2018/IteratorClose.js | 50 + .../es-abstract/2018/IteratorComplete.js | 18 + .../es-abstract/2018/IteratorNext.js | 18 + .../es-abstract/2018/IteratorStep.js | 13 + .../es-abstract/2018/IteratorValue.js | 18 + .../node_modules/es-abstract/2018/MakeDate.js | 13 + .../node_modules/es-abstract/2018/MakeDay.js | 33 + .../node_modules/es-abstract/2018/MakeTime.js | 23 + .../es-abstract/2018/MinFromTime.js | 16 + .../es-abstract/2018/MonthFromTime.js | 47 + .../es-abstract/2018/NumberToString.js | 18 + .../es-abstract/2018/ObjectCreate.js | 37 + .../2018/OrdinaryDefineOwnProperty.js | 61 + .../2018/OrdinaryGetOwnProperty.js | 44 + .../2018/OrdinaryGetPrototypeOf.js | 21 + .../es-abstract/2018/OrdinaryHasInstance.js | 25 + .../es-abstract/2018/OrdinaryHasProperty.js | 20 + .../2018/OrdinarySetPrototypeOf.js | 53 + .../es-abstract/2018/PromiseResolve.js | 15 + .../es-abstract/2018/RegExpExec.js | 32 + .../2018/RequireObjectCoercible.js | 3 + .../es-abstract/2018/SameValue.js | 13 + .../es-abstract/2018/SameValueNonNumber.js | 16 + .../es-abstract/2018/SameValueZero.js | 9 + .../es-abstract/2018/SecFromTime.js | 16 + .../node_modules/es-abstract/2018/Set.js | 32 + .../es-abstract/2018/SetFunctionName.js | 44 + .../es-abstract/2018/SetIntegrityLevel.js | 57 + .../es-abstract/2018/SpeciesConstructor.js | 32 + .../2018/StrictEqualityComparison.js | 17 + .../2018/SymbolDescriptiveString.js | 20 + .../es-abstract/2018/TestIntegrityLevel.js | 42 + .../node_modules/es-abstract/2018/TimeClip.js | 21 + .../es-abstract/2018/TimeFromYear.js | 11 + .../es-abstract/2018/TimeString.js | 25 + .../es-abstract/2018/TimeWithinDay.js | 11 + .../es-abstract/2018/ToBoolean.js | 5 + .../es-abstract/2018/ToDateString.js | 22 + .../node_modules/es-abstract/2018/ToIndex.js | 26 + .../node_modules/es-abstract/2018/ToInt16.js | 10 + .../node_modules/es-abstract/2018/ToInt32.js | 9 + .../node_modules/es-abstract/2018/ToInt8.js | 10 + .../es-abstract/2018/ToInteger.js | 12 + .../node_modules/es-abstract/2018/ToLength.js | 12 + .../node_modules/es-abstract/2018/ToNumber.js | 59 + .../node_modules/es-abstract/2018/ToObject.js | 14 + .../es-abstract/2018/ToPrimitive.js | 12 + .../es-abstract/2018/ToPropertyDescriptor.js | 52 + .../es-abstract/2018/ToPropertyKey.js | 15 + .../node_modules/es-abstract/2018/ToString.js | 15 + .../node_modules/es-abstract/2018/ToUint16.js | 24 + .../node_modules/es-abstract/2018/ToUint32.js | 9 + .../node_modules/es-abstract/2018/ToUint8.js | 22 + .../es-abstract/2018/ToUint8Clamp.js | 24 + .../node_modules/es-abstract/2018/Type.js | 12 + .../ValidateAndApplyPropertyDescriptor.js | 170 + .../node_modules/es-abstract/2018/WeekDay.js | 11 + .../es-abstract/2018/YearFromTime.js | 16 + .../node_modules/es-abstract/2018/modulo.js | 9 + .../es-abstract/2018/msFromTime.js | 10 + .../es-abstract/2018/thisBooleanValue.js | 15 + .../es-abstract/2018/thisNumberValue.js | 18 + .../es-abstract/2018/thisStringValue.js | 15 + .../es-abstract/2018/thisSymbolValue.js | 19 + .../es-abstract/2018/thisTimeValue.js | 9 + .../2019/AbstractEqualityComparison.js | 37 + .../2019/AbstractRelationalComparison.js | 66 + .../2019/AddEntriesFromIterable.js | 52 + .../es-abstract/2019/AdvanceStringIndex.js | 45 + .../es-abstract/2019/ArrayCreate.js | 53 + .../es-abstract/2019/ArraySetLength.js | 85 + .../es-abstract/2019/ArraySpeciesCreate.js | 46 + .../node_modules/es-abstract/2019/Call.js | 19 + .../2019/CanonicalNumericIndexString.js | 22 + .../2019/CompletePropertyDescriptor.js | 39 + .../es-abstract/2019/CopyDataProperties.js | 60 + .../es-abstract/2019/CreateDataProperty.js | 45 + .../2019/CreateDataPropertyOrThrow.js | 25 + .../es-abstract/2019/CreateHTML.js | 30 + .../2019/CreateIterResultObject.js | 19 + .../2019/CreateListFromArrayLike.js | 43 + .../es-abstract/2019/CreateMethodProperty.js | 40 + .../es-abstract/2019/DateFromTime.js | 54 + .../es-abstract/2019/DateString.js | 30 + .../node_modules/es-abstract/2019/Day.js | 13 + .../es-abstract/2019/DayFromYear.js | 12 + .../es-abstract/2019/DayWithinYear.js | 11 + .../es-abstract/2019/DaysInYear.js | 18 + .../es-abstract/2019/DefinePropertyOrThrow.js | 50 + .../es-abstract/2019/DeletePropertyOrThrow.js | 27 + .../2019/EnumerableOwnPropertyNames.js | 43 + .../es-abstract/2019/FlattenIntoArray.js | 58 + .../2019/FromPropertyDescriptor.js | 36 + .../node_modules/es-abstract/2019/Get.js | 30 + .../es-abstract/2019/GetIterator.js | 35 + .../es-abstract/2019/GetMethod.js | 42 + .../es-abstract/2019/GetOwnPropertyKeys.js | 31 + .../2019/GetPrototypeFromConstructor.js | 28 + .../es-abstract/2019/GetSubstitution.js | 128 + .../node_modules/es-abstract/2019/GetV.js | 29 + .../es-abstract/2019/HasOwnProperty.js | 22 + .../es-abstract/2019/HasProperty.js | 20 + .../es-abstract/2019/HourFromTime.js | 16 + .../es-abstract/2019/InLeapYear.js | 21 + .../es-abstract/2019/InstanceofOperator.js | 30 + .../node_modules/es-abstract/2019/Invoke.js | 22 + .../es-abstract/2019/IsAccessorDescriptor.js | 23 + .../node_modules/es-abstract/2019/IsArray.js | 14 + .../es-abstract/2019/IsCallable.js | 5 + .../es-abstract/2019/IsConcatSpreadable.js | 25 + .../es-abstract/2019/IsConstructor.js | 7 + .../es-abstract/2019/IsDataDescriptor.js | 23 + .../es-abstract/2019/IsExtensible.js | 20 + .../es-abstract/2019/IsGenericDescriptor.js | 23 + .../es-abstract/2019/IsInteger.js | 21 + .../es-abstract/2019/IsPromise.js | 24 + .../es-abstract/2019/IsPropertyKey.js | 7 + .../node_modules/es-abstract/2019/IsRegExp.js | 24 + .../es-abstract/2019/IsStringPrefix.js | 47 + .../es-abstract/2019/IterableToList.js | 24 + .../es-abstract/2019/IteratorClose.js | 50 + .../es-abstract/2019/IteratorComplete.js | 18 + .../es-abstract/2019/IteratorNext.js | 18 + .../es-abstract/2019/IteratorStep.js | 13 + .../es-abstract/2019/IteratorValue.js | 18 + .../node_modules/es-abstract/2019/MakeDate.js | 13 + .../node_modules/es-abstract/2019/MakeDay.js | 33 + .../node_modules/es-abstract/2019/MakeTime.js | 23 + .../es-abstract/2019/MinFromTime.js | 16 + .../es-abstract/2019/MonthFromTime.js | 47 + .../es-abstract/2019/NumberToString.js | 18 + .../es-abstract/2019/ObjectCreate.js | 37 + .../2019/OrdinaryDefineOwnProperty.js | 61 + .../2019/OrdinaryGetOwnProperty.js | 44 + .../2019/OrdinaryGetPrototypeOf.js | 21 + .../es-abstract/2019/OrdinaryHasInstance.js | 25 + .../es-abstract/2019/OrdinaryHasProperty.js | 20 + .../2019/OrdinarySetPrototypeOf.js | 53 + .../es-abstract/2019/PromiseResolve.js | 15 + .../es-abstract/2019/RegExpExec.js | 32 + .../2019/RequireObjectCoercible.js | 3 + .../es-abstract/2019/SameValue.js | 13 + .../es-abstract/2019/SameValueNonNumber.js | 16 + .../es-abstract/2019/SameValueZero.js | 9 + .../es-abstract/2019/SecFromTime.js | 16 + .../node_modules/es-abstract/2019/Set.js | 32 + .../es-abstract/2019/SetFunctionName.js | 44 + .../es-abstract/2019/SetIntegrityLevel.js | 57 + .../es-abstract/2019/SpeciesConstructor.js | 32 + .../2019/StrictEqualityComparison.js | 17 + .../2019/SymbolDescriptiveString.js | 20 + .../es-abstract/2019/TestIntegrityLevel.js | 42 + .../node_modules/es-abstract/2019/TimeClip.js | 21 + .../es-abstract/2019/TimeFromYear.js | 11 + .../es-abstract/2019/TimeString.js | 25 + .../es-abstract/2019/TimeWithinDay.js | 11 + .../es-abstract/2019/ToBoolean.js | 5 + .../es-abstract/2019/ToDateString.js | 22 + .../node_modules/es-abstract/2019/ToIndex.js | 26 + .../node_modules/es-abstract/2019/ToInt16.js | 10 + .../node_modules/es-abstract/2019/ToInt32.js | 9 + .../node_modules/es-abstract/2019/ToInt8.js | 10 + .../es-abstract/2019/ToInteger.js | 12 + .../node_modules/es-abstract/2019/ToLength.js | 12 + .../node_modules/es-abstract/2019/ToNumber.js | 59 + .../node_modules/es-abstract/2019/ToObject.js | 14 + .../es-abstract/2019/ToPrimitive.js | 12 + .../es-abstract/2019/ToPropertyDescriptor.js | 52 + .../es-abstract/2019/ToPropertyKey.js | 15 + .../node_modules/es-abstract/2019/ToString.js | 15 + .../node_modules/es-abstract/2019/ToUint16.js | 24 + .../node_modules/es-abstract/2019/ToUint32.js | 9 + .../node_modules/es-abstract/2019/ToUint8.js | 22 + .../es-abstract/2019/ToUint8Clamp.js | 24 + .../es-abstract/2019/TrimString.js | 29 + .../node_modules/es-abstract/2019/Type.js | 12 + .../ValidateAndApplyPropertyDescriptor.js | 170 + .../node_modules/es-abstract/2019/WeekDay.js | 11 + .../es-abstract/2019/YearFromTime.js | 16 + .../node_modules/es-abstract/2019/modulo.js | 9 + .../es-abstract/2019/msFromTime.js | 10 + .../es-abstract/2019/thisBooleanValue.js | 15 + .../es-abstract/2019/thisNumberValue.js | 18 + .../es-abstract/2019/thisStringValue.js | 15 + .../es-abstract/2019/thisSymbolValue.js | 19 + .../es-abstract/2019/thisTimeValue.js | 3 + .../5/AbstractEqualityComparison.js | 37 + .../5/AbstractRelationalComparison.js | 66 + .../es-abstract/5/CheckObjectCoercible.js | 14 + .../es-abstract/5/DateFromTime.js | 54 + .../node_modules/es-abstract/5/Day.js | 13 + .../node_modules/es-abstract/5/DayFromYear.js | 12 + .../es-abstract/5/DayWithinYear.js | 11 + .../node_modules/es-abstract/5/DaysInYear.js | 18 + .../es-abstract/5/FromPropertyDescriptor.js | 39 + .../es-abstract/5/HourFromTime.js | 16 + .../node_modules/es-abstract/5/InLeapYear.js | 21 + .../es-abstract/5/IsAccessorDescriptor.js | 23 + .../node_modules/es-abstract/5/IsCallable.js | 5 + .../es-abstract/5/IsDataDescriptor.js | 23 + .../es-abstract/5/IsGenericDescriptor.js | 23 + .../es-abstract/5/IsPropertyDescriptor.js | 17 + .../node_modules/es-abstract/5/MakeDate.js | 13 + .../node_modules/es-abstract/5/MakeDay.js | 33 + .../node_modules/es-abstract/5/MakeTime.js | 23 + .../node_modules/es-abstract/5/MinFromTime.js | 16 + .../es-abstract/5/MonthFromTime.js | 47 + .../node_modules/es-abstract/5/SameValue.js | 13 + .../node_modules/es-abstract/5/SecFromTime.js | 16 + .../es-abstract/5/StrictEqualityComparison.js | 17 + .../node_modules/es-abstract/5/TimeClip.js | 21 + .../es-abstract/5/TimeFromYear.js | 11 + .../es-abstract/5/TimeWithinDay.js | 11 + .../node_modules/es-abstract/5/ToBoolean.js | 5 + .../node_modules/es-abstract/5/ToInt32.js | 9 + .../node_modules/es-abstract/5/ToInteger.js | 22 + .../node_modules/es-abstract/5/ToNumber.js | 7 + .../node_modules/es-abstract/5/ToObject.js | 14 + .../node_modules/es-abstract/5/ToPrimitive.js | 5 + .../es-abstract/5/ToPropertyDescriptor.js | 52 + .../node_modules/es-abstract/5/ToString.js | 12 + .../node_modules/es-abstract/5/ToUint16.js | 24 + .../node_modules/es-abstract/5/ToUint32.js | 9 + .../node_modules/es-abstract/5/Type.js | 24 + .../node_modules/es-abstract/5/WeekDay.js | 11 + .../es-abstract/5/YearFromTime.js | 16 + .../node_modules/es-abstract/5/modulo.js | 9 + .../node_modules/es-abstract/5/msFromTime.js | 10 + .../node_modules/es-abstract/CHANGELOG.md | 333 + .../node_modules/es-abstract/GetIntrinsic.js | 218 + .../node_modules/es-abstract/LICENSE | 21 + .../node_modules/es-abstract/README.md | 48 + .../node_modules/es-abstract/es2015.js | 115 + .../node_modules/es-abstract/es2016.js | 119 + .../node_modules/es-abstract/es2017.js | 120 + .../node_modules/es-abstract/es2018.js | 126 + .../node_modules/es-abstract/es2019.js | 129 + .../node_modules/es-abstract/es5.js | 49 + .../node_modules/es-abstract/es6.js | 3 + .../node_modules/es-abstract/es7.js | 3 + .../es-abstract/helpers/DefineOwnProperty.js | 45 + .../es-abstract/helpers/OwnPropertyKeys.js | 21 + .../es-abstract/helpers/assertRecord.js | 48 + .../es-abstract/helpers/assign.js | 22 + .../es-abstract/helpers/callBind.js | 17 + .../es-abstract/helpers/callBound.js | 15 + .../node_modules/es-abstract/helpers/every.js | 10 + .../es-abstract/helpers/forEach.js | 7 + .../es-abstract/helpers/getInferredName.js | 10 + .../es-abstract/helpers/getIteratorMethod.js | 45 + .../helpers/getOwnPropertyDescriptor.js | 15 + .../es-abstract/helpers/getProto.js | 15 + .../helpers/getSymbolDescription.js | 30 + .../es-abstract/helpers/isFinite.js | 5 + .../node_modules/es-abstract/helpers/isNaN.js | 5 + .../es-abstract/helpers/isPrefixOf.js | 13 + .../es-abstract/helpers/isPrimitive.js | 5 + .../helpers/isPropertyDescriptor.js | 31 + .../helpers/isSamePropertyDescriptor.js | 20 + .../es-abstract/helpers/maxSafeInteger.js | 8 + .../node_modules/es-abstract/helpers/mod.js | 6 + .../es-abstract/helpers/padTimeComponent.js | 9 + .../es-abstract/helpers/regexTester.js | 11 + .../es-abstract/helpers/setProto.js | 16 + .../node_modules/es-abstract/helpers/sign.js | 5 + .../es-abstract/helpers/timeConstants.js | 19 + .../node_modules/es-abstract/index.js | 26 + .../es-abstract/operations/.eslintrc | 5 + .../es-abstract/operations/2015.js | 117 + .../es-abstract/operations/2016.js | 276 + .../es-abstract/operations/2017.js | 324 + .../es-abstract/operations/2018.js | 350 + .../es-abstract/operations/2019.js | 355 + .../node_modules/es-abstract/package.json | 150 + .../es-abstract/test/GetIntrinsic.js | 94 + .../node_modules/es-abstract/test/diffOps.js | 27 + .../node_modules/es-abstract/test/es2015.js | 11 + .../node_modules/es-abstract/test/es2016.js | 11 + .../node_modules/es-abstract/test/es2017.js | 11 + .../node_modules/es-abstract/test/es2018.js | 11 + .../node_modules/es-abstract/test/es2019.js | 11 + .../node_modules/es-abstract/test/es5.js | 784 + .../node_modules/es-abstract/test/es6.js | 18 + .../node_modules/es-abstract/test/es7.js | 18 + .../test/helpers/OwnPropertyKeys.js | 42 + .../es-abstract/test/helpers/assertRecord.js | 60 + .../test/helpers/defineProperty.js | 22 + .../test/helpers/getSymbolDescription.js | 55 + .../test/helpers/runManifestTest.js | 27 + .../es-abstract/test/helpers/values.js | 121 + .../node_modules/es-abstract/test/index.js | 35 + .../node_modules/es-abstract/test/tests.js | 4128 +++++ .../node_modules/es-to-primitive/.eslintrc | 22 + .../es-to-primitive/.github/FUNDING.yml | 12 + .../node_modules/es-to-primitive/.travis.yml | 15 + .../node_modules/es-to-primitive/CHANGELOG.md | 49 + .../node_modules/es-to-primitive/LICENSE | 22 + .../node_modules/es-to-primitive/Makefile | 61 + .../node_modules/es-to-primitive/README.md | 49 + .../node_modules/es-to-primitive/es2015.js | 75 + .../node_modules/es-to-primitive/es5.js | 45 + .../node_modules/es-to-primitive/es6.js | 3 + .../es-to-primitive/helpers/isPrimitive.js | 5 + .../node_modules/es-to-primitive/index.js | 17 + .../node_modules/es-to-primitive/package.json | 113 + .../es-to-primitive/test/es2015.js | 151 + .../node_modules/es-to-primitive/test/es5.js | 118 + .../node_modules/es-to-primitive/test/es6.js | 151 + .../es-to-primitive/test/index.js | 20 + .../escape-string-regexp/index.js | 11 + .../node_modules/escape-string-regexp/license | 21 + .../escape-string-regexp/package.json | 82 + .../escape-string-regexp/readme.md | 27 + .../eslint-config-airbnb-base/.babelrc | 3 + .../eslint-config-airbnb-base/.eslintrc | 8 + .../eslint-config-airbnb-base/CHANGELOG.md | 337 + .../eslint-config-airbnb-base/LICENSE.md | 21 + .../eslint-config-airbnb-base/README.md | 99 + .../eslint-config-airbnb-base/index.js | 17 + .../eslint-config-airbnb-base/legacy.js | 33 + .../eslint-config-airbnb-base/package.json | 107 + .../rules/best-practices.js | 355 + .../eslint-config-airbnb-base/rules/errors.js | 154 + .../eslint-config-airbnb-base/rules/es6.js | 176 + .../rules/imports.js | 262 + .../eslint-config-airbnb-base/rules/node.js | 43 + .../eslint-config-airbnb-base/rules/strict.js | 6 + .../eslint-config-airbnb-base/rules/style.js | 528 + .../rules/variables.js | 44 + .../eslint-config-airbnb-base/test/.eslintrc | 8 + .../test/requires.js | 13 + .../test/test-base.js | 32 + .../eslint-config-airbnb-base/whitespace.js | 91 + .../eslint-config-airbnb/.babelrc | 3 + .../eslint-config-airbnb/.eslintrc | 8 + .../eslint-config-airbnb/CHANGELOG.md | 424 + .../eslint-config-airbnb/LICENSE.md | 21 + .../eslint-config-airbnb/README.md | 85 + .../node_modules/eslint-config-airbnb/base.js | 4 + .../eslint-config-airbnb/hooks.js | 6 + .../eslint-config-airbnb/index.js | 8 + .../eslint-config-airbnb/legacy.js | 4 + .../eslint-config-airbnb/package.json | 115 + .../eslint-config-airbnb/rules/react-a11y.js | 240 + .../eslint-config-airbnb/rules/react-hooks.js | 21 + .../eslint-config-airbnb/rules/react.js | 550 + .../eslint-config-airbnb/test/.eslintrc | 9 + .../eslint-config-airbnb/test/requires.js | 15 + .../eslint-config-airbnb/test/test-base.js | 34 + .../test/test-react-order.js | 91 + .../eslint-config-airbnb/whitespace.js | 105 + .../eslint-import-resolver-node/CHANGELOG.md | 52 + .../eslint-import-resolver-node/LICENSE | 22 + .../eslint-import-resolver-node/README.md | 44 + .../eslint-import-resolver-node/index.js | 47 + .../eslint-import-resolver-node/package.json | 74 + .../eslint-module-utils/.eslintrc.yml | 3 + .../eslint-module-utils/CHANGELOG.md | 103 + .../node_modules/eslint-module-utils/LICENSE | 22 + .../eslint-module-utils/ModuleCache.js | 47 + .../eslint-module-utils/declaredScope.js | 14 + .../node_modules/eslint-module-utils/hash.js | 59 + .../eslint-module-utils/ignore.js | 60 + .../eslint-module-utils/module-require.js | 30 + .../eslint-module-utils/moduleVisitor.js | 141 + .../eslint-module-utils/package.json | 60 + .../node_modules/eslint-module-utils/parse.js | 82 + .../eslint-module-utils/resolve.js | 241 + .../eslint-module-utils/unambiguous.js | 30 + .../eslint-plugin-import/CHANGELOG.md | 1124 ++ .../eslint-plugin-import/CONTRIBUTING.md | 116 + .../node_modules/eslint-plugin-import/LICENSE | 22 + .../eslint-plugin-import/README.md | 507 + .../eslint-plugin-import/RELEASE.md | 54 + .../eslint-plugin-import/SECURITY.md | 11 + .../eslint-plugin-import/config/electron.js | 8 + .../eslint-plugin-import/config/errors.js | 14 + .../config/react-native.js | 13 + .../eslint-plugin-import/config/react.js | 18 + .../config/recommended.js | 28 + .../eslint-plugin-import/config/stage-0.js | 12 + .../eslint-plugin-import/config/typescript.js | 22 + .../eslint-plugin-import/config/warnings.js | 12 + .../docs/rules/default.md | 71 + .../docs/rules/dynamic-import-chunkname.md | 85 + .../eslint-plugin-import/docs/rules/export.md | 32 + .../docs/rules/exports-last.md | 50 + .../docs/rules/extensions.md | 167 + .../eslint-plugin-import/docs/rules/first.md | 70 + .../docs/rules/group-exports.md | 99 + .../docs/rules/max-dependencies.md | 44 + .../eslint-plugin-import/docs/rules/named.md | 98 + .../docs/rules/namespace.md | 99 + .../docs/rules/newline-after-import.md | 87 + .../docs/rules/no-absolute-path.md | 48 + .../eslint-plugin-import/docs/rules/no-amd.md | 35 + .../docs/rules/no-anonymous-default-export.md | 73 + .../docs/rules/no-commonjs.md | 95 + .../docs/rules/no-cycle.md | 69 + .../docs/rules/no-default-export.md | 63 + .../docs/rules/no-deprecated.md | 61 + .../docs/rules/no-duplicates.md | 69 + .../docs/rules/no-dynamic-require.md | 23 + .../docs/rules/no-extraneous-dependencies.md | 124 + .../docs/rules/no-internal-modules.md | 64 + .../docs/rules/no-mutable-exports.md | 52 + .../docs/rules/no-named-as-default-member.md | 47 + .../docs/rules/no-named-as-default.md | 46 + .../docs/rules/no-named-default.md | 27 + .../docs/rules/no-named-export.md | 77 + .../docs/rules/no-namespace.md | 30 + .../docs/rules/no-nodejs-modules.md | 40 + .../docs/rules/no-relative-parent-imports.md | 120 + .../docs/rules/no-restricted-paths.md | 79 + .../docs/rules/no-self-import.md | 30 + .../docs/rules/no-unassigned-import.md | 59 + .../docs/rules/no-unresolved.md | 91 + .../docs/rules/no-unused-modules.md | 113 + .../docs/rules/no-useless-path-segments.md | 79 + .../docs/rules/no-webpack-loader-syntax.md | 36 + .../eslint-plugin-import/docs/rules/order.md | 259 + .../docs/rules/prefer-default-export.md | 58 + .../docs/rules/unambiguous.md | 54 + .../eslint-plugin-import/lib/ExportMap.js | 653 + .../lib/core/importType.js | 151 + .../lib/core/staticRequire.js | 11 + .../eslint-plugin-import/lib/docsUrl.js | 21 + .../lib/importDeclaration.js | 11 + .../eslint-plugin-import/lib/index.js | 73 + .../eslint-plugin-import/lib/rules/default.js | 48 + .../lib/rules/dynamic-import-chunkname.js | 126 + .../eslint-plugin-import/lib/rules/export.js | 173 + .../lib/rules/exports-last.js | 50 + .../lib/rules/extensions.js | 189 + .../eslint-plugin-import/lib/rules/first.js | 128 + .../lib/rules/group-exports.js | 133 + .../lib/rules/imports-first.js | 19 + .../lib/rules/max-dependencies.js | 71 + .../eslint-plugin-import/lib/rules/named.js | 76 + .../lib/rules/namespace.js | 223 + .../lib/rules/newline-after-import.js | 170 + .../lib/rules/no-absolute-path.js | 35 + .../eslint-plugin-import/lib/rules/no-amd.js | 46 + .../lib/rules/no-anonymous-default-export.js | 108 + .../lib/rules/no-commonjs.js | 128 + .../lib/rules/no-cycle.js | 105 + .../lib/rules/no-default-export.js | 39 + .../lib/rules/no-deprecated.js | 157 + .../lib/rules/no-duplicates.js | 289 + .../lib/rules/no-dynamic-require.js | 39 + .../lib/rules/no-extraneous-dependencies.js | 229 + .../lib/rules/no-internal-modules.js | 119 + .../lib/rules/no-mutable-exports.js | 67 + .../lib/rules/no-named-as-default-member.js | 110 + .../lib/rules/no-named-as-default.js | 52 + .../lib/rules/no-named-default.js | 32 + .../lib/rules/no-named-export.js | 42 + .../lib/rules/no-namespace.js | 147 + .../lib/rules/no-nodejs-modules.js | 60 + .../lib/rules/no-relative-parent-imports.js | 64 + .../lib/rules/no-restricted-paths.js | 144 + .../lib/rules/no-self-import.js | 56 + .../lib/rules/no-unassigned-import.js | 88 + .../lib/rules/no-unresolved.js | 58 + .../lib/rules/no-unused-modules.js | 942 + .../lib/rules/no-useless-path-segments.js | 151 + .../lib/rules/no-webpack-loader-syntax.js | 41 + .../eslint-plugin-import/lib/rules/order.js | 626 + .../lib/rules/prefer-default-export.js | 94 + .../lib/rules/unambiguous.js | 43 + .../eslint-plugin-import/memo-parser/LICENSE | 22 + .../memo-parser/README.md | 23 + .../eslint-plugin-import/memo-parser/index.js | 41 + .../memo-parser/package.json | 34 + .../node_modules/doctrine/CHANGELOG.md | 70 + .../node_modules/doctrine/LICENSE.BSD | 22 + .../doctrine/LICENSE.closure-compiler | 202 + .../node_modules/doctrine/LICENSE.esprima | 19 + .../node_modules/doctrine/README.md | 174 + .../node_modules/doctrine/lib/doctrine.js | 897 + .../node_modules/doctrine/lib/typed.js | 1283 ++ .../node_modules/doctrine/lib/utility.js | 35 + .../node_modules/doctrine/package.json | 96 + .../eslint-plugin-import/package.json | 149 + .../eslint-plugin-jsx-a11y/.babelrc | 13 + .../eslint-plugin-jsx-a11y/.eslintignore | 3 + .../eslint-plugin-jsx-a11y/.eslintrc | 14 + .../eslint-plugin-jsx-a11y/.watchmanconfig | 0 .../eslint-plugin-jsx-a11y/CHANGELOG.md | 408 + .../eslint-plugin-jsx-a11y/LICENSE.md | 8 + .../eslint-plugin-jsx-a11y/README.md | 298 + .../__mocks__/IdentifierMock.js | 6 + .../__mocks__/JSXAttributeMock.js | 24 + .../__mocks__/JSXElementMock.js | 37 + .../__mocks__/JSXExpressionContainerMock.js | 6 + .../__mocks__/JSXSpreadAttributeMock.js | 12 + .../__mocks__/JSXTextMock.js | 10 + .../__mocks__/LiteralMock.js | 10 + .../__mocks__/genInteractives.js | 206 + .../__tests__/__util__/parserOptionsMapper.js | 24 + .../__util__/ruleOptionsMapperFactory.js | 26 + .../__tests__/index-test.js | 39 + .../src/rules/accessible-emoji-test.js | 51 + .../__tests__/src/rules/alt-text-test.js | 248 + .../src/rules/anchor-has-content-test.js | 41 + .../src/rules/anchor-is-valid-test.js | 542 + ...aria-activedescendant-has-tabindex-test.js | 82 + .../__tests__/src/rules/aria-props-test.js | 69 + .../src/rules/aria-proptypes-test.js | 306 + .../__tests__/src/rules/aria-role-test.js | 79 + .../rules/aria-unsupported-elements-test.js | 71 + .../click-events-have-key-events-test.js | 75 + .../control-has-associated-label-test.js | 309 + .../src/rules/heading-has-content-test.js | 67 + .../__tests__/src/rules/html-has-lang-test.js | 40 + .../src/rules/iframe-has-title-test.js | 45 + .../src/rules/img-redundant-alt-test.js | 115 + .../rules/interactive-supports-focus-test.js | 248 + .../label-has-associated-control-test.js | 188 + .../__tests__/src/rules/label-has-for-test.js | 224 + .../__tests__/src/rules/lang-test.js | 42 + .../src/rules/media-has-caption-test.js | 138 + .../mouse-events-have-key-events-test.js | 67 + .../__tests__/src/rules/no-access-key-test.js | 48 + .../__tests__/src/rules/no-autofocus-test.js | 51 + .../src/rules/no-distracting-elements-test.js | 42 + ...ive-element-to-noninteractive-role-test.js | 389 + ...oninteractive-element-interactions-test.js | 465 + ...active-element-to-interactive-role-test.js | 484 + .../rules/no-noninteractive-tabindex-test.js | 79 + .../__tests__/src/rules/no-onchange-test.js | 46 + .../src/rules/no-redundant-roles-test.js | 64 + .../no-static-element-interactions-test.js | 455 + .../role-has-required-aria-props-test.js | 140 + .../rules/role-supports-aria-props-test.js | 448 + .../__tests__/src/rules/scope-test.js | 39 + .../src/rules/tabindex-no-positive-test.js | 55 + .../src/util/attributesComparator-test.js | 116 + .../src/util/getComputedRole-test.js | 71 + .../src/util/getExplicitRole-test.js | 30 + .../src/util/getImplicitRole-test.js | 21 + .../__tests__/src/util/getSuggestion-test.js | 49 + .../__tests__/src/util/getTabIndex-test.js | 83 + .../src/util/hasAccessibleChild-test.js | 89 + .../src/util/implicitRoles/input-test.js | 35 + .../src/util/implicitRoles/menu-test.js | 13 + .../src/util/implicitRoles/menuitem-test.js | 22 + .../__tests__/src/util/isAbstractRole-test.js | 40 + .../__tests__/src/util/isDOMElement-test.js | 27 + .../src/util/isDisabledElement-test.js | 82 + .../src/util/isInteractiveElement-test.js | 77 + .../src/util/isInteractiveRole-test.js | 45 + .../src/util/isNonInteractiveElement-test.js | 71 + .../src/util/isNonInteractiveRole-test.js | 45 + .../src/util/isNonLiteralProperty-test.js | 45 + .../src/util/isSemanticRoleElement-test.js | 48 + .../src/util/mayContainChildComponent-test.js | 107 + .../src/util/mayHaveAccessibleLabel-test.js | 170 + .../src/util/parserOptionsMapper-test.js | 47 + .../__tests__/src/util/schemas-test.js | 30 + .../docs/rules/accessible-emoji.md | 23 + .../docs/rules/alt-text.md | 143 + .../docs/rules/anchor-has-content.md | 53 + .../docs/rules/anchor-is-valid.md | 224 + .../aria-activedescendant-has-tabindex.md | 46 + .../docs/rules/aria-props.md | 22 + .../docs/rules/aria-proptypes.md | 24 + .../docs/rules/aria-role.md | 39 + .../docs/rules/aria-unsupported-elements.md | 23 + .../rules/click-events-have-key-events.md | 19 + .../rules/control-has-associated-label.md | 104 + .../docs/rules/heading-has-content.md | 60 + .../docs/rules/html-has-lang.md | 24 + .../docs/rules/iframe-has-title.md | 29 + .../docs/rules/img-redundant-alt.md | 38 + .../docs/rules/interactive-supports-focus.md | 143 + .../rules/label-has-associated-control.md | 139 + .../docs/rules/label-has-for.md | 114 + .../eslint-plugin-jsx-a11y/docs/rules/lang.md | 25 + .../docs/rules/media-has-caption.md | 41 + .../rules/mouse-events-have-key-events.md | 25 + .../docs/rules/no-access-key.md | 20 + .../docs/rules/no-autofocus.md | 35 + .../docs/rules/no-distracting-elements.md | 34 + ...eractive-element-to-noninteractive-role.md | 63 + .../no-noninteractive-element-interactions.md | 135 + ...interactive-element-to-interactive-role.md | 69 + .../docs/rules/no-noninteractive-tabindex.md | 87 + .../docs/rules/no-onchange.md | 27 + .../docs/rules/no-redundant-roles.md | 33 + .../rules/no-static-element-interactions.md | 97 + .../rules/role-has-required-aria-props.md | 24 + .../docs/rules/role-supports-aria-props.md | 32 + .../docs/rules/scope.md | 22 + .../docs/rules/tabindex-no-positive.md | 26 + .../eslint-plugin-jsx-a11y/lib/index.js | 170 + .../lib/rules/accessible-emoji.js | 59 + .../lib/rules/alt-text.js | 210 + .../lib/rules/anchor-has-content.js | 52 + .../lib/rules/anchor-is-valid.js | 115 + .../aria-activedescendant-has-tabindex.js | 70 + .../lib/rules/aria-props.js | 64 + .../lib/rules/aria-proptypes.js | 124 + .../lib/rules/aria-role.js | 84 + .../lib/rules/aria-unsupported-elements.js | 63 + .../lib/rules/click-events-have-key-events.js | 76 + .../lib/rules/control-has-associated-label.js | 101 + .../lib/rules/heading-has-content.js | 59 + .../lib/rules/html-has-lang.js | 45 + .../lib/rules/iframe-has-title.js | 45 + .../lib/rules/img-redundant-alt.js | 70 + .../lib/rules/interactive-supports-focus.js | 99 + .../lib/rules/label-has-associated-control.js | 118 + .../lib/rules/label-has-for.js | 153 + .../eslint-plugin-jsx-a11y/lib/rules/lang.js | 72 + .../lib/rules/media-has-caption.js | 98 + .../lib/rules/mouse-events-have-key-events.js | 63 + .../lib/rules/no-access-key.js | 38 + .../lib/rules/no-autofocus.js | 56 + .../lib/rules/no-distracting-elements.js | 48 + ...eractive-element-to-noninteractive-role.js | 87 + .../no-noninteractive-element-interactions.js | 97 + ...interactive-element-to-interactive-role.js | 86 + .../lib/rules/no-noninteractive-tabindex.js | 99 + .../lib/rules/no-onchange.js | 45 + .../lib/rules/no-redundant-roles.js | 81 + .../rules/no-static-element-interactions.js | 99 + .../lib/rules/role-has-required-aria-props.js | 92 + .../lib/rules/role-supports-aria-props.js | 79 + .../eslint-plugin-jsx-a11y/lib/rules/scope.js | 53 + .../lib/rules/tabindex-no-positive.js | 46 + .../lib/util/attributes/ISO.json | 390 + .../lib/util/attributesComparator.js | 40 + .../lib/util/getComputedRole.js | 22 + .../lib/util/getExplicitRole.js | 32 + .../lib/util/getImplicitRole.js | 30 + .../lib/util/getSuggestion.js | 35 + .../lib/util/getTabIndex.js | 37 + .../lib/util/hasAccessibleChild.js | 35 + .../lib/util/implicitRoles/a.js | 19 + .../lib/util/implicitRoles/area.js | 19 + .../lib/util/implicitRoles/article.js | 13 + .../lib/util/implicitRoles/aside.js | 13 + .../lib/util/implicitRoles/body.js | 13 + .../lib/util/implicitRoles/button.js | 13 + .../lib/util/implicitRoles/datalist.js | 13 + .../lib/util/implicitRoles/details.js | 13 + .../lib/util/implicitRoles/dialog.js | 13 + .../lib/util/implicitRoles/dl.js | 13 + .../lib/util/implicitRoles/form.js | 13 + .../lib/util/implicitRoles/h1.js | 13 + .../lib/util/implicitRoles/h2.js | 13 + .../lib/util/implicitRoles/h3.js | 13 + .../lib/util/implicitRoles/h4.js | 13 + .../lib/util/implicitRoles/h5.js | 13 + .../lib/util/implicitRoles/h6.js | 13 + .../lib/util/implicitRoles/hr.js | 13 + .../lib/util/implicitRoles/img.js | 21 + .../lib/util/implicitRoles/index.js | 123 + .../lib/util/implicitRoles/input.js | 49 + .../lib/util/implicitRoles/li.js | 13 + .../lib/util/implicitRoles/link.js | 19 + .../lib/util/implicitRoles/menu.js | 22 + .../lib/util/implicitRoles/menuitem.js | 35 + .../lib/util/implicitRoles/meter.js | 13 + .../lib/util/implicitRoles/nav.js | 13 + .../lib/util/implicitRoles/ol.js | 13 + .../lib/util/implicitRoles/option.js | 13 + .../lib/util/implicitRoles/output.js | 13 + .../lib/util/implicitRoles/progress.js | 13 + .../lib/util/implicitRoles/section.js | 13 + .../lib/util/implicitRoles/select.js | 13 + .../lib/util/implicitRoles/tbody.js | 13 + .../lib/util/implicitRoles/textarea.js | 13 + .../lib/util/implicitRoles/tfoot.js | 13 + .../lib/util/implicitRoles/thead.js | 13 + .../lib/util/implicitRoles/ul.js | 13 + .../lib/util/isAbstractRole.js | 33 + .../lib/util/isDOMElement.js | 26 + .../lib/util/isDisabledElement.js | 30 + .../lib/util/isHiddenFromScreenReader.js | 31 + .../lib/util/isInteractiveElement.js | 133 + .../lib/util/isInteractiveRole.js | 69 + .../lib/util/isNonInteractiveElement.js | 134 + .../lib/util/isNonInteractiveRole.js | 71 + .../lib/util/isNonLiteralProperty.js | 34 + .../lib/util/isPresentationRole.js | 17 + .../lib/util/isSemanticRoleElement.js | 68 + .../lib/util/mayContainChildComponent.js | 53 + .../lib/util/mayHaveAccessibleLabel.js | 93 + .../lib/util/schemas.js | 54 + .../node_modules/emoji-regex/LICENSE-MIT.txt | 20 + .../node_modules/emoji-regex/README.md | 73 + .../node_modules/emoji-regex/es2015/index.js | 6 + .../node_modules/emoji-regex/es2015/text.js | 6 + .../node_modules/emoji-regex/index.d.ts | 5 + .../node_modules/emoji-regex/index.js | 6 + .../node_modules/emoji-regex/package.json | 78 + .../node_modules/emoji-regex/text.js | 6 + .../eslint-plugin-jsx-a11y/package.json | 125 + .../scripts/addRuleToIndex.js | 53 + .../scripts/boilerplate/doc.js | 24 + .../scripts/boilerplate/rule.js | 35 + .../scripts/boilerplate/test.js | 34 + .../scripts/create-rule.js | 57 + .../scripts/create-rule.md | 21 + .../eslint-plugin-react-hooks/LICENSE | 21 + .../eslint-plugin-react-hooks/README.md | 45 + .../eslint-plugin-react-hooks/build-info.json | 8 + .../eslint-plugin-react-hooks.development.js | 2155 +++ ...slint-plugin-react-hooks.production.min.js | 52 + .../eslint-plugin-react-hooks/index.js | 9 + .../eslint-plugin-react-hooks/package.json | 59 + .../eslint-plugin-react/CHANGELOG.md | 2933 ++++ .../node_modules/eslint-plugin-react/LICENSE | 22 + .../eslint-plugin-react/README.md | 280 + .../node_modules/eslint-plugin-react/index.js | 161 + .../lib/rules/boolean-prop-naming.js | 324 + .../lib/rules/button-has-type.js | 136 + .../rules/default-props-match-prop-types.js | 96 + .../lib/rules/destructuring-assignment.js | 154 + .../lib/rules/display-name.js | 239 + .../lib/rules/forbid-component-props.js | 93 + .../lib/rules/forbid-dom-props.js | 74 + .../lib/rules/forbid-elements.js | 114 + .../lib/rules/forbid-foreign-prop-types.js | 129 + .../lib/rules/forbid-prop-types.js | 201 + .../rules/function-component-definition.js | 193 + .../lib/rules/jsx-boolean-value.js | 130 + .../lib/rules/jsx-child-element-spacing.js | 109 + .../lib/rules/jsx-closing-bracket-location.js | 290 + .../lib/rules/jsx-closing-tag-location.js | 70 + .../lib/rules/jsx-curly-brace-presence.js | 380 + .../lib/rules/jsx-curly-newline.js | 187 + .../lib/rules/jsx-curly-spacing.js | 406 + .../lib/rules/jsx-equals-spacing.js | 108 + .../lib/rules/jsx-filename-extension.js | 95 + .../lib/rules/jsx-first-prop-new-line.js | 70 + .../lib/rules/jsx-fragments.js | 190 + .../lib/rules/jsx-handler-names.js | 127 + .../lib/rules/jsx-indent-props.js | 159 + .../lib/rules/jsx-indent.js | 401 + .../eslint-plugin-react/lib/rules/jsx-key.js | 121 + .../lib/rules/jsx-max-depth.js | 150 + .../lib/rules/jsx-max-props-per-line.js | 105 + .../lib/rules/jsx-no-bind.js | 185 + .../lib/rules/jsx-no-comment-textnodes.js | 57 + .../lib/rules/jsx-no-duplicate-props.js | 70 + .../lib/rules/jsx-no-literals.js | 112 + .../lib/rules/jsx-no-script-url.js | 91 + .../lib/rules/jsx-no-target-blank.js | 112 + .../lib/rules/jsx-no-undef.js | 110 + .../lib/rules/jsx-no-useless-fragment.js | 212 + .../lib/rules/jsx-one-expression-per-line.js | 223 + .../lib/rules/jsx-pascal-case.js | 84 + .../lib/rules/jsx-props-no-multi-spaces.js | 90 + .../lib/rules/jsx-props-no-spreading.js | 127 + .../lib/rules/jsx-sort-default-props.js | 180 + .../lib/rules/jsx-sort-props.js | 359 + .../lib/rules/jsx-space-before-closing.js | 92 + .../lib/rules/jsx-tag-spacing.js | 291 + .../lib/rules/jsx-uses-react.js | 41 + .../lib/rules/jsx-uses-vars.js | 51 + .../lib/rules/jsx-wrap-multilines.js | 264 + .../lib/rules/no-access-state-in-setstate.js | 174 + .../lib/rules/no-adjacent-inline-elements.js | 115 + .../lib/rules/no-array-index-key.js | 226 + .../lib/rules/no-children-prop.js | 71 + .../lib/rules/no-danger-with-children.js | 149 + .../lib/rules/no-danger.js | 71 + .../lib/rules/no-deprecated.js | 220 + .../lib/rules/no-did-mount-set-state.js | 10 + .../lib/rules/no-did-update-set-state.js | 10 + .../lib/rules/no-direct-mutation-state.js | 147 + .../lib/rules/no-find-dom-node.js | 48 + .../lib/rules/no-is-mounted.js | 53 + .../lib/rules/no-multi-comp.js | 79 + .../no-redundant-should-component-update.js | 81 + .../lib/rules/no-render-return-value.js | 72 + .../lib/rules/no-set-state.js | 83 + .../lib/rules/no-string-refs.js | 115 + .../lib/rules/no-this-in-sfc.js | 45 + .../eslint-plugin-react/lib/rules/no-typos.js | 244 + .../lib/rules/no-unescaped-entities.js | 119 + .../lib/rules/no-unknown-property.js | 293 + .../lib/rules/no-unsafe.js | 136 + .../lib/rules/no-unused-prop-types.js | 146 + .../lib/rules/no-unused-state.js | 449 + .../lib/rules/no-will-update-set-state.js | 14 + .../lib/rules/prefer-es6-class.js | 51 + .../lib/rules/prefer-read-only-props.js | 75 + .../lib/rules/prefer-stateless-function.js | 381 + .../lib/rules/prop-types.js | 195 + .../lib/rules/react-in-jsx-scope.js | 50 + .../lib/rules/require-default-props.js | 104 + .../lib/rules/require-optimization.js | 230 + .../lib/rules/require-render-return.js | 93 + .../lib/rules/self-closing-comp.js | 102 + .../lib/rules/sort-comp.js | 443 + .../lib/rules/sort-prop-types.js | 248 + .../lib/rules/state-in-constructor.js | 59 + .../lib/rules/static-property-placement.js | 165 + .../lib/rules/style-prop-object.js | 133 + .../rules/void-dom-elements-no-children.js | 153 + .../eslint-plugin-react/lib/types.d.ts | 30 + .../lib/util/Components.js | 922 + .../lib/util/annotations.js | 32 + .../eslint-plugin-react/lib/util/ast.js | 215 + .../lib/util/defaultProps.js | 267 + .../eslint-plugin-react/lib/util/docsUrl.js | 7 + .../eslint-plugin-react/lib/util/error.js | 14 + .../lib/util/getTokenBeforeClosingBracket.js | 16 + .../eslint-plugin-react/lib/util/jsx.js | 94 + .../lib/util/linkComponents.js | 27 + .../eslint-plugin-react/lib/util/log.js | 14 + .../lib/util/makeNoMethodSetStateRule.js | 97 + .../eslint-plugin-react/lib/util/pragma.js | 61 + .../eslint-plugin-react/lib/util/propTypes.js | 740 + .../lib/util/propTypesSort.js | 164 + .../lib/util/propWrapper.js | 28 + .../eslint-plugin-react/lib/util/props.js | 102 + .../lib/util/usedPropTypes.js | 552 + .../eslint-plugin-react/lib/util/variable.js | 80 + .../eslint-plugin-react/lib/util/version.js | 120 + .../node_modules/doctrine/CHANGELOG.md | 94 + .../node_modules/doctrine/LICENSE | 177 + .../doctrine/LICENSE.closure-compiler | 202 + .../node_modules/doctrine/LICENSE.esprima | 19 + .../node_modules/doctrine/README.md | 165 + .../node_modules/doctrine/lib/doctrine.js | 899 + .../node_modules/doctrine/lib/typed.js | 1305 ++ .../node_modules/doctrine/lib/utility.js | 35 + .../node_modules/doctrine/package.json | 88 + .../eslint-plugin-react/package.json | 111 + .../node_modules/eslint-utils/LICENSE | 21 + .../node_modules/eslint-utils/README.md | 39 + .../node_modules/eslint-utils/index.js | 1827 ++ .../node_modules/eslint-utils/index.js.map | 1 + .../node_modules/eslint-utils/index.mjs | 1785 ++ .../node_modules/eslint-utils/index.mjs.map | 1 + .../node_modules/eslint-utils/package.json | 90 + .../eslint-visitor-keys/CHANGELOG.md | 17 + .../node_modules/eslint-visitor-keys/LICENSE | 201 + .../eslint-visitor-keys/README.md | 98 + .../eslint-visitor-keys/lib/index.js | 81 + .../eslint-visitor-keys/lib/visitor-keys.json | 280 + .../eslint-visitor-keys/package.json | 73 + .../node_modules/eslint/CHANGELOG.md | 5575 ++++++ tic-tac-toe-app/node_modules/eslint/LICENSE | 19 + tic-tac-toe-app/node_modules/eslint/README.md | 278 + .../node_modules/eslint/bin/eslint.js | 108 + .../eslint/conf/category-list.json | 40 + .../node_modules/eslint/conf/config-schema.js | 81 + .../eslint/conf/default-cli-options.js | 31 + .../node_modules/eslint/conf/environments.js | 167 + .../node_modules/eslint/conf/eslint-all.js | 31 + .../eslint/conf/eslint-recommended.js | 69 + .../eslint/conf/replacements.json | 22 + .../node_modules/eslint/lib/api.js | 32 + .../cascading-config-array-factory.js | 443 + .../eslint/lib/cli-engine/cli-engine.js | 1025 ++ .../lib/cli-engine/config-array-factory.js | 1039 ++ .../cli-engine/config-array/config-array.js | 476 + .../config-array/config-dependency.js | 116 + .../config-array/extracted-config.js | 146 + .../cli-engine/config-array/ignore-pattern.js | 231 + .../lib/cli-engine/config-array/index.js | 20 + .../config-array/override-tester.js | 195 + .../eslint/lib/cli-engine/file-enumerator.js | 492 + .../lib/cli-engine/formatters/checkstyle.js | 60 + .../lib/cli-engine/formatters/codeframe.js | 138 + .../lib/cli-engine/formatters/compact.js | 60 + .../formatters/html-template-message.html | 8 + .../formatters/html-template-page.html | 115 + .../formatters/html-template-result.html | 6 + .../eslint/lib/cli-engine/formatters/html.js | 140 + .../lib/cli-engine/formatters/jslint-xml.js | 41 + .../formatters/json-with-metadata.js | 16 + .../eslint/lib/cli-engine/formatters/json.js | 13 + .../eslint/lib/cli-engine/formatters/junit.js | 82 + .../lib/cli-engine/formatters/stylish.js | 101 + .../eslint/lib/cli-engine/formatters/table.js | 159 + .../eslint/lib/cli-engine/formatters/tap.js | 95 + .../eslint/lib/cli-engine/formatters/unix.js | 58 + .../lib/cli-engine/formatters/visualstudio.js | 63 + .../eslint/lib/cli-engine/hash.js | 35 + .../eslint/lib/cli-engine/index.js | 7 + .../lib/cli-engine/lint-result-cache.js | 142 + .../eslint/lib/cli-engine/load-rules.js | 46 + .../eslint/lib/cli-engine/xml-escape.js | 34 + .../node_modules/eslint/lib/cli.js | 241 + .../eslint/lib/init/autoconfig.js | 348 + .../eslint/lib/init/config-file.js | 143 + .../eslint/lib/init/config-initializer.js | 674 + .../eslint/lib/init/config-rule.js | 317 + .../node_modules/eslint/lib/init/npm-utils.js | 178 + .../eslint/lib/init/source-code-utils.js | 109 + .../lib/linter/apply-disable-directives.js | 167 + .../code-path-analysis/code-path-analyzer.js | 683 + .../code-path-analysis/code-path-segment.js | 237 + .../code-path-analysis/code-path-state.js | 1399 ++ .../linter/code-path-analysis/code-path.js | 238 + .../code-path-analysis/debug-helpers.js | 196 + .../linter/code-path-analysis/fork-context.js | 249 + .../linter/code-path-analysis/id-generator.js | 46 + .../lib/linter/config-comment-parser.js | 141 + .../node_modules/eslint/lib/linter/index.js | 13 + .../eslint/lib/linter/interpolate.js | 28 + .../node_modules/eslint/lib/linter/linter.js | 1451 ++ .../eslint/lib/linter/node-event-generator.js | 311 + .../eslint/lib/linter/report-translator.js | 347 + .../eslint/lib/linter/rule-fixer.js | 140 + .../node_modules/eslint/lib/linter/rules.js | 77 + .../eslint/lib/linter/safe-emitter.js | 52 + .../eslint/lib/linter/source-code-fixer.js | 152 + .../node_modules/eslint/lib/linter/timing.js | 139 + .../node_modules/eslint/lib/options.js | 263 + .../eslint/lib/rule-tester/index.js | 5 + .../eslint/lib/rule-tester/rule-tester.js | 680 + .../eslint/lib/rules/accessor-pairs.js | 367 + .../eslint/lib/rules/array-bracket-newline.js | 258 + .../eslint/lib/rules/array-bracket-spacing.js | 241 + .../eslint/lib/rules/array-callback-return.js | 253 + .../eslint/lib/rules/array-element-newline.js | 259 + .../eslint/lib/rules/arrow-body-style.js | 240 + .../eslint/lib/rules/arrow-parens.js | 184 + .../eslint/lib/rules/arrow-spacing.js | 161 + .../eslint/lib/rules/block-scoped-var.js | 122 + .../eslint/lib/rules/block-spacing.js | 147 + .../eslint/lib/rules/brace-style.js | 188 + .../eslint/lib/rules/callback-return.js | 182 + .../eslint/lib/rules/camelcase.js | 241 + .../eslint/lib/rules/capitalized-comments.js | 300 + .../lib/rules/class-methods-use-this.js | 125 + .../eslint/lib/rules/comma-dangle.js | 340 + .../eslint/lib/rules/comma-spacing.js | 195 + .../eslint/lib/rules/comma-style.js | 315 + .../eslint/lib/rules/complexity.js | 160 + .../lib/rules/computed-property-spacing.js | 204 + .../eslint/lib/rules/consistent-return.js | 196 + .../eslint/lib/rules/consistent-this.js | 151 + .../eslint/lib/rules/constructor-super.js | 395 + .../node_modules/eslint/lib/rules/curly.js | 404 + .../eslint/lib/rules/default-case.js | 97 + .../eslint/lib/rules/default-param-last.js | 62 + .../eslint/lib/rules/dot-location.js | 99 + .../eslint/lib/rules/dot-notation.js | 173 + .../node_modules/eslint/lib/rules/eol-last.js | 112 + .../node_modules/eslint/lib/rules/eqeqeq.js | 174 + .../eslint/lib/rules/for-direction.js | 126 + .../eslint/lib/rules/func-call-spacing.js | 178 + .../eslint/lib/rules/func-name-matching.js | 252 + .../eslint/lib/rules/func-names.js | 183 + .../eslint/lib/rules/func-style.js | 98 + .../rules/function-call-argument-newline.js | 122 + .../lib/rules/function-paren-newline.js | 281 + .../lib/rules/generator-star-spacing.js | 206 + .../eslint/lib/rules/getter-return.js | 183 + .../eslint/lib/rules/global-require.js | 81 + .../lib/rules/grouped-accessor-pairs.js | 224 + .../eslint/lib/rules/guard-for-in.js | 76 + .../eslint/lib/rules/handle-callback-err.js | 95 + .../eslint/lib/rules/id-blacklist.js | 127 + .../eslint/lib/rules/id-length.js | 122 + .../node_modules/eslint/lib/rules/id-match.js | 225 + .../lib/rules/implicit-arrow-linebreak.js | 81 + .../eslint/lib/rules/indent-legacy.js | 1141 ++ .../node_modules/eslint/lib/rules/indent.js | 1668 ++ .../node_modules/eslint/lib/rules/index.js | 290 + .../eslint/lib/rules/init-declarations.js | 139 + .../eslint/lib/rules/jsx-quotes.js | 95 + .../eslint/lib/rules/key-spacing.js | 671 + .../eslint/lib/rules/keyword-spacing.js | 566 + .../eslint/lib/rules/line-comment-position.js | 122 + .../eslint/lib/rules/linebreak-style.js | 99 + .../eslint/lib/rules/lines-around-comment.js | 404 + .../lib/rules/lines-around-directive.js | 201 + .../lib/rules/lines-between-class-members.js | 133 + .../eslint/lib/rules/max-classes-per-file.js | 65 + .../eslint/lib/rules/max-depth.js | 154 + .../node_modules/eslint/lib/rules/max-len.js | 380 + .../lib/rules/max-lines-per-function.js | 217 + .../eslint/lib/rules/max-lines.js | 148 + .../eslint/lib/rules/max-nested-callbacks.js | 117 + .../eslint/lib/rules/max-params.js | 103 + .../lib/rules/max-statements-per-line.js | 196 + .../eslint/lib/rules/max-statements.js | 175 + .../lib/rules/multiline-comment-style.js | 431 + .../eslint/lib/rules/multiline-ternary.js | 95 + .../node_modules/eslint/lib/rules/new-cap.js | 283 + .../eslint/lib/rules/new-parens.js | 99 + .../eslint/lib/rules/newline-after-var.js | 255 + .../eslint/lib/rules/newline-before-return.js | 217 + .../lib/rules/newline-per-chained-call.js | 110 + .../node_modules/eslint/lib/rules/no-alert.js | 127 + .../eslint/lib/rules/no-array-constructor.js | 54 + .../lib/rules/no-async-promise-executor.js | 39 + .../eslint/lib/rules/no-await-in-loop.js | 106 + .../eslint/lib/rules/no-bitwise.js | 119 + .../eslint/lib/rules/no-buffer-constructor.js | 45 + .../eslint/lib/rules/no-caller.js | 46 + .../eslint/lib/rules/no-case-declarations.js | 64 + .../eslint/lib/rules/no-catch-shadow.js | 80 + .../eslint/lib/rules/no-class-assign.js | 61 + .../eslint/lib/rules/no-compare-neg-zero.js | 60 + .../eslint/lib/rules/no-cond-assign.js | 159 + .../eslint/lib/rules/no-confusing-arrow.js | 85 + .../eslint/lib/rules/no-console.js | 134 + .../eslint/lib/rules/no-const-assign.js | 54 + .../eslint/lib/rules/no-constant-condition.js | 239 + .../eslint/lib/rules/no-constructor-return.js | 62 + .../eslint/lib/rules/no-continue.js | 39 + .../eslint/lib/rules/no-control-regex.js | 113 + .../eslint/lib/rules/no-debugger.js | 43 + .../eslint/lib/rules/no-delete-var.js | 42 + .../eslint/lib/rules/no-div-regex.js | 53 + .../eslint/lib/rules/no-dupe-args.js | 80 + .../eslint/lib/rules/no-dupe-class-members.js | 115 + .../eslint/lib/rules/no-dupe-else-if.js | 122 + .../eslint/lib/rules/no-dupe-keys.js | 143 + .../eslint/lib/rules/no-duplicate-case.js | 52 + .../eslint/lib/rules/no-duplicate-imports.js | 142 + .../eslint/lib/rules/no-else-return.js | 404 + .../lib/rules/no-empty-character-class.js | 64 + .../eslint/lib/rules/no-empty-function.js | 165 + .../eslint/lib/rules/no-empty-pattern.js | 43 + .../node_modules/eslint/lib/rules/no-empty.js | 86 + .../eslint/lib/rules/no-eq-null.js | 46 + .../node_modules/eslint/lib/rules/no-eval.js | 306 + .../eslint/lib/rules/no-ex-assign.js | 52 + .../eslint/lib/rules/no-extend-native.js | 181 + .../eslint/lib/rules/no-extra-bind.js | 173 + .../eslint/lib/rules/no-extra-boolean-cast.js | 176 + .../eslint/lib/rules/no-extra-label.js | 149 + .../eslint/lib/rules/no-extra-parens.js | 1034 ++ .../eslint/lib/rules/no-extra-semi.js | 126 + .../eslint/lib/rules/no-fallthrough.js | 142 + .../eslint/lib/rules/no-floating-decimal.js | 70 + .../eslint/lib/rules/no-func-assign.js | 66 + .../eslint/lib/rules/no-global-assign.js | 88 + .../eslint/lib/rules/no-implicit-coercion.js | 296 + .../eslint/lib/rules/no-implicit-globals.js | 140 + .../eslint/lib/rules/no-implied-eval.js | 163 + .../eslint/lib/rules/no-import-assign.js | 238 + .../eslint/lib/rules/no-inline-comments.js | 82 + .../eslint/lib/rules/no-inner-declarations.js | 92 + .../eslint/lib/rules/no-invalid-regexp.js | 126 + .../eslint/lib/rules/no-invalid-this.js | 138 + .../lib/rules/no-irregular-whitespace.js | 239 + .../eslint/lib/rules/no-iterator.js | 41 + .../eslint/lib/rules/no-label-var.js | 72 + .../eslint/lib/rules/no-labels.js | 143 + .../eslint/lib/rules/no-lone-blocks.js | 120 + .../eslint/lib/rules/no-lonely-if.js | 85 + .../eslint/lib/rules/no-loop-func.js | 204 + .../eslint/lib/rules/no-magic-numbers.js | 167 + .../rules/no-misleading-character-class.js | 200 + .../eslint/lib/rules/no-mixed-operators.js | 240 + .../eslint/lib/rules/no-mixed-requires.js | 222 + .../lib/rules/no-mixed-spaces-and-tabs.js | 146 + .../eslint/lib/rules/no-multi-assign.js | 45 + .../eslint/lib/rules/no-multi-spaces.js | 134 + .../eslint/lib/rules/no-multi-str.js | 58 + .../lib/rules/no-multiple-empty-lines.js | 139 + .../eslint/lib/rules/no-native-reassign.js | 93 + .../eslint/lib/rules/no-negated-condition.js | 85 + .../eslint/lib/rules/no-negated-in-lhs.js | 42 + .../eslint/lib/rules/no-nested-ternary.js | 37 + .../eslint/lib/rules/no-new-func.js | 48 + .../eslint/lib/rules/no-new-object.js | 38 + .../eslint/lib/rules/no-new-require.js | 38 + .../eslint/lib/rules/no-new-symbol.js | 46 + .../eslint/lib/rules/no-new-wrappers.js | 40 + .../node_modules/eslint/lib/rules/no-new.js | 36 + .../eslint/lib/rules/no-obj-calls.js | 62 + .../eslint/lib/rules/no-octal-escape.js | 56 + .../node_modules/eslint/lib/rules/no-octal.js | 38 + .../eslint/lib/rules/no-param-reassign.js | 216 + .../eslint/lib/rules/no-path-concat.js | 52 + .../eslint/lib/rules/no-plusplus.js | 65 + .../eslint/lib/rules/no-process-env.js | 42 + .../eslint/lib/rules/no-process-exit.js | 38 + .../node_modules/eslint/lib/rules/no-proto.js | 41 + .../eslint/lib/rules/no-prototype-builtins.js | 57 + .../eslint/lib/rules/no-redeclare.js | 172 + .../eslint/lib/rules/no-regex-spaces.js | 176 + .../eslint/lib/rules/no-restricted-globals.js | 123 + .../eslint/lib/rules/no-restricted-imports.js | 286 + .../eslint/lib/rules/no-restricted-modules.js | 180 + .../lib/rules/no-restricted-properties.js | 176 + .../eslint/lib/rules/no-restricted-syntax.js | 65 + .../eslint/lib/rules/no-return-assign.js | 75 + .../eslint/lib/rules/no-return-await.js | 101 + .../eslint/lib/rules/no-script-url.js | 44 + .../eslint/lib/rules/no-self-assign.js | 229 + .../eslint/lib/rules/no-self-compare.js | 56 + .../eslint/lib/rules/no-sequences.js | 115 + .../eslint/lib/rules/no-setter-return.js | 227 + .../lib/rules/no-shadow-restricted-names.js | 60 + .../eslint/lib/rules/no-shadow.js | 188 + .../eslint/lib/rules/no-spaced-func.js | 79 + .../eslint/lib/rules/no-sparse-arrays.js | 46 + .../node_modules/eslint/lib/rules/no-sync.js | 57 + .../node_modules/eslint/lib/rules/no-tabs.js | 74 + .../lib/rules/no-template-curly-in-string.js | 40 + .../eslint/lib/rules/no-ternary.js | 37 + .../eslint/lib/rules/no-this-before-super.js | 300 + .../eslint/lib/rules/no-throw-literal.js | 51 + .../eslint/lib/rules/no-trailing-spaces.js | 186 + .../eslint/lib/rules/no-undef-init.js | 71 + .../node_modules/eslint/lib/rules/no-undef.js | 78 + .../eslint/lib/rules/no-undefined.js | 80 + .../eslint/lib/rules/no-underscore-dangle.js | 228 + .../lib/rules/no-unexpected-multiline.js | 110 + .../lib/rules/no-unmodified-loop-condition.js | 356 + .../eslint/lib/rules/no-unneeded-ternary.js | 161 + .../eslint/lib/rules/no-unreachable.js | 214 + .../eslint/lib/rules/no-unsafe-finally.js | 107 + .../eslint/lib/rules/no-unsafe-negation.js | 127 + .../eslint/lib/rules/no-unused-expressions.js | 136 + .../eslint/lib/rules/no-unused-labels.js | 110 + .../eslint/lib/rules/no-unused-vars.js | 620 + .../eslint/lib/rules/no-use-before-define.js | 229 + .../eslint/lib/rules/no-useless-call.js | 83 + .../eslint/lib/rules/no-useless-catch.js | 52 + .../lib/rules/no-useless-computed-key.js | 104 + .../eslint/lib/rules/no-useless-concat.js | 111 + .../lib/rules/no-useless-constructor.js | 177 + .../eslint/lib/rules/no-useless-escape.js | 252 + .../eslint/lib/rules/no-useless-rename.js | 164 + .../eslint/lib/rules/no-useless-return.js | 301 + .../node_modules/eslint/lib/rules/no-var.js | 330 + .../node_modules/eslint/lib/rules/no-void.js | 40 + .../eslint/lib/rules/no-warning-comments.js | 159 + .../rules/no-whitespace-before-property.js | 97 + .../node_modules/eslint/lib/rules/no-with.js | 35 + .../rules/nonblock-statement-body-position.js | 119 + .../eslint/lib/rules/object-curly-newline.js | 299 + .../eslint/lib/rules/object-curly-spacing.js | 301 + .../lib/rules/object-property-newline.js | 94 + .../eslint/lib/rules/object-shorthand.js | 498 + .../lib/rules/one-var-declaration-per-line.js | 89 + .../node_modules/eslint/lib/rules/one-var.js | 525 + .../eslint/lib/rules/operator-assignment.js | 243 + .../eslint/lib/rules/operator-linebreak.js | 255 + .../eslint/lib/rules/padded-blocks.js | 282 + .../rules/padding-line-between-statements.js | 627 + .../eslint/lib/rules/prefer-arrow-callback.js | 310 + .../eslint/lib/rules/prefer-const.js | 476 + .../eslint/lib/rules/prefer-destructuring.js | 268 + .../rules/prefer-exponentiation-operator.js | 189 + .../lib/rules/prefer-named-capture-group.js | 110 + .../lib/rules/prefer-numeric-literals.js | 147 + .../eslint/lib/rules/prefer-object-spread.js | 265 + .../lib/rules/prefer-promise-reject-errors.js | 129 + .../eslint/lib/rules/prefer-reflect.js | 123 + .../eslint/lib/rules/prefer-regex-literals.js | 125 + .../eslint/lib/rules/prefer-rest-params.js | 111 + .../eslint/lib/rules/prefer-spread.js | 87 + .../eslint/lib/rules/prefer-template.js | 279 + .../eslint/lib/rules/quote-props.js | 301 + .../node_modules/eslint/lib/rules/quotes.js | 328 + .../node_modules/eslint/lib/rules/radix.js | 169 + .../lib/rules/require-atomic-updates.js | 283 + .../eslint/lib/rules/require-await.js | 109 + .../eslint/lib/rules/require-jsdoc.js | 117 + .../lib/rules/require-unicode-regexp.js | 69 + .../eslint/lib/rules/require-yield.js | 74 + .../eslint/lib/rules/rest-spread-spacing.js | 118 + .../eslint/lib/rules/semi-spacing.js | 212 + .../eslint/lib/rules/semi-style.js | 147 + .../node_modules/eslint/lib/rules/semi.js | 331 + .../eslint/lib/rules/sort-imports.js | 207 + .../eslint/lib/rules/sort-keys.js | 183 + .../eslint/lib/rules/sort-vars.js | 100 + .../eslint/lib/rules/space-before-blocks.js | 159 + .../lib/rules/space-before-function-paren.js | 156 + .../eslint/lib/rules/space-in-parens.js | 282 + .../eslint/lib/rules/space-infix-ops.js | 165 + .../eslint/lib/rules/space-unary-ops.js | 321 + .../eslint/lib/rules/spaced-comment.js | 373 + .../node_modules/eslint/lib/rules/strict.js | 277 + .../eslint/lib/rules/switch-colon-spacing.js | 141 + .../eslint/lib/rules/symbol-description.js | 71 + .../lib/rules/template-curly-spacing.js | 124 + .../eslint/lib/rules/template-tag-spacing.js | 84 + .../eslint/lib/rules/unicode-bom.js | 73 + .../eslint/lib/rules/use-isnan.js | 138 + .../eslint/lib/rules/utils/ast-utils.js | 1393 ++ .../eslint/lib/rules/utils/fix-tracker.js | 114 + .../eslint/lib/rules/utils/keywords.js | 67 + .../lib/rules/utils/lazy-loading-rule-map.js | 115 + .../lib/rules/utils/patterns/letters.js | 36 + .../eslint/lib/rules/utils/unicode/index.js | 11 + .../utils/unicode/is-combining-character.js | 13 + .../rules/utils/unicode/is-emoji-modifier.js | 13 + .../unicode/is-regional-indicator-symbol.js | 13 + .../rules/utils/unicode/is-surrogate-pair.js | 14 + .../eslint/lib/rules/valid-jsdoc.js | 515 + .../eslint/lib/rules/valid-typeof.js | 85 + .../eslint/lib/rules/vars-on-top.js | 144 + .../eslint/lib/rules/wrap-iife.js | 160 + .../eslint/lib/rules/wrap-regex.js | 59 + .../eslint/lib/rules/yield-star-spacing.js | 127 + .../node_modules/eslint/lib/rules/yoda.js | 327 + .../node_modules/eslint/lib/shared/ajv.js | 34 + .../eslint/lib/shared/ast-utils.js | 29 + .../eslint/lib/shared/config-ops.js | 130 + .../eslint/lib/shared/config-validator.js | 351 + .../node_modules/eslint/lib/shared/logging.js | 30 + .../node_modules/eslint/lib/shared/naming.js | 97 + .../lib/shared/relative-module-resolver.js | 58 + .../eslint/lib/shared/runtime-info.js | 163 + .../eslint/lib/shared/traverser.js | 195 + .../node_modules/eslint/lib/shared/types.js | 143 + .../eslint/lib/source-code/index.js | 5 + .../eslint/lib/source-code/source-code.js | 585 + .../backward-token-comment-cursor.js | 57 + .../token-store/backward-token-cursor.js | 58 + .../lib/source-code/token-store/cursor.js | 76 + .../lib/source-code/token-store/cursors.js | 90 + .../token-store/decorative-cursor.js | 39 + .../source-code/token-store/filter-cursor.js | 43 + .../forward-token-comment-cursor.js | 57 + .../token-store/forward-token-cursor.js | 63 + .../lib/source-code/token-store/index.js | 627 + .../source-code/token-store/limit-cursor.js | 40 + .../token-store/padded-token-cursor.js | 38 + .../source-code/token-store/skip-cursor.js | 42 + .../lib/source-code/token-store/utils.js | 100 + .../eslint/messages/all-files-ignored.txt | 8 + .../eslint/messages/extend-config-missing.txt | 5 + .../eslint/messages/failed-to-read-json.txt | 3 + .../eslint/messages/file-not-found.txt | 2 + .../eslint/messages/no-config-found.txt | 7 + .../eslint/messages/plugin-missing.txt | 11 + .../print-config-with-directory-path.txt | 2 + .../eslint/messages/whitespace-found.txt | 3 + .../eslint/node_modules/ajv/.tonic_example.js | 20 + .../eslint/node_modules/ajv/LICENSE | 22 + .../eslint/node_modules/ajv/README.md | 1452 ++ .../node_modules/ajv/dist/ajv.bundle.js | 7165 ++++++++ .../eslint/node_modules/ajv/dist/ajv.min.js | 3 + .../node_modules/ajv/dist/ajv.min.js.map | 1 + .../eslint/node_modules/ajv/lib/ajv.d.ts | 395 + .../eslint/node_modules/ajv/lib/ajv.js | 506 + .../eslint/node_modules/ajv/lib/cache.js | 26 + .../node_modules/ajv/lib/compile/async.js | 90 + .../node_modules/ajv/lib/compile/equal.js | 5 + .../ajv/lib/compile/error_classes.js | 34 + .../node_modules/ajv/lib/compile/formats.js | 142 + .../node_modules/ajv/lib/compile/index.js | 387 + .../node_modules/ajv/lib/compile/resolve.js | 270 + .../node_modules/ajv/lib/compile/rules.js | 66 + .../ajv/lib/compile/schema_obj.js | 9 + .../ajv/lib/compile/ucs2length.js | 20 + .../node_modules/ajv/lib/compile/util.js | 274 + .../eslint/node_modules/ajv/lib/data.js | 49 + .../node_modules/ajv/lib/definition_schema.js | 37 + .../node_modules/ajv/lib/dot/_limit.jst | 104 + .../node_modules/ajv/lib/dot/_limitItems.jst | 10 + .../node_modules/ajv/lib/dot/_limitLength.jst | 10 + .../ajv/lib/dot/_limitProperties.jst | 10 + .../eslint/node_modules/ajv/lib/dot/allOf.jst | 34 + .../eslint/node_modules/ajv/lib/dot/anyOf.jst | 48 + .../node_modules/ajv/lib/dot/coerce.def | 61 + .../node_modules/ajv/lib/dot/comment.jst | 9 + .../eslint/node_modules/ajv/lib/dot/const.jst | 11 + .../node_modules/ajv/lib/dot/contains.jst | 57 + .../node_modules/ajv/lib/dot/custom.jst | 191 + .../node_modules/ajv/lib/dot/defaults.def | 47 + .../node_modules/ajv/lib/dot/definitions.def | 201 + .../node_modules/ajv/lib/dot/dependencies.jst | 80 + .../eslint/node_modules/ajv/lib/dot/enum.jst | 30 + .../node_modules/ajv/lib/dot/errors.def | 194 + .../node_modules/ajv/lib/dot/format.jst | 106 + .../eslint/node_modules/ajv/lib/dot/if.jst | 75 + .../eslint/node_modules/ajv/lib/dot/items.jst | 100 + .../node_modules/ajv/lib/dot/missing.def | 39 + .../node_modules/ajv/lib/dot/multipleOf.jst | 20 + .../eslint/node_modules/ajv/lib/dot/not.jst | 43 + .../eslint/node_modules/ajv/lib/dot/oneOf.jst | 54 + .../node_modules/ajv/lib/dot/pattern.jst | 14 + .../node_modules/ajv/lib/dot/properties.jst | 244 + .../ajv/lib/dot/propertyNames.jst | 54 + .../eslint/node_modules/ajv/lib/dot/ref.jst | 85 + .../node_modules/ajv/lib/dot/required.jst | 108 + .../node_modules/ajv/lib/dot/uniqueItems.jst | 62 + .../node_modules/ajv/lib/dot/validate.jst | 282 + .../node_modules/ajv/lib/dotjs/README.md | 3 + .../node_modules/ajv/lib/dotjs/_limit.js | 157 + .../node_modules/ajv/lib/dotjs/_limitItems.js | 77 + .../ajv/lib/dotjs/_limitLength.js | 82 + .../ajv/lib/dotjs/_limitProperties.js | 77 + .../node_modules/ajv/lib/dotjs/allOf.js | 43 + .../node_modules/ajv/lib/dotjs/anyOf.js | 74 + .../node_modules/ajv/lib/dotjs/comment.js | 14 + .../node_modules/ajv/lib/dotjs/const.js | 56 + .../node_modules/ajv/lib/dotjs/contains.js | 82 + .../node_modules/ajv/lib/dotjs/custom.js | 228 + .../ajv/lib/dotjs/dependencies.js | 168 + .../eslint/node_modules/ajv/lib/dotjs/enum.js | 66 + .../node_modules/ajv/lib/dotjs/format.js | 150 + .../eslint/node_modules/ajv/lib/dotjs/if.js | 104 + .../node_modules/ajv/lib/dotjs/index.js | 33 + .../node_modules/ajv/lib/dotjs/items.js | 141 + .../node_modules/ajv/lib/dotjs/multipleOf.js | 77 + .../eslint/node_modules/ajv/lib/dotjs/not.js | 84 + .../node_modules/ajv/lib/dotjs/oneOf.js | 73 + .../node_modules/ajv/lib/dotjs/pattern.js | 75 + .../node_modules/ajv/lib/dotjs/properties.js | 330 + .../ajv/lib/dotjs/propertyNames.js | 82 + .../eslint/node_modules/ajv/lib/dotjs/ref.js | 124 + .../node_modules/ajv/lib/dotjs/required.js | 270 + .../node_modules/ajv/lib/dotjs/uniqueItems.js | 86 + .../node_modules/ajv/lib/dotjs/validate.js | 494 + .../eslint/node_modules/ajv/lib/keyword.js | 146 + .../node_modules/ajv/lib/refs/data.json | 17 + .../ajv/lib/refs/json-schema-draft-04.json | 149 + .../ajv/lib/refs/json-schema-draft-06.json | 154 + .../ajv/lib/refs/json-schema-draft-07.json | 168 + .../ajv/lib/refs/json-schema-secure.json | 94 + .../eslint/node_modules/ajv/package.json | 129 + .../node_modules/ajv/scripts/.eslintrc.yml | 3 + .../eslint/node_modules/ajv/scripts/bundle.js | 61 + .../node_modules/ajv/scripts/compile-dots.js | 73 + .../eslint/node_modules/ajv/scripts/info | 10 + .../node_modules/ajv/scripts/prepare-tests | 12 + .../ajv/scripts/publish-built-version | 32 + .../node_modules/ajv/scripts/travis-gh-pages | 23 + .../eslint/node_modules/ansi-regex/index.js | 14 + .../eslint/node_modules/ansi-regex/license | 9 + .../node_modules/ansi-regex/package.json | 85 + .../eslint/node_modules/ansi-regex/readme.md | 87 + .../node_modules/cross-spawn/CHANGELOG.md | 100 + .../eslint/node_modules/cross-spawn/LICENSE | 21 + .../eslint/node_modules/cross-spawn/README.md | 94 + .../eslint/node_modules/cross-spawn/index.js | 39 + .../node_modules/cross-spawn/lib/enoent.js | 59 + .../node_modules/cross-spawn/lib/parse.js | 125 + .../cross-spawn/lib/util/escape.js | 45 + .../cross-spawn/lib/util/readShebang.js | 32 + .../cross-spawn/lib/util/resolveCommand.js | 47 + .../cross-spawn/node_modules/.bin/semver | 1 + .../node_modules/semver/CHANGELOG.md | 39 + .../cross-spawn/node_modules/semver/LICENSE | 15 + .../cross-spawn/node_modules/semver/README.md | 412 + .../node_modules/semver/bin/semver | 160 + .../node_modules/semver/package.json | 60 + .../cross-spawn/node_modules/semver/range.bnf | 16 + .../cross-spawn/node_modules/semver/semver.js | 1483 ++ .../node_modules/cross-spawn/package.json | 107 + .../eslint/node_modules/debug/CHANGELOG.md | 395 + .../eslint/node_modules/debug/LICENSE | 19 + .../eslint/node_modules/debug/README.md | 455 + .../eslint/node_modules/debug/dist/debug.js | 912 + .../eslint/node_modules/debug/package.json | 102 + .../eslint/node_modules/debug/src/browser.js | 264 + .../eslint/node_modules/debug/src/common.js | 266 + .../eslint/node_modules/debug/src/index.js | 10 + .../eslint/node_modules/debug/src/node.js | 257 + .../node_modules/fast-deep-equal/LICENSE | 21 + .../node_modules/fast-deep-equal/README.md | 96 + .../fast-deep-equal/es6/index.d.ts | 2 + .../node_modules/fast-deep-equal/es6/index.js | 72 + .../fast-deep-equal/es6/react.d.ts | 2 + .../node_modules/fast-deep-equal/es6/react.js | 79 + .../node_modules/fast-deep-equal/index.d.ts | 4 + .../node_modules/fast-deep-equal/index.js | 46 + .../node_modules/fast-deep-equal/package.json | 88 + .../node_modules/fast-deep-equal/react.d.ts | 2 + .../node_modules/fast-deep-equal/react.js | 53 + .../eslint/node_modules/ms/index.js | 162 + .../eslint/node_modules/ms/license.md | 21 + .../eslint/node_modules/ms/package.json | 69 + .../eslint/node_modules/ms/readme.md | 60 + .../eslint/node_modules/strip-ansi/index.d.ts | 15 + .../eslint/node_modules/strip-ansi/index.js | 7 + .../eslint/node_modules/strip-ansi/license | 9 + .../node_modules/strip-ansi/package.json | 86 + .../eslint/node_modules/strip-ansi/readme.md | 61 + .../strip-json-comments/index.d.ts | 36 + .../node_modules/strip-json-comments/index.js | 77 + .../node_modules/strip-json-comments/license | 9 + .../strip-json-comments/package.json | 77 + .../strip-json-comments/readme.md | 84 + .../node_modules/eslint/package.json | 187 + .../node_modules/espree/CHANGELOG.md | 479 + tic-tac-toe-app/node_modules/espree/LICENSE | 22 + tic-tac-toe-app/node_modules/espree/README.md | 164 + tic-tac-toe-app/node_modules/espree/espree.js | 177 + .../node_modules/espree/lib/ast-node-types.js | 96 + .../node_modules/espree/lib/espree.js | 286 + .../node_modules/espree/lib/features.js | 29 + .../node_modules/espree/lib/options.js | 105 + .../espree/lib/token-translator.js | 262 + .../node_modules/espree/lib/visitor-keys.js | 123 + .../node_modules/espree/package.json | 93 + .../node_modules/esrecurse/.babelrc | 3 + .../node_modules/esrecurse/README.md | 171 + .../node_modules/esrecurse/esrecurse.js | 117 + .../node_modules/esrecurse/gulpfile.babel.js | 92 + .../node_modules/esrecurse/package.json | 80 + .../node_modules/estraverse/.jshintrc | 16 + .../node_modules/estraverse/LICENSE.BSD | 19 + .../node_modules/estraverse/README.md | 153 + .../node_modules/estraverse/estraverse.js | 782 + .../node_modules/estraverse/gulpfile.js | 70 + .../node_modules/estraverse/package.json | 69 + .../node_modules/external-editor/LICENSE | 21 + .../node_modules/external-editor/README.md | 171 + .../external-editor/example_async.js | 40 + .../external-editor/example_sync.js | 38 + .../main/errors/CreateFileError.d.ts | 10 + .../main/errors/CreateFileError.js | 39 + .../main/errors/LaunchEditorError.d.ts | 10 + .../main/errors/LaunchEditorError.js | 39 + .../main/errors/ReadFileError.d.ts | 10 + .../main/errors/ReadFileError.js | 39 + .../main/errors/RemoveFileError.d.ts | 10 + .../main/errors/RemoveFileError.js | 39 + .../external-editor/main/index.d.ts | 46 + .../external-editor/main/index.js | 193 + .../node_modules/external-editor/package.json | 90 + .../node_modules/fast-deep-equal/LICENSE | 21 + .../node_modules/fast-deep-equal/README.md | 58 + .../node_modules/fast-deep-equal/index.d.ts | 4 + .../node_modules/fast-deep-equal/index.js | 55 + .../node_modules/fast-deep-equal/package.json | 86 + .../fast-json-stable-stringify/.eslintrc.yml | 26 + .../.github/FUNDING.yml | 1 + .../fast-json-stable-stringify/.travis.yml | 8 + .../fast-json-stable-stringify/LICENSE | 21 + .../fast-json-stable-stringify/README.md | 131 + .../benchmark/index.js | 31 + .../benchmark/test.json | 137 + .../example/key_cmp.js | 7 + .../example/nested.js | 3 + .../fast-json-stable-stringify/example/str.js | 3 + .../example/value_cmp.js | 7 + .../fast-json-stable-stringify/index.d.ts | 4 + .../fast-json-stable-stringify/index.js | 59 + .../fast-json-stable-stringify/package.json | 82 + .../fast-json-stable-stringify/test/cmp.js | 13 + .../fast-json-stable-stringify/test/nested.js | 44 + .../fast-json-stable-stringify/test/str.js | 46 + .../test/to-json.js | 22 + .../node_modules/fast-levenshtein/LICENSE.md | 25 + .../node_modules/fast-levenshtein/README.md | 104 + .../fast-levenshtein/levenshtein.js | 136 + .../fast-levenshtein/package.json | 72 + .../node_modules/fast-url-parser/.npmignore | 30 + .../node_modules/fast-url-parser/LICENSE | 19 + .../node_modules/fast-url-parser/README.md | 84 + .../node_modules/punycode/LICENSE-MIT.txt | 20 + .../node_modules/punycode/README.md | 176 + .../node_modules/punycode/package.json | 87 + .../node_modules/punycode/punycode.js | 533 + .../node_modules/fast-url-parser/package.json | 70 + .../fast-url-parser/src/urlparser.js | 1061 ++ .../node_modules/figures/index.d.ts | 96 + tic-tac-toe-app/node_modules/figures/index.js | 151 + tic-tac-toe-app/node_modules/figures/license | 9 + .../node_modules/figures/package.json | 77 + .../node_modules/figures/readme.md | 139 + .../node_modules/file-entry-cache/LICENSE | 22 + .../node_modules/file-entry-cache/README.md | 112 + .../node_modules/file-entry-cache/cache.js | 286 + .../file-entry-cache/changelog.md | 141 + .../file-entry-cache/package.json | 116 + tic-tac-toe-app/node_modules/find-up/index.js | 48 + tic-tac-toe-app/node_modules/find-up/license | 21 + .../node_modules/find-up/package.json | 86 + .../node_modules/find-up/readme.md | 85 + .../node_modules/flat-cache/LICENSE | 22 + .../node_modules/flat-cache/README.md | 73 + .../node_modules/flat-cache/cache.js | 197 + .../node_modules/flat-cache/changelog.md | 300 + .../node_modules/flat-cache/del.js | 13 + .../node_modules/flat-cache/package.json | 119 + .../node_modules/flat-cache/utils.js | 39 + .../node_modules/flatted/.github/FUNDING.yml | 8 + tic-tac-toe-app/node_modules/flatted/LICENSE | 15 + .../node_modules/flatted/README.md | 65 + tic-tac-toe-app/node_modules/flatted/SPECS.md | 94 + .../node_modules/flatted/cjs/index.js | 114 + .../node_modules/flatted/esm/index.js | 116 + tic-tac-toe-app/node_modules/flatted/index.js | 113 + tic-tac-toe-app/node_modules/flatted/min.js | 2 + .../node_modules/flatted/package.json | 71 + .../node_modules/flatted/types.d.ts | 19 + .../node_modules/fs.realpath/LICENSE | 43 + .../node_modules/fs.realpath/README.md | 33 + .../node_modules/fs.realpath/index.js | 66 + .../node_modules/fs.realpath/old.js | 303 + .../node_modules/fs.realpath/package.json | 59 + .../node_modules/function-bind/.editorconfig | 20 + .../node_modules/function-bind/.eslintrc | 15 + .../node_modules/function-bind/.jscs.json | 176 + .../node_modules/function-bind/.npmignore | 22 + .../node_modules/function-bind/.travis.yml | 168 + .../node_modules/function-bind/LICENSE | 20 + .../node_modules/function-bind/README.md | 48 + .../function-bind/implementation.js | 52 + .../node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 99 + .../node_modules/function-bind/test/.eslintrc | 9 + .../node_modules/function-bind/test/index.js | 252 + .../functional-red-black-tree/.npmignore | 16 + .../functional-red-black-tree/LICENSE | 22 + .../functional-red-black-tree/README.md | 237 + .../functional-red-black-tree/bench/test.js | 11 + .../functional-red-black-tree/package.json | 68 + .../functional-red-black-tree/rbtree.js | 996 ++ .../functional-red-black-tree/test/test.js | 479 + .../node_modules/get-stream/buffer-stream.js | 51 + .../node_modules/get-stream/index.js | 51 + .../node_modules/get-stream/license | 21 + .../node_modules/get-stream/package.json | 81 + .../node_modules/get-stream/readme.md | 117 + .../node_modules/glob-parent/LICENSE | 15 + .../node_modules/glob-parent/README.md | 137 + .../node_modules/glob-parent/index.js | 41 + .../node_modules/glob-parent/package.json | 90 + tic-tac-toe-app/node_modules/glob/LICENSE | 21 + tic-tac-toe-app/node_modules/glob/README.md | 375 + .../node_modules/glob/changelog.md | 67 + tic-tac-toe-app/node_modules/glob/common.js | 240 + tic-tac-toe-app/node_modules/glob/glob.js | 790 + .../node_modules/glob/package.json | 79 + tic-tac-toe-app/node_modules/glob/sync.js | 486 + .../node_modules/graceful-fs/LICENSE | 15 + .../node_modules/graceful-fs/README.md | 133 + .../node_modules/graceful-fs/clone.js | 19 + .../node_modules/graceful-fs/graceful-fs.js | 346 + .../graceful-fs/legacy-streams.js | 118 + .../node_modules/graceful-fs/package.json | 79 + .../node_modules/graceful-fs/polyfills.js | 342 + .../node_modules/has-flag/index.js | 8 + tic-tac-toe-app/node_modules/has-flag/license | 9 + .../node_modules/has-flag/package.json | 76 + .../node_modules/has-flag/readme.md | 70 + .../node_modules/has-symbols/.eslintrc | 11 + .../has-symbols/.github/FUNDING.yml | 12 + .../has-symbols/.github/workflows/rebase.yml | 15 + .../node_modules/has-symbols/.travis.yml | 12 + .../node_modules/has-symbols/CHANGELOG.md | 34 + .../node_modules/has-symbols/LICENSE | 21 + .../node_modules/has-symbols/README.md | 45 + .../node_modules/has-symbols/index.js | 13 + .../node_modules/has-symbols/package.json | 121 + .../node_modules/has-symbols/shams.js | 42 + .../node_modules/has-symbols/test/index.js | 22 + .../has-symbols/test/shams/core-js.js | 28 + .../test/shams/get-own-property-symbols.js | 28 + .../node_modules/has-symbols/test/tests.js | 54 + tic-tac-toe-app/node_modules/has/LICENSE-MIT | 22 + tic-tac-toe-app/node_modules/has/README.md | 18 + tic-tac-toe-app/node_modules/has/package.json | 81 + tic-tac-toe-app/node_modules/has/src/index.js | 5 + .../node_modules/has/test/index.js | 10 + .../node_modules/hosted-git-info/CHANGELOG.md | 141 + .../node_modules/hosted-git-info/LICENSE | 13 + .../node_modules/hosted-git-info/README.md | 133 + .../hosted-git-info/git-host-info.js | 79 + .../node_modules/hosted-git-info/git-host.js | 156 + .../node_modules/hosted-git-info/index.js | 148 + .../node_modules/hosted-git-info/package.json | 69 + .../node_modules/ignore/CHANGELOG.md | 19 + .../node_modules/ignore/LICENSE-MIT | 21 + tic-tac-toe-app/node_modules/ignore/README.md | 307 + .../node_modules/ignore/index.d.ts | 45 + tic-tac-toe-app/node_modules/ignore/index.js | 463 + tic-tac-toe-app/node_modules/ignore/legacy.js | 466 + .../node_modules/ignore/package.json | 92 + .../node_modules/import-fresh/index.d.ts | 28 + .../node_modules/import-fresh/index.js | 32 + .../node_modules/import-fresh/license | 9 + .../node_modules/import-fresh/package.json | 74 + .../node_modules/import-fresh/readme.md | 52 + tic-tac-toe-app/node_modules/inflight/LICENSE | 15 + .../node_modules/inflight/README.md | 37 + .../node_modules/inflight/inflight.js | 54 + .../node_modules/inflight/package.json | 58 + tic-tac-toe-app/node_modules/inherits/LICENSE | 16 + .../node_modules/inherits/README.md | 42 + .../node_modules/inherits/inherits.js | 9 + .../node_modules/inherits/inherits_browser.js | 27 + .../node_modules/inherits/package.json | 61 + tic-tac-toe-app/node_modules/ini/LICENSE | 15 + tic-tac-toe-app/node_modules/ini/README.md | 102 + tic-tac-toe-app/node_modules/ini/ini.js | 194 + tic-tac-toe-app/node_modules/ini/package.json | 63 + tic-tac-toe-app/node_modules/inquirer/LICENSE | 22 + .../node_modules/inquirer/README.md | 476 + .../node_modules/inquirer/lib/inquirer.js | 93 + .../inquirer/lib/objects/choice.js | 38 + .../inquirer/lib/objects/choices.js | 118 + .../inquirer/lib/objects/separator.js | 37 + .../node_modules/inquirer/lib/prompts/base.js | 148 + .../inquirer/lib/prompts/checkbox.js | 254 + .../inquirer/lib/prompts/confirm.js | 99 + .../inquirer/lib/prompts/editor.js | 100 + .../inquirer/lib/prompts/expand.js | 276 + .../inquirer/lib/prompts/input.js | 113 + .../node_modules/inquirer/lib/prompts/list.js | 184 + .../inquirer/lib/prompts/number.js | 29 + .../inquirer/lib/prompts/password.js | 113 + .../inquirer/lib/prompts/rawlist.js | 216 + .../node_modules/inquirer/lib/ui/baseUI.js | 96 + .../inquirer/lib/ui/bottom-bar.js | 100 + .../node_modules/inquirer/lib/ui/prompt.js | 132 + .../node_modules/inquirer/lib/utils/events.js | 54 + .../inquirer/lib/utils/paginator.js | 54 + .../inquirer/lib/utils/readline.js | 51 + .../inquirer/lib/utils/screen-manager.js | 142 + .../node_modules/inquirer/lib/utils/utils.js | 26 + .../node_modules/ansi-regex/index.d.ts | 37 + .../inquirer/node_modules/ansi-regex/index.js | 10 + .../inquirer/node_modules/ansi-regex/license | 9 + .../node_modules/ansi-regex/package.json | 87 + .../node_modules/ansi-regex/readme.md | 78 + .../node_modules/ansi-styles/index.d.ts | 197 + .../node_modules/ansi-styles/index.js | 163 + .../inquirer/node_modules/ansi-styles/license | 9 + .../node_modules/ansi-styles/package.json | 89 + .../node_modules/ansi-styles/readme.md | 158 + .../inquirer/node_modules/chalk/index.d.ts | 411 + .../inquirer/node_modules/chalk/license | 9 + .../inquirer/node_modules/chalk/package.json | 95 + .../inquirer/node_modules/chalk/readme.md | 304 + .../node_modules/chalk/source/index.js | 233 + .../node_modules/chalk/source/templates.js | 134 + .../node_modules/chalk/source/util.js | 39 + .../node_modules/color-convert/CHANGELOG.md | 54 + .../node_modules/color-convert/LICENSE | 21 + .../node_modules/color-convert/README.md | 68 + .../node_modules/color-convert/conversions.js | 839 + .../node_modules/color-convert/index.js | 81 + .../node_modules/color-convert/package.json | 83 + .../node_modules/color-convert/route.js | 97 + .../inquirer/node_modules/color-name/LICENSE | 8 + .../node_modules/color-name/README.md | 11 + .../inquirer/node_modules/color-name/index.js | 152 + .../node_modules/color-name/package.json | 56 + .../inquirer/node_modules/has-flag/index.d.ts | 39 + .../inquirer/node_modules/has-flag/index.js | 8 + .../inquirer/node_modules/has-flag/license | 9 + .../node_modules/has-flag/package.json | 78 + .../inquirer/node_modules/has-flag/readme.md | 89 + .../is-fullwidth-code-point/index.d.ts | 17 + .../is-fullwidth-code-point/index.js | 50 + .../is-fullwidth-code-point/license | 9 + .../is-fullwidth-code-point/package.json | 74 + .../is-fullwidth-code-point/readme.md | 39 + .../node_modules/string-width/index.d.ts | 29 + .../node_modules/string-width/index.js | 43 + .../node_modules/string-width/license | 9 + .../node_modules/string-width/package.json | 88 + .../node_modules/string-width/readme.md | 50 + .../node_modules/strip-ansi/index.d.ts | 17 + .../inquirer/node_modules/strip-ansi/index.js | 4 + .../inquirer/node_modules/strip-ansi/license | 9 + .../node_modules/strip-ansi/package.json | 87 + .../node_modules/strip-ansi/readme.md | 46 + .../node_modules/supports-color/browser.js | 5 + .../node_modules/supports-color/index.js | 139 + .../node_modules/supports-color/license | 9 + .../node_modules/supports-color/package.json | 85 + .../node_modules/supports-color/readme.md | 76 + .../node_modules/inquirer/package.json | 93 + .../node_modules/internal-slot/.eslintrc | 12 + .../internal-slot/.github/FUNDING.yml | 12 + .../.github/workflows/rebase.yml | 15 + .../node_modules/internal-slot/.travis.yml | 319 + .../node_modules/internal-slot/CHANGELOG.md | 35 + .../node_modules/internal-slot/LICENSE | 21 + .../node_modules/internal-slot/README.md | 55 + .../node_modules/internal-slot/index.js | 59 + .../node_modules/internal-slot/package.json | 89 + .../node_modules/internal-slot/test/index.js | 120 + .../node_modules/is-arrayish/.editorconfig | 18 + .../node_modules/is-arrayish/.istanbul.yml | 4 + .../node_modules/is-arrayish/.npmignore | 5 + .../node_modules/is-arrayish/.travis.yml | 17 + .../node_modules/is-arrayish/LICENSE | 21 + .../node_modules/is-arrayish/README.md | 16 + .../node_modules/is-arrayish/index.js | 10 + .../node_modules/is-arrayish/package.json | 66 + .../node_modules/is-callable/.editorconfig | 20 + .../node_modules/is-callable/.eslintrc | 11 + .../is-callable/.github/FUNDING.yml | 12 + .../is-callable/.github/main.workflow | 14 + .../is-callable/.github/workflows/rebase.yml | 15 + .../node_modules/is-callable/.istanbul.yml | 47 + .../node_modules/is-callable/.travis.yml | 12 + .../node_modules/is-callable/CHANGELOG.md | 67 + .../node_modules/is-callable/LICENSE | 22 + .../node_modules/is-callable/README.md | 59 + .../node_modules/is-callable/index.js | 37 + .../node_modules/is-callable/package.json | 121 + .../node_modules/is-callable/test/index.js | 159 + .../node_modules/is-date-object/.eslintrc | 9 + .../is-date-object/.github/FUNDING.yml | 12 + .../.github/workflows/rebase.yml | 15 + .../node_modules/is-date-object/.jscs.json | 176 + .../node_modules/is-date-object/.travis.yml | 12 + .../node_modules/is-date-object/CHANGELOG.md | 76 + .../node_modules/is-date-object/LICENSE | 22 + .../node_modules/is-date-object/README.md | 53 + .../node_modules/is-date-object/index.js | 22 + .../node_modules/is-date-object/package.json | 104 + .../node_modules/is-date-object/test/index.js | 36 + .../node_modules/is-extglob/LICENSE | 21 + .../node_modules/is-extglob/README.md | 107 + .../node_modules/is-extglob/index.js | 20 + .../node_modules/is-extglob/package.json | 100 + .../is-fullwidth-code-point/index.js | 46 + .../is-fullwidth-code-point/license | 21 + .../is-fullwidth-code-point/package.json | 79 + .../is-fullwidth-code-point/readme.md | 39 + tic-tac-toe-app/node_modules/is-glob/LICENSE | 21 + .../node_modules/is-glob/README.md | 206 + tic-tac-toe-app/node_modules/is-glob/index.js | 48 + .../node_modules/is-glob/package.json | 122 + .../node_modules/is-stream/index.js | 21 + .../node_modules/is-stream/license | 21 + .../node_modules/is-stream/package.json | 71 + .../node_modules/is-stream/readme.md | 42 + .../node_modules/is-string/.eslintrc | 19 + .../is-string/.github/FUNDING.yml | 12 + .../is-string/.github/workflows/rebase.yml | 15 + .../node_modules/is-string/.travis.yml | 12 + .../node_modules/is-string/CHANGELOG.md | 84 + .../node_modules/is-string/LICENSE | 22 + .../node_modules/is-string/README.md | 57 + .../node_modules/is-string/index.js | 24 + .../node_modules/is-string/package.json | 108 + .../node_modules/is-string/test/index.js | 39 + .../node_modules/is-symbol/.editorconfig | 13 + .../node_modules/is-symbol/.eslintrc | 14 + .../is-symbol/.github/FUNDING.yml | 12 + .../is-symbol/.github/workflows/rebase.yml | 15 + tic-tac-toe-app/node_modules/is-symbol/.nvmrc | 1 + .../node_modules/is-symbol/.travis.yml | 12 + .../node_modules/is-symbol/CHANGELOG.md | 86 + .../node_modules/is-symbol/LICENSE | 22 + .../node_modules/is-symbol/Makefile | 61 + .../node_modules/is-symbol/README.md | 44 + .../node_modules/is-symbol/index.js | 35 + .../node_modules/is-symbol/package.json | 105 + .../node_modules/is-symbol/test/index.js | 92 + .../node_modules/isarray/.npmignore | 1 + .../node_modules/isarray/.travis.yml | 4 + tic-tac-toe-app/node_modules/isarray/Makefile | 6 + .../node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + tic-tac-toe-app/node_modules/isarray/index.js | 5 + .../node_modules/isarray/package.json | 73 + tic-tac-toe-app/node_modules/isarray/test.js | 20 + tic-tac-toe-app/node_modules/isexe/.npmignore | 2 + tic-tac-toe-app/node_modules/isexe/LICENSE | 15 + tic-tac-toe-app/node_modules/isexe/README.md | 51 + tic-tac-toe-app/node_modules/isexe/index.js | 57 + tic-tac-toe-app/node_modules/isexe/mode.js | 41 + .../node_modules/isexe/package.json | 60 + .../node_modules/isexe/test/basic.js | 221 + tic-tac-toe-app/node_modules/isexe/windows.js | 42 + .../node_modules/js-tokens/CHANGELOG.md | 151 + .../node_modules/js-tokens/LICENSE | 21 + .../node_modules/js-tokens/README.md | 240 + .../node_modules/js-tokens/index.js | 23 + .../node_modules/js-tokens/package.json | 65 + .../json-schema-traverse/.eslintrc.yml | 27 + .../json-schema-traverse/.travis.yml | 8 + .../node_modules/json-schema-traverse/LICENSE | 21 + .../json-schema-traverse/README.md | 83 + .../json-schema-traverse/index.js | 89 + .../json-schema-traverse/package.json | 72 + .../json-schema-traverse/spec/.eslintrc.yml | 6 + .../spec/fixtures/schema.js | 125 + .../json-schema-traverse/spec/index.spec.js | 171 + .../.npmignore | 1 + .../.travis.yml | 4 + .../LICENSE | 18 + .../example/key_cmp.js | 7 + .../example/nested.js | 3 + .../example/str.js | 3 + .../example/value_cmp.js | 7 + .../index.js | 82 + .../package.json | 72 + .../readme.markdown | 132 + .../test/cmp.js | 11 + .../test/nested.js | 42 + .../test/replacer.js | 74 + .../test/space.js | 59 + .../test/str.js | 32 + .../test/to-json.js | 20 + .../node_modules/jsx-ast-utils/.babelrc | 7 + .../node_modules/jsx-ast-utils/.eslintignore | 3 + .../node_modules/jsx-ast-utils/.eslintrc | 6 + .../jsx-ast-utils/.github/FUNDING.yml | 4 + .../node_modules/jsx-ast-utils/.travis.yml | 39 + .../node_modules/jsx-ast-utils/CHANGELOG.md | 107 + .../node_modules/jsx-ast-utils/LICENSE.md | 8 + .../node_modules/jsx-ast-utils/README.md | 294 + .../jsx-ast-utils/__tests__/helper.js | 79 + .../__tests__/src/elementType-test.js | 85 + .../__tests__/src/eventHandlers-test.js | 101 + .../__tests__/src/getProp-parser-test.js | 136 + .../__tests__/src/getProp-test.js | 149 + .../getPropLiteralValue-babelparser-test.js | 522 + .../getPropLiteralValue-flowparser-test.js | 522 + .../src/getPropValue-babelparser-test.js | 956 + .../src/getPropValue-flowparser-test.js | 938 + .../__tests__/src/hasProp-test.js | 412 + .../jsx-ast-utils/__tests__/src/index-test.js | 35 + .../__tests__/src/propName-test.js | 42 + .../node_modules/jsx-ast-utils/elementType.js | 1 + .../jsx-ast-utils/eventHandlers.js | 1 + .../jsx-ast-utils/eventHandlersByType.js | 1 + .../jsx-ast-utils/getLiteralPropValue.js | 1 + .../node_modules/jsx-ast-utils/getProp.js | 1 + .../jsx-ast-utils/getPropValue.js | 1 + .../node_modules/jsx-ast-utils/hasAnyProp.js | 1 + .../jsx-ast-utils/hasEveryProp.js | 1 + .../node_modules/jsx-ast-utils/hasProp.js | 1 + .../jsx-ast-utils/lib/elementType.js | 44 + .../jsx-ast-utils/lib/eventHandlers.js | 33 + .../node_modules/jsx-ast-utils/lib/getProp.js | 88 + .../jsx-ast-utils/lib/getPropValue.js | 57 + .../node_modules/jsx-ast-utils/lib/hasProp.js | 74 + .../node_modules/jsx-ast-utils/lib/index.js | 40 + .../jsx-ast-utils/lib/propName.js | 22 + .../jsx-ast-utils/lib/values/JSXElement.js | 14 + .../jsx-ast-utils/lib/values/Literal.js | 27 + .../lib/values/expressions/ArrayExpression.js | 19 + .../values/expressions/BinaryExpression.js | 78 + .../lib/values/expressions/BindExpression.js | 30 + .../lib/values/expressions/CallExpression.js | 20 + .../expressions/ConditionalExpression.js | 22 + .../values/expressions/FunctionExpression.js | 19 + .../lib/values/expressions/Identifier.js | 35 + .../values/expressions/LogicalExpression.js | 26 + .../values/expressions/MemberExpression.js | 19 + .../lib/values/expressions/NewExpression.js | 15 + .../values/expressions/ObjectExpression.js | 35 + .../expressions/OptionalMemberExpression.js | 19 + .../lib/values/expressions/SpreadElement.js | 17 + .../expressions/TaggedTemplateExpression.js | 20 + .../lib/values/expressions/TemplateLiteral.js | 40 + .../lib/values/expressions/ThisExpression.js | 15 + .../values/expressions/TypeCastExpression.js | 19 + .../lib/values/expressions/UnaryExpression.js | 39 + .../values/expressions/UpdateExpression.js | 33 + .../lib/values/expressions/index.js | 244 + .../jsx-ast-utils/lib/values/index.js | 66 + .../node_modules/jsx-ast-utils/package.json | 101 + .../node_modules/jsx-ast-utils/propName.js | 1 + .../jsx-ast-utils/src/elementType.js | 29 + .../jsx-ast-utils/src/eventHandlers.js | 113 + .../node_modules/jsx-ast-utils/src/getProp.js | 77 + .../jsx-ast-utils/src/getPropValue.js | 45 + .../node_modules/jsx-ast-utils/src/hasProp.js | 47 + .../node_modules/jsx-ast-utils/src/index.js | 19 + .../jsx-ast-utils/src/propName.js | 14 + .../jsx-ast-utils/src/values/JSXElement.js | 8 + .../jsx-ast-utils/src/values/Literal.js | 20 + .../src/values/expressions/ArrayExpression.js | 11 + .../values/expressions/BinaryExpression.js | 69 + .../src/values/expressions/BindExpression.js | 24 + .../src/values/expressions/CallExpression.js | 14 + .../expressions/ConditionalExpression.js | 17 + .../values/expressions/FunctionExpression.js | 11 + .../src/values/expressions/Identifier.js | 28 + .../values/expressions/LogicalExpression.js | 17 + .../values/expressions/MemberExpression.js | 13 + .../src/values/expressions/NewExpression.js | 9 + .../values/expressions/ObjectExpression.js | 24 + .../expressions/OptionalMemberExpression.js | 13 + .../src/values/expressions/SpreadElement.js | 11 + .../expressions/TaggedTemplateExpression.js | 9 + .../src/values/expressions/TemplateLiteral.js | 34 + .../src/values/expressions/ThisExpression.js | 9 + .../values/expressions/TypeCastExpression.js | 13 + .../src/values/expressions/UnaryExpression.js | 31 + .../values/expressions/UpdateExpression.js | 24 + .../src/values/expressions/index.js | 159 + .../jsx-ast-utils/src/values/index.js | 42 + tic-tac-toe-app/node_modules/levn/LICENSE | 22 + tic-tac-toe-app/node_modules/levn/README.md | 196 + tic-tac-toe-app/node_modules/levn/lib/cast.js | 298 + .../node_modules/levn/lib/coerce.js | 285 + .../node_modules/levn/lib/index.js | 22 + .../node_modules/levn/lib/parse-string.js | 113 + .../node_modules/levn/lib/parse.js | 102 + .../node_modules/levn/package.json | 78 + .../node_modules/load-json-file/index.js | 11 + .../node_modules/load-json-file/license | 21 + .../node_modules/load-json-file/package.json | 75 + .../node_modules/load-json-file/readme.md | 45 + .../node_modules/locate-path/index.js | 24 + .../node_modules/locate-path/license | 21 + .../node_modules/locate-path/package.json | 79 + .../node_modules/locate-path/readme.md | 99 + .../node_modules/lru-cache/LICENSE | 15 + .../node_modules/lru-cache/README.md | 158 + .../node_modules/lru-cache/index.js | 468 + .../node_modules/lru-cache/package.json | 71 + .../node_modules/mime-types/HISTORY.md | 325 + .../node_modules/mime-types/LICENSE | 23 + .../node_modules/mime-types/README.md | 113 + .../node_modules/mime-types/index.js | 188 + .../node_modules/mime-types/package.json | 86 + .../node_modules/mimic-fn/index.d.ts | 54 + .../node_modules/mimic-fn/index.js | 13 + tic-tac-toe-app/node_modules/mimic-fn/license | 9 + .../node_modules/mimic-fn/package.json | 74 + .../node_modules/mimic-fn/readme.md | 69 + .../node_modules/minimist/.travis.yml | 8 + tic-tac-toe-app/node_modules/minimist/LICENSE | 18 + .../node_modules/minimist/example/parse.js | 2 + .../node_modules/minimist/index.js | 245 + .../node_modules/minimist/package.json | 74 + .../node_modules/minimist/readme.markdown | 95 + .../node_modules/minimist/test/all_bool.js | 32 + .../node_modules/minimist/test/bool.js | 178 + .../node_modules/minimist/test/dash.js | 31 + .../minimist/test/default_bool.js | 35 + .../node_modules/minimist/test/dotted.js | 22 + .../node_modules/minimist/test/kv_short.js | 16 + .../node_modules/minimist/test/long.js | 31 + .../node_modules/minimist/test/num.js | 36 + .../node_modules/minimist/test/parse.js | 197 + .../minimist/test/parse_modified.js | 9 + .../node_modules/minimist/test/proto.js | 44 + .../node_modules/minimist/test/short.js | 67 + .../node_modules/minimist/test/stop_early.js | 15 + .../node_modules/minimist/test/unknown.js | 102 + .../node_modules/minimist/test/whitespace.js | 8 + tic-tac-toe-app/node_modules/mkdirp/LICENSE | 21 + .../node_modules/mkdirp/bin/cmd.js | 33 + .../node_modules/mkdirp/bin/usage.txt | 12 + tic-tac-toe-app/node_modules/mkdirp/index.js | 99 + .../node_modules/mkdirp/package.json | 70 + .../node_modules/mkdirp/readme.markdown | 100 + .../node_modules/mute-stream/LICENSE | 15 + .../node_modules/mute-stream/README.md | 68 + .../node_modules/mute-stream/mute.js | 145 + .../node_modules/mute-stream/package.json | 62 + .../node_modules/natural-compare/README.md | 125 + .../node_modules/natural-compare/index.js | 57 + .../node_modules/natural-compare/package.json | 73 + .../node_modules/negotiator/HISTORY.md | 103 + .../node_modules/negotiator/LICENSE | 24 + .../node_modules/negotiator/README.md | 203 + .../node_modules/negotiator/index.js | 124 + .../node_modules/negotiator/lib/charset.js | 169 + .../node_modules/negotiator/lib/encoding.js | 184 + .../node_modules/negotiator/lib/language.js | 179 + .../node_modules/negotiator/lib/mediaType.js | 294 + .../node_modules/negotiator/package.json | 84 + .../normalize-package-data/AUTHORS | 4 + .../normalize-package-data/LICENSE | 30 + .../normalize-package-data/README.md | 106 + .../lib/extract_description.js | 14 + .../normalize-package-data/lib/fixer.js | 418 + .../lib/make_warning.js | 23 + .../normalize-package-data/lib/normalize.js | 39 + .../normalize-package-data/lib/safe_format.js | 9 + .../normalize-package-data/lib/typos.json | 25 + .../lib/warning_messages.json | 30 + .../node_modules/.bin/semver | 1 + .../node_modules/semver/CHANGELOG.md | 39 + .../node_modules/semver/LICENSE | 15 + .../node_modules/semver/README.md | 412 + .../node_modules/semver/bin/semver | 160 + .../node_modules/semver/package.json | 60 + .../node_modules/semver/range.bnf | 16 + .../node_modules/semver/semver.js | 1483 ++ .../normalize-package-data/package.json | 77 + .../node_modules/npm-run-path/index.js | 39 + .../node_modules/npm-run-path/license | 21 + .../node_modules/npm-run-path/package.json | 78 + .../node_modules/npm-run-path/readme.md | 81 + .../node_modules/object-assign/index.js | 90 + .../node_modules/object-assign/license | 21 + .../node_modules/object-assign/package.json | 74 + .../node_modules/object-assign/readme.md | 61 + .../node_modules/object-inspect/.eslintignore | 1 + .../node_modules/object-inspect/.eslintrc | 61 + .../node_modules/object-inspect/.nycrc | 17 + .../node_modules/object-inspect/.travis.yml | 9 + .../node_modules/object-inspect/LICENSE | 21 + .../object-inspect/example/all.js | 23 + .../object-inspect/example/circular.js | 6 + .../node_modules/object-inspect/example/fn.js | 5 + .../object-inspect/example/inspect.js | 10 + .../node_modules/object-inspect/index.js | 307 + .../node_modules/object-inspect/package.json | 97 + .../object-inspect/readme.markdown | 61 + .../object-inspect/test-core-js.js | 16 + .../object-inspect/test/bigint.js | 31 + .../object-inspect/test/browser/dom.js | 15 + .../object-inspect/test/circular.js | 9 + .../node_modules/object-inspect/test/deep.js | 9 + .../object-inspect/test/element.js | 53 + .../node_modules/object-inspect/test/err.js | 31 + .../node_modules/object-inspect/test/fn.js | 28 + .../node_modules/object-inspect/test/has.js | 34 + .../node_modules/object-inspect/test/holes.js | 15 + .../object-inspect/test/inspect.js | 20 + .../object-inspect/test/lowbyte.js | 12 + .../object-inspect/test/number.js | 12 + .../object-inspect/test/quoteStyle.js | 17 + .../node_modules/object-inspect/test/undef.js | 12 + .../object-inspect/test/values.js | 156 + .../object-inspect/util.inspect.js | 1 + .../node_modules/object-keys/.editorconfig | 13 + .../node_modules/object-keys/.eslintrc | 17 + .../node_modules/object-keys/.travis.yml | 277 + .../node_modules/object-keys/CHANGELOG.md | 232 + .../node_modules/object-keys/LICENSE | 21 + .../node_modules/object-keys/README.md | 76 + .../object-keys/implementation.js | 122 + .../node_modules/object-keys/index.js | 32 + .../node_modules/object-keys/isArguments.js | 17 + .../node_modules/object-keys/package.json | 119 + .../node_modules/object-keys/test/index.js | 5 + .../node_modules/object.entries/.eslintrc | 12 + .../.github/workflows/rebase.yml | 15 + .../node_modules/object.entries/.travis.yml | 8 + .../node_modules/object.entries/CHANGELOG.md | 44 + .../node_modules/object.entries/LICENSE | 22 + .../node_modules/object.entries/README.md | 59 + .../node_modules/object.entries/auto.js | 3 + .../object.entries/implementation.js | 17 + .../node_modules/object.entries/index.js | 17 + .../node_modules/object.entries/package.json | 106 + .../node_modules/object.entries/polyfill.js | 7 + .../node_modules/object.entries/shim.js | 14 + .../object.entries/test/.eslintrc | 11 + .../node_modules/object.entries/test/index.js | 17 + .../object.entries/test/shimmed.js | 36 + .../node_modules/object.entries/test/tests.js | 82 + .../node_modules/on-headers/HISTORY.md | 21 + .../node_modules/on-headers/LICENSE | 22 + .../node_modules/on-headers/README.md | 81 + .../node_modules/on-headers/index.js | 132 + .../node_modules/on-headers/package.json | 77 + tic-tac-toe-app/node_modules/once/LICENSE | 15 + tic-tac-toe-app/node_modules/once/README.md | 79 + tic-tac-toe-app/node_modules/once/once.js | 42 + .../node_modules/once/package.json | 67 + .../node_modules/onetime/index.d.ts | 49 + tic-tac-toe-app/node_modules/onetime/index.js | 50 + tic-tac-toe-app/node_modules/onetime/license | 9 + .../node_modules/onetime/package.json | 74 + .../node_modules/onetime/readme.md | 94 + .../node_modules/optionator/CHANGELOG.md | 56 + .../node_modules/optionator/LICENSE | 22 + .../node_modules/optionator/README.md | 238 + .../node_modules/optionator/lib/help.js | 260 + .../node_modules/optionator/lib/index.js | 465 + .../node_modules/optionator/lib/util.js | 54 + .../node_modules/optionator/package.json | 74 + .../node_modules/p-finally/index.js | 15 + .../node_modules/p-finally/license | 21 + .../node_modules/p-finally/package.json | 75 + .../node_modules/p-finally/readme.md | 47 + tic-tac-toe-app/node_modules/p-limit/index.js | 42 + tic-tac-toe-app/node_modules/p-limit/license | 9 + .../node_modules/p-limit/package.json | 81 + .../node_modules/p-limit/readme.md | 69 + .../node_modules/p-locate/index.js | 31 + tic-tac-toe-app/node_modules/p-locate/license | 21 + .../node_modules/p-locate/package.json | 86 + .../node_modules/p-locate/readme.md | 86 + .../node_modules/parent-module/index.js | 37 + .../node_modules/parent-module/license | 9 + .../node_modules/parent-module/package.json | 78 + .../node_modules/parent-module/readme.md | 67 + .../node_modules/path-exists/index.js | 17 + .../node_modules/path-exists/license | 21 + .../node_modules/path-exists/package.json | 72 + .../node_modules/path-exists/readme.md | 50 + .../node_modules/path-is-absolute/index.js | 20 + .../node_modules/path-is-absolute/license | 21 + .../path-is-absolute/package.json | 75 + .../node_modules/path-is-absolute/readme.md | 59 + .../node_modules/path-is-inside/LICENSE.txt | 47 + .../path-is-inside/lib/path-is-inside.js | 28 + .../node_modules/path-is-inside/package.json | 63 + .../node_modules/path-key/index.js | 13 + tic-tac-toe-app/node_modules/path-key/license | 21 + .../node_modules/path-key/package.json | 72 + .../node_modules/path-key/readme.md | 51 + .../node_modules/path-parse/.travis.yml | 9 + .../node_modules/path-parse/LICENSE | 21 + .../node_modules/path-parse/README.md | 42 + .../node_modules/path-parse/index.js | 93 + .../node_modules/path-parse/package.json | 61 + .../node_modules/path-parse/test.js | 77 + .../node_modules/path-type/index.js | 26 + .../node_modules/path-type/license | 21 + .../node_modules/path-type/package.json | 80 + .../node_modules/path-type/readme.md | 42 + tic-tac-toe-app/node_modules/pify/index.js | 68 + tic-tac-toe-app/node_modules/pify/license | 21 + .../node_modules/pify/package.json | 81 + tic-tac-toe-app/node_modules/pify/readme.md | 119 + tic-tac-toe-app/node_modules/pkg-dir/index.js | 10 + tic-tac-toe-app/node_modules/pkg-dir/license | 21 + .../node_modules/pkg-dir/package.json | 85 + .../node_modules/pkg-dir/readme.md | 64 + .../node_modules/prelude-ls/CHANGELOG.md | 99 + .../node_modules/prelude-ls/LICENSE | 22 + .../node_modules/prelude-ls/README.md | 15 + .../node_modules/prelude-ls/lib/Func.js | 65 + .../node_modules/prelude-ls/lib/List.js | 686 + .../node_modules/prelude-ls/lib/Num.js | 130 + .../node_modules/prelude-ls/lib/Obj.js | 154 + .../node_modules/prelude-ls/lib/Str.js | 92 + .../node_modules/prelude-ls/lib/index.js | 178 + .../node_modules/prelude-ls/package.json | 84 + .../node_modules/prop-types/CHANGELOG.md | 92 + .../node_modules/prop-types/LICENSE | 21 + .../node_modules/prop-types/README.md | 296 + .../node_modules/prop-types/checkPropTypes.js | 102 + .../node_modules/prop-types/factory.js | 19 + .../prop-types/factoryWithThrowingShims.js | 64 + .../prop-types/factoryWithTypeCheckers.js | 591 + .../node_modules/prop-types/index.js | 19 + .../prop-types/lib/ReactPropTypesSecret.js | 12 + .../node_modules/prop-types/package.json | 86 + .../node_modules/prop-types/prop-types.js | 1337 ++ .../node_modules/prop-types/prop-types.min.js | 1 + .../node_modules/pseudomap/LICENSE | 15 + .../node_modules/pseudomap/README.md | 60 + tic-tac-toe-app/node_modules/pseudomap/map.js | 9 + .../node_modules/pseudomap/package.json | 54 + .../node_modules/pseudomap/pseudomap.js | 113 + .../node_modules/pseudomap/test/basic.js | 86 + .../node_modules/punycode/LICENSE-MIT.txt | 20 + .../node_modules/punycode/README.md | 122 + .../node_modules/punycode/package.json | 85 + .../node_modules/punycode/punycode.es6.js | 441 + .../node_modules/punycode/punycode.js | 440 + .../node_modules/range-parser/HISTORY.md | 51 + .../node_modules/range-parser/LICENSE | 23 + .../node_modules/range-parser/README.md | 75 + .../node_modules/range-parser/index.js | 158 + .../node_modules/range-parser/package.json | 86 + .../node_modules/read-pkg-up/index.js | 26 + .../node_modules/read-pkg-up/license | 21 + .../node_modules/read-pkg-up/package.json | 94 + .../node_modules/read-pkg-up/readme.md | 80 + .../node_modules/read-pkg/index.js | 47 + tic-tac-toe-app/node_modules/read-pkg/license | 21 + .../node_modules/read-pkg/package.json | 77 + .../node_modules/read-pkg/readme.md | 79 + .../node_modules/regenerator-runtime/LICENSE | 21 + .../regenerator-runtime/README.md | 31 + .../regenerator-runtime/package.json | 48 + .../node_modules/regenerator-runtime/path.js | 11 + .../regenerator-runtime/runtime.js | 729 + .../regexp.prototype.flags/.editorconfig | 13 + .../regexp.prototype.flags/.eslintrc | 22 + .../.github/workflows/rebase.yml | 15 + .../regexp.prototype.flags/.travis.yml | 12 + .../regexp.prototype.flags/CHANGELOG.md | 44 + .../regexp.prototype.flags/LICENSE | 21 + .../regexp.prototype.flags/README.md | 54 + .../regexp.prototype.flags/auto.js | 3 + .../regexp.prototype.flags/implementation.js | 30 + .../regexp.prototype.flags/index.js | 18 + .../regexp.prototype.flags/package.json | 104 + .../regexp.prototype.flags/polyfill.js | 20 + .../regexp.prototype.flags/shim.js | 26 + .../regexp.prototype.flags/test/index.js | 146 + .../node_modules/registry-url/index.js | 6 + .../node_modules/registry-url/license | 21 + .../node_modules/registry-url/package.json | 72 + .../node_modules/registry-url/readme.md | 50 + .../node_modules/resolve-from/index.js | 47 + .../node_modules/resolve-from/license | 9 + .../node_modules/resolve-from/package.json | 66 + .../node_modules/resolve-from/readme.md | 72 + .../node_modules/resolve/.editorconfig | 20 + .../node_modules/resolve/.eslintignore | 1 + .../node_modules/resolve/.eslintrc | 39 + .../node_modules/resolve/.travis.yml | 8 + tic-tac-toe-app/node_modules/resolve/LICENSE | 21 + .../node_modules/resolve/appveyor.yml | 54 + .../node_modules/resolve/example/async.js | 5 + .../node_modules/resolve/example/sync.js | 3 + tic-tac-toe-app/node_modules/resolve/index.js | 6 + .../node_modules/resolve/lib/async.js | 298 + .../node_modules/resolve/lib/caller.js | 8 + .../node_modules/resolve/lib/core.js | 53 + .../node_modules/resolve/lib/core.json | 75 + .../node_modules/resolve/lib/is-core.js | 5 + .../resolve/lib/node-modules-paths.js | 42 + .../resolve/lib/normalize-options.js | 10 + .../node_modules/resolve/lib/sync.js | 191 + .../node_modules/resolve/package.json | 79 + .../node_modules/resolve/readme.markdown | 242 + .../node_modules/resolve/test/.eslintrc | 5 + .../node_modules/resolve/test/core.js | 85 + .../node_modules/resolve/test/dotdot.js | 29 + .../resolve/test/dotdot/abc/index.js | 2 + .../node_modules/resolve/test/dotdot/index.js | 1 + .../resolve/test/faulty_basedir.js | 29 + .../node_modules/resolve/test/filter.js | 34 + .../node_modules/resolve/test/filter_sync.js | 33 + .../node_modules/resolve/test/mock.js | 239 + .../node_modules/resolve/test/mock_sync.js | 141 + .../node_modules/resolve/test/module_dir.js | 56 + .../test/module_dir/xmodules/aaa/index.js | 1 + .../test/module_dir/ymodules/aaa/index.js | 1 + .../test/module_dir/zmodules/bbb/main.js | 1 + .../test/module_dir/zmodules/bbb/package.json | 3 + .../resolve/test/node-modules-paths.js | 143 + .../node_modules/resolve/test/node_path.js | 70 + .../resolve/test/node_path/x/aaa/index.js | 1 + .../resolve/test/node_path/x/ccc/index.js | 1 + .../resolve/test/node_path/y/bbb/index.js | 1 + .../resolve/test/node_path/y/ccc/index.js | 1 + .../node_modules/resolve/test/nonstring.js | 9 + .../node_modules/resolve/test/pathfilter.js | 75 + .../resolve/test/pathfilter/deep_ref/main.js | 0 .../node_modules/resolve/test/precedence.js | 23 + .../resolve/test/precedence/aaa.js | 1 + .../resolve/test/precedence/aaa/index.js | 1 + .../resolve/test/precedence/aaa/main.js | 1 + .../resolve/test/precedence/bbb.js | 1 + .../resolve/test/precedence/bbb/main.js | 1 + .../node_modules/resolve/test/resolver.js | 450 + .../resolve/test/resolver/baz/doom.js | 0 .../resolve/test/resolver/baz/package.json | 4 + .../resolve/test/resolver/baz/quux.js | 1 + .../resolve/test/resolver/browser_field/a.js | 0 .../resolve/test/resolver/browser_field/b.js | 0 .../test/resolver/browser_field/package.json | 5 + .../resolve/test/resolver/cup.coffee | 1 + .../resolve/test/resolver/dot_main/index.js | 1 + .../test/resolver/dot_main/package.json | 3 + .../test/resolver/dot_slash_main/index.js | 1 + .../test/resolver/dot_slash_main/package.json | 3 + .../node_modules/resolve/test/resolver/foo.js | 1 + .../test/resolver/incorrect_main/index.js | 2 + .../test/resolver/incorrect_main/package.json | 3 + .../test/resolver/invalid_main/package.json | 7 + .../resolve/test/resolver/mug.coffee | 0 .../node_modules/resolve/test/resolver/mug.js | 0 .../test/resolver/multirepo/lerna.json | 6 + .../test/resolver/multirepo/package.json | 20 + .../multirepo/packages/package-a/index.js | 35 + .../multirepo/packages/package-a/package.json | 14 + .../multirepo/packages/package-b/index.js | 0 .../multirepo/packages/package-b/package.json | 14 + .../resolver/nested_symlinks/mylib/async.js | 26 + .../nested_symlinks/mylib/package.json | 15 + .../resolver/nested_symlinks/mylib/sync.js | 12 + .../test/resolver/other_path/lib/other-lib.js | 0 .../resolve/test/resolver/other_path/root.js | 0 .../resolve/test/resolver/quux/foo/index.js | 1 + .../resolve/test/resolver/same_names/foo.js | 1 + .../test/resolver/same_names/foo/index.js | 1 + .../resolver/symlinked/_/node_modules/foo.js | 0 .../symlinked/_/symlink_target/.gitkeep | 0 .../test/resolver/symlinked/package/bar.js | 1 + .../resolver/symlinked/package/package.json | 3 + .../test/resolver/without_basedir/main.js | 5 + .../resolve/test/resolver_sync.js | 358 + .../resolve/test/shadowed_core.js | 38 + .../shadowed_core/node_modules/util/index.js | 0 .../node_modules/resolve/test/subdirs.js | 13 + .../node_modules/resolve/test/symlinks.js | 173 + .../node_modules/restore-cursor/index.d.ts | 13 + .../node_modules/restore-cursor/index.js | 9 + .../node_modules/restore-cursor/license | 9 + .../node_modules/restore-cursor/package.json | 84 + .../node_modules/restore-cursor/readme.md | 26 + tic-tac-toe-app/node_modules/rimraf/LICENSE | 15 + tic-tac-toe-app/node_modules/rimraf/README.md | 101 + tic-tac-toe-app/node_modules/rimraf/bin.js | 50 + .../node_modules/rimraf/package.json | 67 + tic-tac-toe-app/node_modules/rimraf/rimraf.js | 364 + .../node_modules/rxjs/AsyncSubject.d.ts | 1 + .../node_modules/rxjs/AsyncSubject.js | 7 + .../node_modules/rxjs/AsyncSubject.js.map | 1 + .../node_modules/rxjs/BehaviorSubject.d.ts | 1 + .../node_modules/rxjs/BehaviorSubject.js | 7 + .../node_modules/rxjs/BehaviorSubject.js.map | 1 + .../node_modules/rxjs/InnerSubscriber.d.ts | 1 + .../node_modules/rxjs/InnerSubscriber.js | 7 + .../node_modules/rxjs/InnerSubscriber.js.map | 1 + tic-tac-toe-app/node_modules/rxjs/LICENSE.txt | 202 + .../node_modules/rxjs/Notification.d.ts | 1 + .../node_modules/rxjs/Notification.js | 7 + .../node_modules/rxjs/Notification.js.map | 1 + .../node_modules/rxjs/Observable.d.ts | 1 + .../node_modules/rxjs/Observable.js | 7 + .../node_modules/rxjs/Observable.js.map | 1 + .../node_modules/rxjs/Observer.d.ts | 1 + tic-tac-toe-app/node_modules/rxjs/Observer.js | 3 + .../node_modules/rxjs/Observer.js.map | 1 + .../node_modules/rxjs/Operator.d.ts | 1 + tic-tac-toe-app/node_modules/rxjs/Operator.js | 3 + .../node_modules/rxjs/Operator.js.map | 1 + .../node_modules/rxjs/OuterSubscriber.d.ts | 1 + .../node_modules/rxjs/OuterSubscriber.js | 7 + .../node_modules/rxjs/OuterSubscriber.js.map | 1 + tic-tac-toe-app/node_modules/rxjs/README.md | 147 + .../node_modules/rxjs/ReplaySubject.d.ts | 1 + .../node_modules/rxjs/ReplaySubject.js | 7 + .../node_modules/rxjs/ReplaySubject.js.map | 1 + tic-tac-toe-app/node_modules/rxjs/Rx.d.ts | 1 + tic-tac-toe-app/node_modules/rxjs/Rx.js | 7 + tic-tac-toe-app/node_modules/rxjs/Rx.js.map | 1 + .../node_modules/rxjs/Scheduler.d.ts | 1 + .../node_modules/rxjs/Scheduler.js | 7 + .../node_modules/rxjs/Scheduler.js.map | 1 + .../node_modules/rxjs/Subject.d.ts | 1 + tic-tac-toe-app/node_modules/rxjs/Subject.js | 7 + .../node_modules/rxjs/Subject.js.map | 1 + .../rxjs/SubjectSubscription.d.ts | 1 + .../node_modules/rxjs/SubjectSubscription.js | 7 + .../rxjs/SubjectSubscription.js.map | 1 + .../node_modules/rxjs/Subscriber.d.ts | 1 + .../node_modules/rxjs/Subscriber.js | 7 + .../node_modules/rxjs/Subscriber.js.map | 1 + .../node_modules/rxjs/Subscription.d.ts | 1 + .../node_modules/rxjs/Subscription.js | 7 + .../node_modules/rxjs/Subscription.js.map | 1 + .../node_modules/rxjs/_esm2015/LICENSE.txt | 202 + .../node_modules/rxjs/_esm2015/README.md | 147 + .../node_modules/rxjs/_esm2015/ajax/index.js | 3 + .../rxjs/_esm2015/ajax/index.js.map | 1 + .../node_modules/rxjs/_esm2015/fetch/index.js | 2 + .../rxjs/_esm2015/fetch/index.js.map | 1 + .../node_modules/rxjs/_esm2015/index.js | 56 + .../node_modules/rxjs/_esm2015/index.js.map | 1 + .../_esm2015/internal-compatibility/index.js | 56 + .../internal-compatibility/index.js.map | 1 + .../rxjs/_esm2015/internal/AsyncSubject.js | 41 + .../_esm2015/internal/AsyncSubject.js.map | 1 + .../rxjs/_esm2015/internal/BehaviorSubject.js | 33 + .../_esm2015/internal/BehaviorSubject.js.map | 1 + .../rxjs/_esm2015/internal/InnerSubscriber.js | 22 + .../_esm2015/internal/InnerSubscriber.js.map | 1 + .../rxjs/_esm2015/internal/Notification.js | 73 + .../_esm2015/internal/Notification.js.map | 1 + .../rxjs/_esm2015/internal/Observable.js | 107 + .../rxjs/_esm2015/internal/Observable.js.map | 1 + .../rxjs/_esm2015/internal/Observer.js | 16 + .../rxjs/_esm2015/internal/Observer.js.map | 1 + .../rxjs/_esm2015/internal/Operator.js | 1 + .../rxjs/_esm2015/internal/Operator.js.map | 1 + .../rxjs/_esm2015/internal/OuterSubscriber.js | 13 + .../_esm2015/internal/OuterSubscriber.js.map | 1 + .../rxjs/_esm2015/internal/ReplaySubject.js | 104 + .../_esm2015/internal/ReplaySubject.js.map | 1 + .../node_modules/rxjs/_esm2015/internal/Rx.js | 172 + .../rxjs/_esm2015/internal/Rx.js.map | 1 + .../rxjs/_esm2015/internal/Scheduler.js | 11 + .../rxjs/_esm2015/internal/Scheduler.js.map | 1 + .../rxjs/_esm2015/internal/Subject.js | 144 + .../rxjs/_esm2015/internal/Subject.js.map | 1 + .../_esm2015/internal/SubjectSubscription.js | 26 + .../internal/SubjectSubscription.js.map | 1 + .../rxjs/_esm2015/internal/Subscriber.js | 222 + .../rxjs/_esm2015/internal/Subscriber.js.map | 1 + .../rxjs/_esm2015/internal/Subscription.js | 133 + .../_esm2015/internal/Subscription.js.map | 1 + .../rxjs/_esm2015/internal/config.js | 18 + .../rxjs/_esm2015/internal/config.js.map | 1 + .../observable/ConnectableObservable.js | 129 + .../observable/ConnectableObservable.js.map | 1 + .../observable/SubscribeOnObservable.js | 33 + .../observable/SubscribeOnObservable.js.map | 1 + .../internal/observable/bindCallback.js | 85 + .../internal/observable/bindCallback.js.map | 1 + .../internal/observable/bindNodeCallback.js | 93 + .../observable/bindNodeCallback.js.map | 1 + .../internal/observable/combineLatest.js | 89 + .../internal/observable/combineLatest.js.map | 1 + .../_esm2015/internal/observable/concat.js | 6 + .../internal/observable/concat.js.map | 1 + .../_esm2015/internal/observable/defer.js | 18 + .../_esm2015/internal/observable/defer.js.map | 1 + .../internal/observable/dom/AjaxObservable.js | 359 + .../observable/dom/AjaxObservable.js.map | 1 + .../observable/dom/WebSocketSubject.js | 209 + .../observable/dom/WebSocketSubject.js.map | 1 + .../_esm2015/internal/observable/dom/ajax.js | 3 + .../internal/observable/dom/ajax.js.map | 1 + .../_esm2015/internal/observable/dom/fetch.js | 51 + .../internal/observable/dom/fetch.js.map | 1 + .../internal/observable/dom/webSocket.js | 5 + .../internal/observable/dom/webSocket.js.map | 1 + .../_esm2015/internal/observable/empty.js | 9 + .../_esm2015/internal/observable/empty.js.map | 1 + .../_esm2015/internal/observable/forkJoin.js | 61 + .../internal/observable/forkJoin.js.map | 1 + .../rxjs/_esm2015/internal/observable/from.js | 15 + .../_esm2015/internal/observable/from.js.map | 1 + .../_esm2015/internal/observable/fromArray.js | 12 + .../internal/observable/fromArray.js.map | 1 + .../_esm2015/internal/observable/fromEvent.js | 62 + .../internal/observable/fromEvent.js.map | 1 + .../internal/observable/fromEventPattern.js | 25 + .../observable/fromEventPattern.js.map | 1 + .../internal/observable/fromIterable.js | 15 + .../internal/observable/fromIterable.js.map | 1 + .../internal/observable/fromPromise.js | 12 + .../internal/observable/fromPromise.js.map | 1 + .../_esm2015/internal/observable/generate.js | 124 + .../internal/observable/generate.js.map | 1 + .../rxjs/_esm2015/internal/observable/iif.js | 6 + .../_esm2015/internal/observable/iif.js.map | 1 + .../_esm2015/internal/observable/interval.js | 21 + .../internal/observable/interval.js.map | 1 + .../_esm2015/internal/observable/merge.js | 23 + .../_esm2015/internal/observable/merge.js.map | 1 + .../_esm2015/internal/observable/never.js | 7 + .../_esm2015/internal/observable/never.js.map | 1 + .../rxjs/_esm2015/internal/observable/of.js | 14 + .../_esm2015/internal/observable/of.js.map | 1 + .../internal/observable/onErrorResumeNext.js | 22 + .../observable/onErrorResumeNext.js.map | 1 + .../_esm2015/internal/observable/pairs.js | 38 + .../_esm2015/internal/observable/pairs.js.map | 1 + .../_esm2015/internal/observable/partition.js | 11 + .../internal/observable/partition.js.map | 1 + .../rxjs/_esm2015/internal/observable/race.js | 64 + .../_esm2015/internal/observable/race.js.map | 1 + .../_esm2015/internal/observable/range.js | 44 + .../_esm2015/internal/observable/range.js.map | 1 + .../internal/observable/throwError.js | 13 + .../internal/observable/throwError.js.map | 1 + .../_esm2015/internal/observable/timer.js | 37 + .../_esm2015/internal/observable/timer.js.map | 1 + .../_esm2015/internal/observable/using.js | 32 + .../_esm2015/internal/observable/using.js.map | 1 + .../rxjs/_esm2015/internal/observable/zip.js | 198 + .../_esm2015/internal/observable/zip.js.map | 1 + .../rxjs/_esm2015/internal/operators/audit.js | 63 + .../_esm2015/internal/operators/audit.js.map | 1 + .../_esm2015/internal/operators/auditTime.js | 7 + .../internal/operators/auditTime.js.map | 1 + .../_esm2015/internal/operators/buffer.js | 31 + .../_esm2015/internal/operators/buffer.js.map | 1 + .../internal/operators/bufferCount.js | 78 + .../internal/operators/bufferCount.js.map | 1 + .../_esm2015/internal/operators/bufferTime.js | 141 + .../internal/operators/bufferTime.js.map | 1 + .../internal/operators/bufferToggle.js | 101 + .../internal/operators/bufferToggle.js.map | 1 + .../_esm2015/internal/operators/bufferWhen.js | 76 + .../internal/operators/bufferWhen.js.map | 1 + .../_esm2015/internal/operators/catchError.js | 45 + .../internal/operators/catchError.js.map | 1 + .../_esm2015/internal/operators/combineAll.js | 5 + .../internal/operators/combineAll.js.map | 1 + .../internal/operators/combineLatest.js | 15 + .../internal/operators/combineLatest.js.map | 1 + .../_esm2015/internal/operators/concat.js | 5 + .../_esm2015/internal/operators/concat.js.map | 1 + .../_esm2015/internal/operators/concatAll.js | 5 + .../internal/operators/concatAll.js.map | 1 + .../_esm2015/internal/operators/concatMap.js | 5 + .../internal/operators/concatMap.js.map | 1 + .../internal/operators/concatMapTo.js | 5 + .../internal/operators/concatMapTo.js.map | 1 + .../rxjs/_esm2015/internal/operators/count.js | 48 + .../_esm2015/internal/operators/count.js.map | 1 + .../_esm2015/internal/operators/debounce.js | 70 + .../internal/operators/debounce.js.map | 1 + .../internal/operators/debounceTime.js | 55 + .../internal/operators/debounceTime.js.map | 1 + .../internal/operators/defaultIfEmpty.js | 30 + .../internal/operators/defaultIfEmpty.js.map | 1 + .../rxjs/_esm2015/internal/operators/delay.js | 83 + .../_esm2015/internal/operators/delay.js.map | 1 + .../_esm2015/internal/operators/delayWhen.js | 118 + .../internal/operators/delayWhen.js.map | 1 + .../internal/operators/dematerialize.js | 20 + .../internal/operators/dematerialize.js.map | 1 + .../_esm2015/internal/operators/distinct.js | 58 + .../internal/operators/distinct.js.map | 1 + .../operators/distinctUntilChanged.js | 54 + .../operators/distinctUntilChanged.js.map | 1 + .../operators/distinctUntilKeyChanged.js | 5 + .../operators/distinctUntilKeyChanged.js.map | 1 + .../_esm2015/internal/operators/elementAt.js | 15 + .../internal/operators/elementAt.js.map | 1 + .../_esm2015/internal/operators/endWith.js | 6 + .../internal/operators/endWith.js.map | 1 + .../rxjs/_esm2015/internal/operators/every.js | 45 + .../_esm2015/internal/operators/every.js.map | 1 + .../_esm2015/internal/operators/exhaust.js | 37 + .../internal/operators/exhaust.js.map | 1 + .../_esm2015/internal/operators/exhaustMap.js | 77 + .../internal/operators/exhaustMap.js.map | 1 + .../_esm2015/internal/operators/expand.js | 91 + .../_esm2015/internal/operators/expand.js.map | 1 + .../_esm2015/internal/operators/filter.js | 37 + .../_esm2015/internal/operators/filter.js.map | 1 + .../_esm2015/internal/operators/finalize.js | 20 + .../internal/operators/finalize.js.map | 1 + .../rxjs/_esm2015/internal/operators/find.js | 51 + .../_esm2015/internal/operators/find.js.map | 1 + .../_esm2015/internal/operators/findIndex.js | 5 + .../internal/operators/findIndex.js.map | 1 + .../rxjs/_esm2015/internal/operators/first.js | 11 + .../_esm2015/internal/operators/first.js.map | 1 + .../_esm2015/internal/operators/groupBy.js | 164 + .../internal/operators/groupBy.js.map | 1 + .../internal/operators/ignoreElements.js | 16 + .../internal/operators/ignoreElements.js.map | 1 + .../rxjs/_esm2015/internal/operators/index.js | 103 + .../_esm2015/internal/operators/index.js.map | 1 + .../_esm2015/internal/operators/isEmpty.js | 26 + .../internal/operators/isEmpty.js.map | 1 + .../rxjs/_esm2015/internal/operators/last.js | 11 + .../_esm2015/internal/operators/last.js.map | 1 + .../rxjs/_esm2015/internal/operators/map.js | 38 + .../_esm2015/internal/operators/map.js.map | 1 + .../rxjs/_esm2015/internal/operators/mapTo.js | 22 + .../_esm2015/internal/operators/mapTo.js.map | 1 + .../internal/operators/materialize.js | 31 + .../internal/operators/materialize.js.map | 1 + .../rxjs/_esm2015/internal/operators/max.js | 8 + .../_esm2015/internal/operators/max.js.map | 1 + .../rxjs/_esm2015/internal/operators/merge.js | 5 + .../_esm2015/internal/operators/merge.js.map | 1 + .../_esm2015/internal/operators/mergeAll.js | 6 + .../internal/operators/mergeAll.js.map | 1 + .../_esm2015/internal/operators/mergeMap.js | 86 + .../internal/operators/mergeMap.js.map | 1 + .../_esm2015/internal/operators/mergeMapTo.js | 11 + .../internal/operators/mergeMapTo.js.map | 1 + .../_esm2015/internal/operators/mergeScan.js | 89 + .../internal/operators/mergeScan.js.map | 1 + .../rxjs/_esm2015/internal/operators/min.js | 8 + .../_esm2015/internal/operators/min.js.map | 1 + .../_esm2015/internal/operators/multicast.js | 35 + .../internal/operators/multicast.js.map | 1 + .../_esm2015/internal/operators/observeOn.js | 50 + .../internal/operators/observeOn.js.map | 1 + .../internal/operators/onErrorResumeNext.js | 64 + .../operators/onErrorResumeNext.js.map | 1 + .../_esm2015/internal/operators/pairwise.js | 29 + .../internal/operators/pairwise.js.map | 1 + .../_esm2015/internal/operators/partition.js | 9 + .../internal/operators/partition.js.map | 1 + .../rxjs/_esm2015/internal/operators/pluck.js | 25 + .../_esm2015/internal/operators/pluck.js.map | 1 + .../_esm2015/internal/operators/publish.js | 8 + .../internal/operators/publish.js.map | 1 + .../internal/operators/publishBehavior.js | 6 + .../internal/operators/publishBehavior.js.map | 1 + .../internal/operators/publishLast.js | 6 + .../internal/operators/publishLast.js.map | 1 + .../internal/operators/publishReplay.js | 11 + .../internal/operators/publishReplay.js.map | 1 + .../rxjs/_esm2015/internal/operators/race.js | 11 + .../_esm2015/internal/operators/race.js.map | 1 + .../_esm2015/internal/operators/reduce.js | 15 + .../_esm2015/internal/operators/reduce.js.map | 1 + .../_esm2015/internal/operators/refCount.js | 52 + .../internal/operators/refCount.js.map | 1 + .../_esm2015/internal/operators/repeat.js | 44 + .../_esm2015/internal/operators/repeat.js.map | 1 + .../_esm2015/internal/operators/repeatWhen.js | 77 + .../internal/operators/repeatWhen.js.map | 1 + .../rxjs/_esm2015/internal/operators/retry.js | 33 + .../_esm2015/internal/operators/retry.js.map | 1 + .../_esm2015/internal/operators/retryWhen.js | 69 + .../internal/operators/retryWhen.js.map | 1 + .../_esm2015/internal/operators/sample.js | 39 + .../_esm2015/internal/operators/sample.js.map | 1 + .../_esm2015/internal/operators/sampleTime.js | 39 + .../internal/operators/sampleTime.js.map | 1 + .../rxjs/_esm2015/internal/operators/scan.js | 58 + .../_esm2015/internal/operators/scan.js.map | 1 + .../internal/operators/sequenceEqual.js | 99 + .../internal/operators/sequenceEqual.js.map | 1 + .../rxjs/_esm2015/internal/operators/share.js | 10 + .../_esm2015/internal/operators/share.js.map | 1 + .../internal/operators/shareReplay.js | 53 + .../internal/operators/shareReplay.js.map | 1 + .../_esm2015/internal/operators/single.js | 62 + .../_esm2015/internal/operators/single.js.map | 1 + .../rxjs/_esm2015/internal/operators/skip.js | 25 + .../_esm2015/internal/operators/skip.js.map | 1 + .../_esm2015/internal/operators/skipLast.js | 44 + .../internal/operators/skipLast.js.map | 1 + .../_esm2015/internal/operators/skipUntil.js | 42 + .../internal/operators/skipUntil.js.map | 1 + .../_esm2015/internal/operators/skipWhile.js | 39 + .../internal/operators/skipWhile.js.map | 1 + .../_esm2015/internal/operators/startWith.js | 13 + .../internal/operators/startWith.js.map | 1 + .../internal/operators/subscribeOn.js | 16 + .../internal/operators/subscribeOn.js.map | 1 + .../_esm2015/internal/operators/switchAll.js | 6 + .../internal/operators/switchAll.js.map | 1 + .../_esm2015/internal/operators/switchMap.js | 73 + .../internal/operators/switchMap.js.map | 1 + .../internal/operators/switchMapTo.js | 5 + .../internal/operators/switchMapTo.js.map | 1 + .../rxjs/_esm2015/internal/operators/take.js | 43 + .../_esm2015/internal/operators/take.js.map | 1 + .../_esm2015/internal/operators/takeLast.js | 58 + .../internal/operators/takeLast.js.map | 1 + .../_esm2015/internal/operators/takeUntil.js | 32 + .../internal/operators/takeUntil.js.map | 1 + .../_esm2015/internal/operators/takeWhile.js | 46 + .../internal/operators/takeWhile.js.map | 1 + .../rxjs/_esm2015/internal/operators/tap.js | 69 + .../_esm2015/internal/operators/tap.js.map | 1 + .../_esm2015/internal/operators/throttle.js | 82 + .../internal/operators/throttle.js.map | 1 + .../internal/operators/throttleTime.js | 73 + .../internal/operators/throttleTime.js.map | 1 + .../internal/operators/throwIfEmpty.js | 45 + .../internal/operators/throwIfEmpty.js.map | 1 + .../internal/operators/timeInterval.js | 16 + .../internal/operators/timeInterval.js.map | 1 + .../_esm2015/internal/operators/timeout.js | 8 + .../internal/operators/timeout.js.map | 1 + .../internal/operators/timeoutWith.js | 59 + .../internal/operators/timeoutWith.js.map | 1 + .../_esm2015/internal/operators/timestamp.js | 12 + .../internal/operators/timestamp.js.map | 1 + .../_esm2015/internal/operators/toArray.js | 12 + .../internal/operators/toArray.js.map | 1 + .../_esm2015/internal/operators/window.js | 61 + .../_esm2015/internal/operators/window.js.map | 1 + .../internal/operators/windowCount.js | 69 + .../internal/operators/windowCount.js.map | 1 + .../_esm2015/internal/operators/windowTime.js | 142 + .../internal/operators/windowTime.js.map | 1 + .../internal/operators/windowToggle.js | 123 + .../internal/operators/windowToggle.js.map | 1 + .../_esm2015/internal/operators/windowWhen.js | 75 + .../internal/operators/windowWhen.js.map | 1 + .../internal/operators/withLatestFrom.js | 73 + .../internal/operators/withLatestFrom.js.map | 1 + .../rxjs/_esm2015/internal/operators/zip.js | 7 + .../_esm2015/internal/operators/zip.js.map | 1 + .../_esm2015/internal/operators/zipAll.js | 5 + .../_esm2015/internal/operators/zipAll.js.map | 1 + .../internal/scheduled/scheduleArray.js | 20 + .../internal/scheduled/scheduleArray.js.map | 1 + .../internal/scheduled/scheduleIterable.js | 45 + .../scheduled/scheduleIterable.js.map | 1 + .../internal/scheduled/scheduleObservable.js | 18 + .../scheduled/scheduleObservable.js.map | 1 + .../internal/scheduled/schedulePromise.js | 17 + .../internal/scheduled/schedulePromise.js.map | 1 + .../_esm2015/internal/scheduled/scheduled.js | 26 + .../internal/scheduled/scheduled.js.map | 1 + .../_esm2015/internal/scheduler/Action.js | 10 + .../_esm2015/internal/scheduler/Action.js.map | 1 + .../scheduler/AnimationFrameAction.js | 26 + .../scheduler/AnimationFrameAction.js.map | 1 + .../scheduler/AnimationFrameScheduler.js | 25 + .../scheduler/AnimationFrameScheduler.js.map | 1 + .../_esm2015/internal/scheduler/AsapAction.js | 27 + .../internal/scheduler/AsapAction.js.map | 1 + .../internal/scheduler/AsapScheduler.js | 25 + .../internal/scheduler/AsapScheduler.js.map | 1 + .../internal/scheduler/AsyncAction.js | 80 + .../internal/scheduler/AsyncAction.js.map | 1 + .../internal/scheduler/AsyncScheduler.js | 46 + .../internal/scheduler/AsyncScheduler.js.map | 1 + .../internal/scheduler/QueueAction.js | 29 + .../internal/scheduler/QueueAction.js.map | 1 + .../internal/scheduler/QueueScheduler.js | 4 + .../internal/scheduler/QueueScheduler.js.map | 1 + .../scheduler/VirtualTimeScheduler.js | 82 + .../scheduler/VirtualTimeScheduler.js.map | 1 + .../internal/scheduler/animationFrame.js | 4 + .../internal/scheduler/animationFrame.js.map | 1 + .../rxjs/_esm2015/internal/scheduler/asap.js | 4 + .../_esm2015/internal/scheduler/asap.js.map | 1 + .../rxjs/_esm2015/internal/scheduler/async.js | 4 + .../_esm2015/internal/scheduler/async.js.map | 1 + .../rxjs/_esm2015/internal/scheduler/queue.js | 4 + .../_esm2015/internal/scheduler/queue.js.map | 1 + .../rxjs/_esm2015/internal/symbol/iterator.js | 9 + .../_esm2015/internal/symbol/iterator.js.map | 1 + .../_esm2015/internal/symbol/observable.js | 2 + .../internal/symbol/observable.js.map | 1 + .../_esm2015/internal/symbol/rxSubscriber.js | 5 + .../internal/symbol/rxSubscriber.js.map | 1 + .../internal/testing/ColdObservable.js | 30 + .../internal/testing/ColdObservable.js.map | 1 + .../internal/testing/HotObservable.js | 34 + .../internal/testing/HotObservable.js.map | 1 + .../internal/testing/SubscriptionLog.js | 7 + .../internal/testing/SubscriptionLog.js.map | 1 + .../internal/testing/SubscriptionLoggable.js | 16 + .../testing/SubscriptionLoggable.js.map | 1 + .../_esm2015/internal/testing/TestMessage.js | 1 + .../internal/testing/TestMessage.js.map | 1 + .../internal/testing/TestScheduler.js | 322 + .../internal/testing/TestScheduler.js.map | 1 + .../rxjs/_esm2015/internal/types.js | 1 + .../rxjs/_esm2015/internal/types.js.map | 1 + .../internal/util/ArgumentOutOfRangeError.js | 12 + .../util/ArgumentOutOfRangeError.js.map | 1 + .../rxjs/_esm2015/internal/util/EmptyError.js | 12 + .../_esm2015/internal/util/EmptyError.js.map | 1 + .../rxjs/_esm2015/internal/util/Immediate.js | 27 + .../_esm2015/internal/util/Immediate.js.map | 1 + .../internal/util/ObjectUnsubscribedError.js | 12 + .../util/ObjectUnsubscribedError.js.map | 1 + .../_esm2015/internal/util/TimeoutError.js | 12 + .../internal/util/TimeoutError.js.map | 1 + .../internal/util/UnsubscriptionError.js | 15 + .../internal/util/UnsubscriptionError.js.map | 1 + .../_esm2015/internal/util/applyMixins.js | 11 + .../_esm2015/internal/util/applyMixins.js.map | 1 + .../_esm2015/internal/util/canReportError.js | 17 + .../internal/util/canReportError.js.map | 1 + .../_esm2015/internal/util/errorObject.js | 2 + .../_esm2015/internal/util/errorObject.js.map | 1 + .../_esm2015/internal/util/hostReportError.js | 4 + .../internal/util/hostReportError.js.map | 1 + .../rxjs/_esm2015/internal/util/identity.js | 4 + .../_esm2015/internal/util/identity.js.map | 1 + .../rxjs/_esm2015/internal/util/isArray.js | 2 + .../_esm2015/internal/util/isArray.js.map | 1 + .../_esm2015/internal/util/isArrayLike.js | 2 + .../_esm2015/internal/util/isArrayLike.js.map | 1 + .../rxjs/_esm2015/internal/util/isDate.js | 4 + .../rxjs/_esm2015/internal/util/isDate.js.map | 1 + .../rxjs/_esm2015/internal/util/isFunction.js | 4 + .../_esm2015/internal/util/isFunction.js.map | 1 + .../internal/util/isInteropObservable.js | 5 + .../internal/util/isInteropObservable.js.map | 1 + .../rxjs/_esm2015/internal/util/isIterable.js | 5 + .../_esm2015/internal/util/isIterable.js.map | 1 + .../rxjs/_esm2015/internal/util/isNumeric.js | 5 + .../_esm2015/internal/util/isNumeric.js.map | 1 + .../rxjs/_esm2015/internal/util/isObject.js | 4 + .../_esm2015/internal/util/isObject.js.map | 1 + .../_esm2015/internal/util/isObservable.js | 5 + .../internal/util/isObservable.js.map | 1 + .../rxjs/_esm2015/internal/util/isPromise.js | 4 + .../_esm2015/internal/util/isPromise.js.map | 1 + .../_esm2015/internal/util/isScheduler.js | 4 + .../_esm2015/internal/util/isScheduler.js.map | 1 + .../rxjs/_esm2015/internal/util/noop.js | 2 + .../rxjs/_esm2015/internal/util/noop.js.map | 1 + .../rxjs/_esm2015/internal/util/not.js | 9 + .../rxjs/_esm2015/internal/util/not.js.map | 1 + .../rxjs/_esm2015/internal/util/pipe.js | 16 + .../rxjs/_esm2015/internal/util/pipe.js.map | 1 + .../rxjs/_esm2015/internal/util/root.js | 12 + .../rxjs/_esm2015/internal/util/root.js.map | 1 + .../_esm2015/internal/util/subscribeTo.js | 30 + .../_esm2015/internal/util/subscribeTo.js.map | 1 + .../internal/util/subscribeToArray.js | 7 + .../internal/util/subscribeToArray.js.map | 1 + .../internal/util/subscribeToIterable.js | 24 + .../internal/util/subscribeToIterable.js.map | 1 + .../internal/util/subscribeToObservable.js | 11 + .../util/subscribeToObservable.js.map | 1 + .../internal/util/subscribeToPromise.js | 12 + .../internal/util/subscribeToPromise.js.map | 1 + .../internal/util/subscribeToResult.js | 13 + .../internal/util/subscribeToResult.js.map | 1 + .../_esm2015/internal/util/toSubscriber.js | 18 + .../internal/util/toSubscriber.js.map | 1 + .../rxjs/_esm2015/internal/util/tryCatch.js | 20 + .../_esm2015/internal/util/tryCatch.js.map | 1 + .../rxjs/_esm2015/operators/index.js | 105 + .../rxjs/_esm2015/operators/index.js.map | 1 + .../rxjs/_esm2015/path-mapping.js | 453 + .../rxjs/_esm2015/testing/index.js | 2 + .../rxjs/_esm2015/testing/index.js.map | 1 + .../rxjs/_esm2015/webSocket/index.js | 3 + .../rxjs/_esm2015/webSocket/index.js.map | 1 + .../node_modules/rxjs/_esm5/LICENSE.txt | 202 + .../node_modules/rxjs/_esm5/README.md | 147 + .../node_modules/rxjs/_esm5/ajax/index.js | 4 + .../node_modules/rxjs/_esm5/ajax/index.js.map | 1 + .../node_modules/rxjs/_esm5/fetch/index.js | 3 + .../rxjs/_esm5/fetch/index.js.map | 1 + .../node_modules/rxjs/_esm5/index.js | 57 + .../node_modules/rxjs/_esm5/index.js.map | 1 + .../_esm5/internal-compatibility/index.js | 57 + .../_esm5/internal-compatibility/index.js.map | 1 + .../rxjs/_esm5/internal/AsyncSubject.js | 47 + .../rxjs/_esm5/internal/AsyncSubject.js.map | 1 + .../rxjs/_esm5/internal/BehaviorSubject.js | 43 + .../_esm5/internal/BehaviorSubject.js.map | 1 + .../rxjs/_esm5/internal/InnerSubscriber.js | 28 + .../_esm5/internal/InnerSubscriber.js.map | 1 + .../rxjs/_esm5/internal/Notification.js | 76 + .../rxjs/_esm5/internal/Notification.js.map | 1 + .../rxjs/_esm5/internal/Observable.js | 116 + .../rxjs/_esm5/internal/Observable.js.map | 1 + .../rxjs/_esm5/internal/Observer.js | 17 + .../rxjs/_esm5/internal/Observer.js.map | 1 + .../rxjs/_esm5/internal/Operator.js | 1 + .../rxjs/_esm5/internal/Operator.js.map | 1 + .../rxjs/_esm5/internal/OuterSubscriber.js | 21 + .../_esm5/internal/OuterSubscriber.js.map | 1 + .../rxjs/_esm5/internal/ReplaySubject.js | 117 + .../rxjs/_esm5/internal/ReplaySubject.js.map | 1 + .../node_modules/rxjs/_esm5/internal/Rx.js | 173 + .../rxjs/_esm5/internal/Rx.js.map | 1 + .../rxjs/_esm5/internal/Scheduler.js | 19 + .../rxjs/_esm5/internal/Scheduler.js.map | 1 + .../rxjs/_esm5/internal/Subject.js | 158 + .../rxjs/_esm5/internal/Subject.js.map | 1 + .../_esm5/internal/SubjectSubscription.js | 32 + .../_esm5/internal/SubjectSubscription.js.map | 1 + .../rxjs/_esm5/internal/Subscriber.js | 233 + .../rxjs/_esm5/internal/Subscriber.js.map | 1 + .../rxjs/_esm5/internal/Subscription.js | 136 + .../rxjs/_esm5/internal/Subscription.js.map | 1 + .../rxjs/_esm5/internal/config.js | 19 + .../rxjs/_esm5/internal/config.js.map | 1 + .../observable/ConnectableObservable.js | 142 + .../observable/ConnectableObservable.js.map | 1 + .../observable/SubscribeOnObservable.js | 51 + .../observable/SubscribeOnObservable.js.map | 1 + .../_esm5/internal/observable/bindCallback.js | 105 + .../internal/observable/bindCallback.js.map | 1 + .../internal/observable/bindNodeCallback.js | 113 + .../observable/bindNodeCallback.js.map | 1 + .../internal/observable/combineLatest.js | 101 + .../internal/observable/combineLatest.js.map | 1 + .../rxjs/_esm5/internal/observable/concat.js | 11 + .../_esm5/internal/observable/concat.js.map | 1 + .../rxjs/_esm5/internal/observable/defer.js | 19 + .../_esm5/internal/observable/defer.js.map | 1 + .../internal/observable/dom/AjaxObservable.js | 374 + .../observable/dom/AjaxObservable.js.map | 1 + .../observable/dom/WebSocketSubject.js | 217 + .../observable/dom/WebSocketSubject.js.map | 1 + .../_esm5/internal/observable/dom/ajax.js | 4 + .../_esm5/internal/observable/dom/ajax.js.map | 1 + .../_esm5/internal/observable/dom/fetch.js | 53 + .../internal/observable/dom/fetch.js.map | 1 + .../internal/observable/dom/webSocket.js | 6 + .../internal/observable/dom/webSocket.js.map | 1 + .../rxjs/_esm5/internal/observable/empty.js | 10 + .../_esm5/internal/observable/empty.js.map | 1 + .../_esm5/internal/observable/forkJoin.js | 69 + .../_esm5/internal/observable/forkJoin.js.map | 1 + .../rxjs/_esm5/internal/observable/from.js | 16 + .../_esm5/internal/observable/from.js.map | 1 + .../_esm5/internal/observable/fromArray.js | 13 + .../internal/observable/fromArray.js.map | 1 + .../_esm5/internal/observable/fromEvent.js | 63 + .../internal/observable/fromEvent.js.map | 1 + .../internal/observable/fromEventPattern.js | 32 + .../observable/fromEventPattern.js.map | 1 + .../_esm5/internal/observable/fromIterable.js | 16 + .../internal/observable/fromIterable.js.map | 1 + .../_esm5/internal/observable/fromPromise.js | 13 + .../internal/observable/fromPromise.js.map | 1 + .../_esm5/internal/observable/generate.js | 125 + .../_esm5/internal/observable/generate.js.map | 1 + .../rxjs/_esm5/internal/observable/iif.js | 13 + .../rxjs/_esm5/internal/observable/iif.js.map | 1 + .../_esm5/internal/observable/interval.js | 28 + .../_esm5/internal/observable/interval.js.map | 1 + .../rxjs/_esm5/internal/observable/merge.js | 28 + .../_esm5/internal/observable/merge.js.map | 1 + .../rxjs/_esm5/internal/observable/never.js | 8 + .../_esm5/internal/observable/never.js.map | 1 + .../rxjs/_esm5/internal/observable/of.js | 19 + .../rxjs/_esm5/internal/observable/of.js.map | 1 + .../internal/observable/onErrorResumeNext.js | 27 + .../observable/onErrorResumeNext.js.map | 1 + .../rxjs/_esm5/internal/observable/pairs.js | 39 + .../_esm5/internal/observable/pairs.js.map | 1 + .../_esm5/internal/observable/partition.js | 12 + .../internal/observable/partition.js.map | 1 + .../rxjs/_esm5/internal/observable/race.js | 78 + .../_esm5/internal/observable/race.js.map | 1 + .../rxjs/_esm5/internal/observable/range.js | 48 + .../_esm5/internal/observable/range.js.map | 1 + .../_esm5/internal/observable/throwError.js | 15 + .../internal/observable/throwError.js.map | 1 + .../rxjs/_esm5/internal/observable/timer.js | 41 + .../_esm5/internal/observable/timer.js.map | 1 + .../rxjs/_esm5/internal/observable/using.js | 33 + .../_esm5/internal/observable/using.js.map | 1 + .../rxjs/_esm5/internal/observable/zip.js | 218 + .../rxjs/_esm5/internal/observable/zip.js.map | 1 + .../rxjs/_esm5/internal/operators/audit.js | 69 + .../_esm5/internal/operators/audit.js.map | 1 + .../_esm5/internal/operators/auditTime.js | 11 + .../_esm5/internal/operators/auditTime.js.map | 1 + .../rxjs/_esm5/internal/operators/buffer.js | 37 + .../_esm5/internal/operators/buffer.js.map | 1 + .../_esm5/internal/operators/bufferCount.js | 90 + .../internal/operators/bufferCount.js.map | 1 + .../_esm5/internal/operators/bufferTime.js | 148 + .../internal/operators/bufferTime.js.map | 1 + .../_esm5/internal/operators/bufferToggle.js | 107 + .../internal/operators/bufferToggle.js.map | 1 + .../_esm5/internal/operators/bufferWhen.js | 82 + .../internal/operators/bufferWhen.js.map | 1 + .../_esm5/internal/operators/catchError.js | 51 + .../internal/operators/catchError.js.map | 1 + .../_esm5/internal/operators/combineAll.js | 6 + .../internal/operators/combineAll.js.map | 1 + .../_esm5/internal/operators/combineLatest.js | 20 + .../internal/operators/combineLatest.js.map | 1 + .../rxjs/_esm5/internal/operators/concat.js | 10 + .../_esm5/internal/operators/concat.js.map | 1 + .../_esm5/internal/operators/concatAll.js | 6 + .../_esm5/internal/operators/concatAll.js.map | 1 + .../_esm5/internal/operators/concatMap.js | 6 + .../_esm5/internal/operators/concatMap.js.map | 1 + .../_esm5/internal/operators/concatMapTo.js | 6 + .../internal/operators/concatMapTo.js.map | 1 + .../rxjs/_esm5/internal/operators/count.js | 54 + .../_esm5/internal/operators/count.js.map | 1 + .../rxjs/_esm5/internal/operators/debounce.js | 76 + .../_esm5/internal/operators/debounce.js.map | 1 + .../_esm5/internal/operators/debounceTime.js | 64 + .../internal/operators/debounceTime.js.map | 1 + .../internal/operators/defaultIfEmpty.js | 39 + .../internal/operators/defaultIfEmpty.js.map | 1 + .../rxjs/_esm5/internal/operators/delay.js | 93 + .../_esm5/internal/operators/delay.js.map | 1 + .../_esm5/internal/operators/delayWhen.js | 132 + .../_esm5/internal/operators/delayWhen.js.map | 1 + .../_esm5/internal/operators/dematerialize.js | 27 + .../internal/operators/dematerialize.js.map | 1 + .../rxjs/_esm5/internal/operators/distinct.js | 65 + .../_esm5/internal/operators/distinct.js.map | 1 + .../operators/distinctUntilChanged.js | 60 + .../operators/distinctUntilChanged.js.map | 1 + .../operators/distinctUntilKeyChanged.js | 6 + .../operators/distinctUntilKeyChanged.js.map | 1 + .../_esm5/internal/operators/elementAt.js | 18 + .../_esm5/internal/operators/elementAt.js.map | 1 + .../rxjs/_esm5/internal/operators/endWith.js | 11 + .../_esm5/internal/operators/endWith.js.map | 1 + .../rxjs/_esm5/internal/operators/every.js | 51 + .../_esm5/internal/operators/every.js.map | 1 + .../rxjs/_esm5/internal/operators/exhaust.js | 45 + .../_esm5/internal/operators/exhaust.js.map | 1 + .../_esm5/internal/operators/exhaustMap.js | 85 + .../internal/operators/exhaustMap.js.map | 1 + .../rxjs/_esm5/internal/operators/expand.js | 105 + .../_esm5/internal/operators/expand.js.map | 1 + .../rxjs/_esm5/internal/operators/filter.js | 43 + .../_esm5/internal/operators/filter.js.map | 1 + .../rxjs/_esm5/internal/operators/finalize.js | 26 + .../_esm5/internal/operators/finalize.js.map | 1 + .../rxjs/_esm5/internal/operators/find.js | 59 + .../rxjs/_esm5/internal/operators/find.js.map | 1 + .../_esm5/internal/operators/findIndex.js | 6 + .../_esm5/internal/operators/findIndex.js.map | 1 + .../rxjs/_esm5/internal/operators/first.js | 12 + .../_esm5/internal/operators/first.js.map | 1 + .../rxjs/_esm5/internal/operators/groupBy.js | 182 + .../_esm5/internal/operators/groupBy.js.map | 1 + .../internal/operators/ignoreElements.js | 26 + .../internal/operators/ignoreElements.js.map | 1 + .../rxjs/_esm5/internal/operators/index.js | 104 + .../_esm5/internal/operators/index.js.map | 1 + .../rxjs/_esm5/internal/operators/isEmpty.js | 33 + .../_esm5/internal/operators/isEmpty.js.map | 1 + .../rxjs/_esm5/internal/operators/last.js | 12 + .../rxjs/_esm5/internal/operators/last.js.map | 1 + .../rxjs/_esm5/internal/operators/map.js | 45 + .../rxjs/_esm5/internal/operators/map.js.map | 1 + .../rxjs/_esm5/internal/operators/mapTo.js | 28 + .../_esm5/internal/operators/mapTo.js.map | 1 + .../_esm5/internal/operators/materialize.js | 38 + .../internal/operators/materialize.js.map | 1 + .../rxjs/_esm5/internal/operators/max.js | 9 + .../rxjs/_esm5/internal/operators/max.js.map | 1 + .../rxjs/_esm5/internal/operators/merge.js | 10 + .../_esm5/internal/operators/merge.js.map | 1 + .../rxjs/_esm5/internal/operators/mergeAll.js | 10 + .../_esm5/internal/operators/mergeAll.js.map | 1 + .../rxjs/_esm5/internal/operators/mergeMap.js | 103 + .../_esm5/internal/operators/mergeMap.js.map | 1 + .../_esm5/internal/operators/mergeMapTo.js | 15 + .../internal/operators/mergeMapTo.js.map | 1 + .../_esm5/internal/operators/mergeScan.js | 100 + .../_esm5/internal/operators/mergeScan.js.map | 1 + .../rxjs/_esm5/internal/operators/min.js | 9 + .../rxjs/_esm5/internal/operators/min.js.map | 1 + .../_esm5/internal/operators/multicast.js | 38 + .../_esm5/internal/operators/multicast.js.map | 1 + .../_esm5/internal/operators/observeOn.js | 69 + .../_esm5/internal/operators/observeOn.js.map | 1 + .../internal/operators/onErrorResumeNext.js | 78 + .../operators/onErrorResumeNext.js.map | 1 + .../rxjs/_esm5/internal/operators/pairwise.js | 37 + .../_esm5/internal/operators/pairwise.js.map | 1 + .../_esm5/internal/operators/partition.js | 12 + .../_esm5/internal/operators/partition.js.map | 1 + .../rxjs/_esm5/internal/operators/pluck.js | 30 + .../_esm5/internal/operators/pluck.js.map | 1 + .../rxjs/_esm5/internal/operators/publish.js | 9 + .../_esm5/internal/operators/publish.js.map | 1 + .../internal/operators/publishBehavior.js | 7 + .../internal/operators/publishBehavior.js.map | 1 + .../_esm5/internal/operators/publishLast.js | 7 + .../internal/operators/publishLast.js.map | 1 + .../_esm5/internal/operators/publishReplay.js | 12 + .../internal/operators/publishReplay.js.map | 1 + .../rxjs/_esm5/internal/operators/race.js | 16 + .../rxjs/_esm5/internal/operators/race.js.map | 1 + .../rxjs/_esm5/internal/operators/reduce.js | 16 + .../_esm5/internal/operators/reduce.js.map | 1 + .../rxjs/_esm5/internal/operators/refCount.js | 58 + .../_esm5/internal/operators/refCount.js.map | 1 + .../rxjs/_esm5/internal/operators/repeat.js | 53 + .../_esm5/internal/operators/repeat.js.map | 1 + .../_esm5/internal/operators/repeatWhen.js | 83 + .../internal/operators/repeatWhen.js.map | 1 + .../rxjs/_esm5/internal/operators/retry.js | 42 + .../_esm5/internal/operators/retry.js.map | 1 + .../_esm5/internal/operators/retryWhen.js | 75 + .../_esm5/internal/operators/retryWhen.js.map | 1 + .../rxjs/_esm5/internal/operators/sample.js | 45 + .../_esm5/internal/operators/sample.js.map | 1 + .../_esm5/internal/operators/sampleTime.js | 48 + .../internal/operators/sampleTime.js.map | 1 + .../rxjs/_esm5/internal/operators/scan.js | 71 + .../rxjs/_esm5/internal/operators/scan.js.map | 1 + .../_esm5/internal/operators/sequenceEqual.js | 110 + .../internal/operators/sequenceEqual.js.map | 1 + .../rxjs/_esm5/internal/operators/share.js | 11 + .../_esm5/internal/operators/share.js.map | 1 + .../_esm5/internal/operators/shareReplay.js | 55 + .../internal/operators/shareReplay.js.map | 1 + .../rxjs/_esm5/internal/operators/single.js | 68 + .../_esm5/internal/operators/single.js.map | 1 + .../rxjs/_esm5/internal/operators/skip.js | 31 + .../rxjs/_esm5/internal/operators/skip.js.map | 1 + .../rxjs/_esm5/internal/operators/skipLast.js | 50 + .../_esm5/internal/operators/skipLast.js.map | 1 + .../_esm5/internal/operators/skipUntil.js | 48 + .../_esm5/internal/operators/skipUntil.js.map | 1 + .../_esm5/internal/operators/skipWhile.js | 45 + .../_esm5/internal/operators/skipWhile.js.map | 1 + .../_esm5/internal/operators/startWith.js | 18 + .../_esm5/internal/operators/startWith.js.map | 1 + .../_esm5/internal/operators/subscribeOn.js | 21 + .../internal/operators/subscribeOn.js.map | 1 + .../_esm5/internal/operators/switchAll.js | 7 + .../_esm5/internal/operators/switchAll.js.map | 1 + .../_esm5/internal/operators/switchMap.js | 79 + .../_esm5/internal/operators/switchMap.js.map | 1 + .../_esm5/internal/operators/switchMapTo.js | 6 + .../internal/operators/switchMapTo.js.map | 1 + .../rxjs/_esm5/internal/operators/take.js | 49 + .../rxjs/_esm5/internal/operators/take.js.map | 1 + .../rxjs/_esm5/internal/operators/takeLast.js | 64 + .../_esm5/internal/operators/takeLast.js.map | 1 + .../_esm5/internal/operators/takeUntil.js | 38 + .../_esm5/internal/operators/takeUntil.js.map | 1 + .../_esm5/internal/operators/takeWhile.js | 57 + .../_esm5/internal/operators/takeWhile.js.map | 1 + .../rxjs/_esm5/internal/operators/tap.js | 75 + .../rxjs/_esm5/internal/operators/tap.js.map | 1 + .../rxjs/_esm5/internal/operators/throttle.js | 91 + .../_esm5/internal/operators/throttle.js.map | 1 + .../_esm5/internal/operators/throttleTime.js | 85 + .../internal/operators/throttleTime.js.map | 1 + .../_esm5/internal/operators/throwIfEmpty.js | 54 + .../internal/operators/throwIfEmpty.js.map | 1 + .../_esm5/internal/operators/timeInterval.js | 30 + .../internal/operators/timeInterval.js.map | 1 + .../rxjs/_esm5/internal/operators/timeout.js | 12 + .../_esm5/internal/operators/timeout.js.map | 1 + .../_esm5/internal/operators/timeoutWith.js | 68 + .../internal/operators/timeoutWith.js.map | 1 + .../_esm5/internal/operators/timestamp.js | 18 + .../_esm5/internal/operators/timestamp.js.map | 1 + .../rxjs/_esm5/internal/operators/toArray.js | 13 + .../_esm5/internal/operators/toArray.js.map | 1 + .../rxjs/_esm5/internal/operators/window.js | 67 + .../_esm5/internal/operators/window.js.map | 1 + .../_esm5/internal/operators/windowCount.js | 78 + .../internal/operators/windowCount.js.map | 1 + .../_esm5/internal/operators/windowTime.js | 155 + .../internal/operators/windowTime.js.map | 1 + .../_esm5/internal/operators/windowToggle.js | 129 + .../internal/operators/windowToggle.js.map | 1 + .../_esm5/internal/operators/windowWhen.js | 84 + .../internal/operators/windowWhen.js.map | 1 + .../internal/operators/withLatestFrom.js | 83 + .../internal/operators/withLatestFrom.js.map | 1 + .../rxjs/_esm5/internal/operators/zip.js | 12 + .../rxjs/_esm5/internal/operators/zip.js.map | 1 + .../rxjs/_esm5/internal/operators/zipAll.js | 6 + .../_esm5/internal/operators/zipAll.js.map | 1 + .../_esm5/internal/scheduled/scheduleArray.js | 21 + .../internal/scheduled/scheduleArray.js.map | 1 + .../internal/scheduled/scheduleIterable.js | 46 + .../scheduled/scheduleIterable.js.map | 1 + .../internal/scheduled/scheduleObservable.js | 19 + .../scheduled/scheduleObservable.js.map | 1 + .../internal/scheduled/schedulePromise.js | 20 + .../internal/scheduled/schedulePromise.js.map | 1 + .../_esm5/internal/scheduled/scheduled.js | 27 + .../_esm5/internal/scheduled/scheduled.js.map | 1 + .../rxjs/_esm5/internal/scheduler/Action.js | 18 + .../_esm5/internal/scheduler/Action.js.map | 1 + .../scheduler/AnimationFrameAction.js | 38 + .../scheduler/AnimationFrameAction.js.map | 1 + .../scheduler/AnimationFrameScheduler.js | 33 + .../scheduler/AnimationFrameScheduler.js.map | 1 + .../_esm5/internal/scheduler/AsapAction.js | 39 + .../internal/scheduler/AsapAction.js.map | 1 + .../_esm5/internal/scheduler/AsapScheduler.js | 33 + .../internal/scheduler/AsapScheduler.js.map | 1 + .../_esm5/internal/scheduler/AsyncAction.js | 95 + .../internal/scheduler/AsyncAction.js.map | 1 + .../internal/scheduler/AsyncScheduler.js | 58 + .../internal/scheduler/AsyncScheduler.js.map | 1 + .../_esm5/internal/scheduler/QueueAction.js | 41 + .../internal/scheduler/QueueAction.js.map | 1 + .../internal/scheduler/QueueScheduler.js | 12 + .../internal/scheduler/QueueScheduler.js.map | 1 + .../scheduler/VirtualTimeScheduler.js | 110 + .../scheduler/VirtualTimeScheduler.js.map | 1 + .../internal/scheduler/animationFrame.js | 5 + .../internal/scheduler/animationFrame.js.map | 1 + .../rxjs/_esm5/internal/scheduler/asap.js | 5 + .../rxjs/_esm5/internal/scheduler/asap.js.map | 1 + .../rxjs/_esm5/internal/scheduler/async.js | 5 + .../_esm5/internal/scheduler/async.js.map | 1 + .../rxjs/_esm5/internal/scheduler/queue.js | 5 + .../_esm5/internal/scheduler/queue.js.map | 1 + .../rxjs/_esm5/internal/symbol/iterator.js | 10 + .../_esm5/internal/symbol/iterator.js.map | 1 + .../rxjs/_esm5/internal/symbol/observable.js | 3 + .../_esm5/internal/symbol/observable.js.map | 1 + .../_esm5/internal/symbol/rxSubscriber.js | 8 + .../_esm5/internal/symbol/rxSubscriber.js.map | 1 + .../_esm5/internal/testing/ColdObservable.js | 39 + .../internal/testing/ColdObservable.js.map | 1 + .../_esm5/internal/testing/HotObservable.js | 40 + .../internal/testing/HotObservable.js.map | 1 + .../_esm5/internal/testing/SubscriptionLog.js | 12 + .../internal/testing/SubscriptionLog.js.map | 1 + .../internal/testing/SubscriptionLoggable.js | 19 + .../testing/SubscriptionLoggable.js.map | 1 + .../_esm5/internal/testing/TestMessage.js | 1 + .../_esm5/internal/testing/TestMessage.js.map | 1 + .../_esm5/internal/testing/TestScheduler.js | 359 + .../internal/testing/TestScheduler.js.map | 1 + .../node_modules/rxjs/_esm5/internal/types.js | 1 + .../rxjs/_esm5/internal/types.js.map | 1 + .../internal/util/ArgumentOutOfRangeError.js | 13 + .../util/ArgumentOutOfRangeError.js.map | 1 + .../rxjs/_esm5/internal/util/EmptyError.js | 13 + .../_esm5/internal/util/EmptyError.js.map | 1 + .../rxjs/_esm5/internal/util/Immediate.js | 28 + .../rxjs/_esm5/internal/util/Immediate.js.map | 1 + .../internal/util/ObjectUnsubscribedError.js | 13 + .../util/ObjectUnsubscribedError.js.map | 1 + .../rxjs/_esm5/internal/util/TimeoutError.js | 13 + .../_esm5/internal/util/TimeoutError.js.map | 1 + .../internal/util/UnsubscriptionError.js | 15 + .../internal/util/UnsubscriptionError.js.map | 1 + .../rxjs/_esm5/internal/util/applyMixins.js | 12 + .../_esm5/internal/util/applyMixins.js.map | 1 + .../_esm5/internal/util/canReportError.js | 18 + .../_esm5/internal/util/canReportError.js.map | 1 + .../rxjs/_esm5/internal/util/errorObject.js | 3 + .../_esm5/internal/util/errorObject.js.map | 1 + .../_esm5/internal/util/hostReportError.js | 5 + .../internal/util/hostReportError.js.map | 1 + .../rxjs/_esm5/internal/util/identity.js | 5 + .../rxjs/_esm5/internal/util/identity.js.map | 1 + .../rxjs/_esm5/internal/util/isArray.js | 3 + .../rxjs/_esm5/internal/util/isArray.js.map | 1 + .../rxjs/_esm5/internal/util/isArrayLike.js | 3 + .../_esm5/internal/util/isArrayLike.js.map | 1 + .../rxjs/_esm5/internal/util/isDate.js | 5 + .../rxjs/_esm5/internal/util/isDate.js.map | 1 + .../rxjs/_esm5/internal/util/isFunction.js | 5 + .../_esm5/internal/util/isFunction.js.map | 1 + .../internal/util/isInteropObservable.js | 6 + .../internal/util/isInteropObservable.js.map | 1 + .../rxjs/_esm5/internal/util/isIterable.js | 6 + .../_esm5/internal/util/isIterable.js.map | 1 + .../rxjs/_esm5/internal/util/isNumeric.js | 6 + .../rxjs/_esm5/internal/util/isNumeric.js.map | 1 + .../rxjs/_esm5/internal/util/isObject.js | 5 + .../rxjs/_esm5/internal/util/isObject.js.map | 1 + .../rxjs/_esm5/internal/util/isObservable.js | 6 + .../_esm5/internal/util/isObservable.js.map | 1 + .../rxjs/_esm5/internal/util/isPromise.js | 5 + .../rxjs/_esm5/internal/util/isPromise.js.map | 1 + .../rxjs/_esm5/internal/util/isScheduler.js | 5 + .../_esm5/internal/util/isScheduler.js.map | 1 + .../rxjs/_esm5/internal/util/noop.js | 3 + .../rxjs/_esm5/internal/util/noop.js.map | 1 + .../rxjs/_esm5/internal/util/not.js | 10 + .../rxjs/_esm5/internal/util/not.js.map | 1 + .../rxjs/_esm5/internal/util/pipe.js | 21 + .../rxjs/_esm5/internal/util/pipe.js.map | 1 + .../rxjs/_esm5/internal/util/root.js | 13 + .../rxjs/_esm5/internal/util/root.js.map | 1 + .../rxjs/_esm5/internal/util/subscribeTo.js | 31 + .../_esm5/internal/util/subscribeTo.js.map | 1 + .../_esm5/internal/util/subscribeToArray.js | 10 + .../internal/util/subscribeToArray.js.map | 1 + .../internal/util/subscribeToIterable.js | 27 + .../internal/util/subscribeToIterable.js.map | 1 + .../internal/util/subscribeToObservable.js | 14 + .../util/subscribeToObservable.js.map | 1 + .../_esm5/internal/util/subscribeToPromise.js | 15 + .../internal/util/subscribeToPromise.js.map | 1 + .../_esm5/internal/util/subscribeToResult.js | 17 + .../internal/util/subscribeToResult.js.map | 1 + .../rxjs/_esm5/internal/util/toSubscriber.js | 19 + .../_esm5/internal/util/toSubscriber.js.map | 1 + .../rxjs/_esm5/internal/util/tryCatch.js | 21 + .../rxjs/_esm5/internal/util/tryCatch.js.map | 1 + .../rxjs/_esm5/operators/index.js | 106 + .../rxjs/_esm5/operators/index.js.map | 1 + .../node_modules/rxjs/_esm5/path-mapping.js | 453 + .../node_modules/rxjs/_esm5/testing/index.js | 3 + .../rxjs/_esm5/testing/index.js.map | 1 + .../rxjs/_esm5/webSocket/index.js | 4 + .../rxjs/_esm5/webSocket/index.js.map | 1 + .../rxjs/add/observable/bindCallback.d.ts | 1 + .../rxjs/add/observable/bindCallback.js | 4 + .../rxjs/add/observable/bindCallback.js.map | 1 + .../rxjs/add/observable/bindNodeCallback.d.ts | 1 + .../rxjs/add/observable/bindNodeCallback.js | 4 + .../add/observable/bindNodeCallback.js.map | 1 + .../rxjs/add/observable/combineLatest.d.ts | 1 + .../rxjs/add/observable/combineLatest.js | 4 + .../rxjs/add/observable/combineLatest.js.map | 1 + .../rxjs/add/observable/concat.d.ts | 1 + .../rxjs/add/observable/concat.js | 4 + .../rxjs/add/observable/concat.js.map | 1 + .../rxjs/add/observable/defer.d.ts | 1 + .../node_modules/rxjs/add/observable/defer.js | 4 + .../rxjs/add/observable/defer.js.map | 1 + .../rxjs/add/observable/dom/ajax.d.ts | 1 + .../rxjs/add/observable/dom/ajax.js | 4 + .../rxjs/add/observable/dom/ajax.js.map | 1 + .../rxjs/add/observable/dom/webSocket.d.ts | 1 + .../rxjs/add/observable/dom/webSocket.js | 4 + .../rxjs/add/observable/dom/webSocket.js.map | 1 + .../rxjs/add/observable/empty.d.ts | 1 + .../node_modules/rxjs/add/observable/empty.js | 4 + .../rxjs/add/observable/empty.js.map | 1 + .../rxjs/add/observable/forkJoin.d.ts | 1 + .../rxjs/add/observable/forkJoin.js | 4 + .../rxjs/add/observable/forkJoin.js.map | 1 + .../rxjs/add/observable/from.d.ts | 1 + .../node_modules/rxjs/add/observable/from.js | 4 + .../rxjs/add/observable/from.js.map | 1 + .../rxjs/add/observable/fromEvent.d.ts | 1 + .../rxjs/add/observable/fromEvent.js | 4 + .../rxjs/add/observable/fromEvent.js.map | 1 + .../rxjs/add/observable/fromEventPattern.d.ts | 1 + .../rxjs/add/observable/fromEventPattern.js | 4 + .../add/observable/fromEventPattern.js.map | 1 + .../rxjs/add/observable/fromPromise.d.ts | 1 + .../rxjs/add/observable/fromPromise.js | 4 + .../rxjs/add/observable/fromPromise.js.map | 1 + .../rxjs/add/observable/generate.d.ts | 1 + .../rxjs/add/observable/generate.js | 4 + .../rxjs/add/observable/generate.js.map | 1 + .../node_modules/rxjs/add/observable/if.d.ts | 1 + .../node_modules/rxjs/add/observable/if.js | 4 + .../rxjs/add/observable/if.js.map | 1 + .../rxjs/add/observable/interval.d.ts | 1 + .../rxjs/add/observable/interval.js | 4 + .../rxjs/add/observable/interval.js.map | 1 + .../rxjs/add/observable/merge.d.ts | 1 + .../node_modules/rxjs/add/observable/merge.js | 4 + .../rxjs/add/observable/merge.js.map | 1 + .../rxjs/add/observable/never.d.ts | 1 + .../node_modules/rxjs/add/observable/never.js | 4 + .../rxjs/add/observable/never.js.map | 1 + .../node_modules/rxjs/add/observable/of.d.ts | 1 + .../node_modules/rxjs/add/observable/of.js | 4 + .../rxjs/add/observable/of.js.map | 1 + .../add/observable/onErrorResumeNext.d.ts | 1 + .../rxjs/add/observable/onErrorResumeNext.js | 4 + .../add/observable/onErrorResumeNext.js.map | 1 + .../rxjs/add/observable/pairs.d.ts | 1 + .../node_modules/rxjs/add/observable/pairs.js | 4 + .../rxjs/add/observable/pairs.js.map | 1 + .../rxjs/add/observable/race.d.ts | 1 + .../node_modules/rxjs/add/observable/race.js | 4 + .../rxjs/add/observable/race.js.map | 1 + .../rxjs/add/observable/range.d.ts | 1 + .../node_modules/rxjs/add/observable/range.js | 4 + .../rxjs/add/observable/range.js.map | 1 + .../rxjs/add/observable/throw.d.ts | 1 + .../node_modules/rxjs/add/observable/throw.js | 4 + .../rxjs/add/observable/throw.js.map | 1 + .../rxjs/add/observable/timer.d.ts | 1 + .../node_modules/rxjs/add/observable/timer.js | 4 + .../rxjs/add/observable/timer.js.map | 1 + .../rxjs/add/observable/using.d.ts | 1 + .../node_modules/rxjs/add/observable/using.js | 4 + .../rxjs/add/observable/using.js.map | 1 + .../node_modules/rxjs/add/observable/zip.d.ts | 1 + .../node_modules/rxjs/add/observable/zip.js | 4 + .../rxjs/add/observable/zip.js.map | 1 + .../node_modules/rxjs/add/operator/audit.d.ts | 1 + .../node_modules/rxjs/add/operator/audit.js | 4 + .../rxjs/add/operator/audit.js.map | 1 + .../rxjs/add/operator/auditTime.d.ts | 1 + .../rxjs/add/operator/auditTime.js | 4 + .../rxjs/add/operator/auditTime.js.map | 1 + .../rxjs/add/operator/buffer.d.ts | 1 + .../node_modules/rxjs/add/operator/buffer.js | 4 + .../rxjs/add/operator/buffer.js.map | 1 + .../rxjs/add/operator/bufferCount.d.ts | 1 + .../rxjs/add/operator/bufferCount.js | 4 + .../rxjs/add/operator/bufferCount.js.map | 1 + .../rxjs/add/operator/bufferTime.d.ts | 1 + .../rxjs/add/operator/bufferTime.js | 4 + .../rxjs/add/operator/bufferTime.js.map | 1 + .../rxjs/add/operator/bufferToggle.d.ts | 1 + .../rxjs/add/operator/bufferToggle.js | 4 + .../rxjs/add/operator/bufferToggle.js.map | 1 + .../rxjs/add/operator/bufferWhen.d.ts | 1 + .../rxjs/add/operator/bufferWhen.js | 4 + .../rxjs/add/operator/bufferWhen.js.map | 1 + .../node_modules/rxjs/add/operator/catch.d.ts | 1 + .../node_modules/rxjs/add/operator/catch.js | 4 + .../rxjs/add/operator/catch.js.map | 1 + .../rxjs/add/operator/combineAll.d.ts | 1 + .../rxjs/add/operator/combineAll.js | 4 + .../rxjs/add/operator/combineAll.js.map | 1 + .../rxjs/add/operator/combineLatest.d.ts | 1 + .../rxjs/add/operator/combineLatest.js | 4 + .../rxjs/add/operator/combineLatest.js.map | 1 + .../rxjs/add/operator/concat.d.ts | 1 + .../node_modules/rxjs/add/operator/concat.js | 4 + .../rxjs/add/operator/concat.js.map | 1 + .../rxjs/add/operator/concatAll.d.ts | 1 + .../rxjs/add/operator/concatAll.js | 4 + .../rxjs/add/operator/concatAll.js.map | 1 + .../rxjs/add/operator/concatMap.d.ts | 1 + .../rxjs/add/operator/concatMap.js | 4 + .../rxjs/add/operator/concatMap.js.map | 1 + .../rxjs/add/operator/concatMapTo.d.ts | 1 + .../rxjs/add/operator/concatMapTo.js | 4 + .../rxjs/add/operator/concatMapTo.js.map | 1 + .../node_modules/rxjs/add/operator/count.d.ts | 1 + .../node_modules/rxjs/add/operator/count.js | 4 + .../rxjs/add/operator/count.js.map | 1 + .../rxjs/add/operator/debounce.d.ts | 1 + .../rxjs/add/operator/debounce.js | 4 + .../rxjs/add/operator/debounce.js.map | 1 + .../rxjs/add/operator/debounceTime.d.ts | 1 + .../rxjs/add/operator/debounceTime.js | 4 + .../rxjs/add/operator/debounceTime.js.map | 1 + .../rxjs/add/operator/defaultIfEmpty.d.ts | 1 + .../rxjs/add/operator/defaultIfEmpty.js | 4 + .../rxjs/add/operator/defaultIfEmpty.js.map | 1 + .../node_modules/rxjs/add/operator/delay.d.ts | 1 + .../node_modules/rxjs/add/operator/delay.js | 4 + .../rxjs/add/operator/delay.js.map | 1 + .../rxjs/add/operator/delayWhen.d.ts | 1 + .../rxjs/add/operator/delayWhen.js | 4 + .../rxjs/add/operator/delayWhen.js.map | 1 + .../rxjs/add/operator/dematerialize.d.ts | 1 + .../rxjs/add/operator/dematerialize.js | 4 + .../rxjs/add/operator/dematerialize.js.map | 1 + .../rxjs/add/operator/distinct.d.ts | 1 + .../rxjs/add/operator/distinct.js | 4 + .../rxjs/add/operator/distinct.js.map | 1 + .../add/operator/distinctUntilChanged.d.ts | 1 + .../rxjs/add/operator/distinctUntilChanged.js | 4 + .../add/operator/distinctUntilChanged.js.map | 1 + .../add/operator/distinctUntilKeyChanged.d.ts | 1 + .../add/operator/distinctUntilKeyChanged.js | 4 + .../operator/distinctUntilKeyChanged.js.map | 1 + .../node_modules/rxjs/add/operator/do.d.ts | 1 + .../node_modules/rxjs/add/operator/do.js | 4 + .../node_modules/rxjs/add/operator/do.js.map | 1 + .../rxjs/add/operator/elementAt.d.ts | 1 + .../rxjs/add/operator/elementAt.js | 4 + .../rxjs/add/operator/elementAt.js.map | 1 + .../node_modules/rxjs/add/operator/every.d.ts | 1 + .../node_modules/rxjs/add/operator/every.js | 4 + .../rxjs/add/operator/every.js.map | 1 + .../rxjs/add/operator/exhaust.d.ts | 1 + .../node_modules/rxjs/add/operator/exhaust.js | 4 + .../rxjs/add/operator/exhaust.js.map | 1 + .../rxjs/add/operator/exhaustMap.d.ts | 1 + .../rxjs/add/operator/exhaustMap.js | 4 + .../rxjs/add/operator/exhaustMap.js.map | 1 + .../rxjs/add/operator/expand.d.ts | 1 + .../node_modules/rxjs/add/operator/expand.js | 4 + .../rxjs/add/operator/expand.js.map | 1 + .../rxjs/add/operator/filter.d.ts | 1 + .../node_modules/rxjs/add/operator/filter.js | 4 + .../rxjs/add/operator/filter.js.map | 1 + .../rxjs/add/operator/finally.d.ts | 1 + .../node_modules/rxjs/add/operator/finally.js | 4 + .../rxjs/add/operator/finally.js.map | 1 + .../node_modules/rxjs/add/operator/find.d.ts | 1 + .../node_modules/rxjs/add/operator/find.js | 4 + .../rxjs/add/operator/find.js.map | 1 + .../rxjs/add/operator/findIndex.d.ts | 1 + .../rxjs/add/operator/findIndex.js | 4 + .../rxjs/add/operator/findIndex.js.map | 1 + .../node_modules/rxjs/add/operator/first.d.ts | 1 + .../node_modules/rxjs/add/operator/first.js | 4 + .../rxjs/add/operator/first.js.map | 1 + .../rxjs/add/operator/groupBy.d.ts | 1 + .../node_modules/rxjs/add/operator/groupBy.js | 4 + .../rxjs/add/operator/groupBy.js.map | 1 + .../rxjs/add/operator/ignoreElements.d.ts | 1 + .../rxjs/add/operator/ignoreElements.js | 4 + .../rxjs/add/operator/ignoreElements.js.map | 1 + .../rxjs/add/operator/isEmpty.d.ts | 1 + .../node_modules/rxjs/add/operator/isEmpty.js | 4 + .../rxjs/add/operator/isEmpty.js.map | 1 + .../node_modules/rxjs/add/operator/last.d.ts | 1 + .../node_modules/rxjs/add/operator/last.js | 4 + .../rxjs/add/operator/last.js.map | 1 + .../node_modules/rxjs/add/operator/let.d.ts | 1 + .../node_modules/rxjs/add/operator/let.js | 4 + .../node_modules/rxjs/add/operator/let.js.map | 1 + .../node_modules/rxjs/add/operator/map.d.ts | 1 + .../node_modules/rxjs/add/operator/map.js | 4 + .../node_modules/rxjs/add/operator/map.js.map | 1 + .../node_modules/rxjs/add/operator/mapTo.d.ts | 1 + .../node_modules/rxjs/add/operator/mapTo.js | 4 + .../rxjs/add/operator/mapTo.js.map | 1 + .../rxjs/add/operator/materialize.d.ts | 1 + .../rxjs/add/operator/materialize.js | 4 + .../rxjs/add/operator/materialize.js.map | 1 + .../node_modules/rxjs/add/operator/max.d.ts | 1 + .../node_modules/rxjs/add/operator/max.js | 4 + .../node_modules/rxjs/add/operator/max.js.map | 1 + .../node_modules/rxjs/add/operator/merge.d.ts | 1 + .../node_modules/rxjs/add/operator/merge.js | 4 + .../rxjs/add/operator/merge.js.map | 1 + .../rxjs/add/operator/mergeAll.d.ts | 1 + .../rxjs/add/operator/mergeAll.js | 4 + .../rxjs/add/operator/mergeAll.js.map | 1 + .../rxjs/add/operator/mergeMap.d.ts | 1 + .../rxjs/add/operator/mergeMap.js | 4 + .../rxjs/add/operator/mergeMap.js.map | 1 + .../rxjs/add/operator/mergeMapTo.d.ts | 1 + .../rxjs/add/operator/mergeMapTo.js | 4 + .../rxjs/add/operator/mergeMapTo.js.map | 1 + .../rxjs/add/operator/mergeScan.d.ts | 1 + .../rxjs/add/operator/mergeScan.js | 4 + .../rxjs/add/operator/mergeScan.js.map | 1 + .../node_modules/rxjs/add/operator/min.d.ts | 1 + .../node_modules/rxjs/add/operator/min.js | 4 + .../node_modules/rxjs/add/operator/min.js.map | 1 + .../rxjs/add/operator/multicast.d.ts | 1 + .../rxjs/add/operator/multicast.js | 4 + .../rxjs/add/operator/multicast.js.map | 1 + .../rxjs/add/operator/observeOn.d.ts | 1 + .../rxjs/add/operator/observeOn.js | 4 + .../rxjs/add/operator/observeOn.js.map | 1 + .../rxjs/add/operator/onErrorResumeNext.d.ts | 1 + .../rxjs/add/operator/onErrorResumeNext.js | 4 + .../add/operator/onErrorResumeNext.js.map | 1 + .../rxjs/add/operator/pairwise.d.ts | 1 + .../rxjs/add/operator/pairwise.js | 4 + .../rxjs/add/operator/pairwise.js.map | 1 + .../rxjs/add/operator/partition.d.ts | 1 + .../rxjs/add/operator/partition.js | 4 + .../rxjs/add/operator/partition.js.map | 1 + .../node_modules/rxjs/add/operator/pluck.d.ts | 1 + .../node_modules/rxjs/add/operator/pluck.js | 4 + .../rxjs/add/operator/pluck.js.map | 1 + .../rxjs/add/operator/publish.d.ts | 1 + .../node_modules/rxjs/add/operator/publish.js | 4 + .../rxjs/add/operator/publish.js.map | 1 + .../rxjs/add/operator/publishBehavior.d.ts | 1 + .../rxjs/add/operator/publishBehavior.js | 4 + .../rxjs/add/operator/publishBehavior.js.map | 1 + .../rxjs/add/operator/publishLast.d.ts | 1 + .../rxjs/add/operator/publishLast.js | 4 + .../rxjs/add/operator/publishLast.js.map | 1 + .../rxjs/add/operator/publishReplay.d.ts | 1 + .../rxjs/add/operator/publishReplay.js | 4 + .../rxjs/add/operator/publishReplay.js.map | 1 + .../node_modules/rxjs/add/operator/race.d.ts | 1 + .../node_modules/rxjs/add/operator/race.js | 4 + .../rxjs/add/operator/race.js.map | 1 + .../rxjs/add/operator/reduce.d.ts | 1 + .../node_modules/rxjs/add/operator/reduce.js | 4 + .../rxjs/add/operator/reduce.js.map | 1 + .../rxjs/add/operator/repeat.d.ts | 1 + .../node_modules/rxjs/add/operator/repeat.js | 4 + .../rxjs/add/operator/repeat.js.map | 1 + .../rxjs/add/operator/repeatWhen.d.ts | 1 + .../rxjs/add/operator/repeatWhen.js | 4 + .../rxjs/add/operator/repeatWhen.js.map | 1 + .../node_modules/rxjs/add/operator/retry.d.ts | 1 + .../node_modules/rxjs/add/operator/retry.js | 4 + .../rxjs/add/operator/retry.js.map | 1 + .../rxjs/add/operator/retryWhen.d.ts | 1 + .../rxjs/add/operator/retryWhen.js | 4 + .../rxjs/add/operator/retryWhen.js.map | 1 + .../rxjs/add/operator/sample.d.ts | 1 + .../node_modules/rxjs/add/operator/sample.js | 4 + .../rxjs/add/operator/sample.js.map | 1 + .../rxjs/add/operator/sampleTime.d.ts | 1 + .../rxjs/add/operator/sampleTime.js | 4 + .../rxjs/add/operator/sampleTime.js.map | 1 + .../node_modules/rxjs/add/operator/scan.d.ts | 1 + .../node_modules/rxjs/add/operator/scan.js | 4 + .../rxjs/add/operator/scan.js.map | 1 + .../rxjs/add/operator/sequenceEqual.d.ts | 1 + .../rxjs/add/operator/sequenceEqual.js | 4 + .../rxjs/add/operator/sequenceEqual.js.map | 1 + .../node_modules/rxjs/add/operator/share.d.ts | 1 + .../node_modules/rxjs/add/operator/share.js | 4 + .../rxjs/add/operator/share.js.map | 1 + .../rxjs/add/operator/shareReplay.d.ts | 1 + .../rxjs/add/operator/shareReplay.js | 4 + .../rxjs/add/operator/shareReplay.js.map | 1 + .../rxjs/add/operator/single.d.ts | 1 + .../node_modules/rxjs/add/operator/single.js | 4 + .../rxjs/add/operator/single.js.map | 1 + .../node_modules/rxjs/add/operator/skip.d.ts | 1 + .../node_modules/rxjs/add/operator/skip.js | 4 + .../rxjs/add/operator/skip.js.map | 1 + .../rxjs/add/operator/skipLast.d.ts | 1 + .../rxjs/add/operator/skipLast.js | 4 + .../rxjs/add/operator/skipLast.js.map | 1 + .../rxjs/add/operator/skipUntil.d.ts | 1 + .../rxjs/add/operator/skipUntil.js | 4 + .../rxjs/add/operator/skipUntil.js.map | 1 + .../rxjs/add/operator/skipWhile.d.ts | 1 + .../rxjs/add/operator/skipWhile.js | 4 + .../rxjs/add/operator/skipWhile.js.map | 1 + .../rxjs/add/operator/startWith.d.ts | 1 + .../rxjs/add/operator/startWith.js | 4 + .../rxjs/add/operator/startWith.js.map | 1 + .../rxjs/add/operator/subscribeOn.d.ts | 1 + .../rxjs/add/operator/subscribeOn.js | 4 + .../rxjs/add/operator/subscribeOn.js.map | 1 + .../rxjs/add/operator/switch.d.ts | 1 + .../node_modules/rxjs/add/operator/switch.js | 4 + .../rxjs/add/operator/switch.js.map | 1 + .../rxjs/add/operator/switchMap.d.ts | 1 + .../rxjs/add/operator/switchMap.js | 4 + .../rxjs/add/operator/switchMap.js.map | 1 + .../rxjs/add/operator/switchMapTo.d.ts | 1 + .../rxjs/add/operator/switchMapTo.js | 4 + .../rxjs/add/operator/switchMapTo.js.map | 1 + .../node_modules/rxjs/add/operator/take.d.ts | 1 + .../node_modules/rxjs/add/operator/take.js | 4 + .../rxjs/add/operator/take.js.map | 1 + .../rxjs/add/operator/takeLast.d.ts | 1 + .../rxjs/add/operator/takeLast.js | 4 + .../rxjs/add/operator/takeLast.js.map | 1 + .../rxjs/add/operator/takeUntil.d.ts | 1 + .../rxjs/add/operator/takeUntil.js | 4 + .../rxjs/add/operator/takeUntil.js.map | 1 + .../rxjs/add/operator/takeWhile.d.ts | 1 + .../rxjs/add/operator/takeWhile.js | 4 + .../rxjs/add/operator/takeWhile.js.map | 1 + .../rxjs/add/operator/throttle.d.ts | 1 + .../rxjs/add/operator/throttle.js | 4 + .../rxjs/add/operator/throttle.js.map | 1 + .../rxjs/add/operator/throttleTime.d.ts | 1 + .../rxjs/add/operator/throttleTime.js | 4 + .../rxjs/add/operator/throttleTime.js.map | 1 + .../rxjs/add/operator/timeInterval.d.ts | 1 + .../rxjs/add/operator/timeInterval.js | 4 + .../rxjs/add/operator/timeInterval.js.map | 1 + .../rxjs/add/operator/timeout.d.ts | 1 + .../node_modules/rxjs/add/operator/timeout.js | 4 + .../rxjs/add/operator/timeout.js.map | 1 + .../rxjs/add/operator/timeoutWith.d.ts | 1 + .../rxjs/add/operator/timeoutWith.js | 4 + .../rxjs/add/operator/timeoutWith.js.map | 1 + .../rxjs/add/operator/timestamp.d.ts | 1 + .../rxjs/add/operator/timestamp.js | 4 + .../rxjs/add/operator/timestamp.js.map | 1 + .../rxjs/add/operator/toArray.d.ts | 1 + .../node_modules/rxjs/add/operator/toArray.js | 4 + .../rxjs/add/operator/toArray.js.map | 1 + .../rxjs/add/operator/toPromise.d.ts | 1 + .../rxjs/add/operator/toPromise.js | 4 + .../rxjs/add/operator/toPromise.js.map | 1 + .../rxjs/add/operator/window.d.ts | 1 + .../node_modules/rxjs/add/operator/window.js | 4 + .../rxjs/add/operator/window.js.map | 1 + .../rxjs/add/operator/windowCount.d.ts | 1 + .../rxjs/add/operator/windowCount.js | 4 + .../rxjs/add/operator/windowCount.js.map | 1 + .../rxjs/add/operator/windowTime.d.ts | 1 + .../rxjs/add/operator/windowTime.js | 4 + .../rxjs/add/operator/windowTime.js.map | 1 + .../rxjs/add/operator/windowToggle.d.ts | 1 + .../rxjs/add/operator/windowToggle.js | 4 + .../rxjs/add/operator/windowToggle.js.map | 1 + .../rxjs/add/operator/windowWhen.d.ts | 1 + .../rxjs/add/operator/windowWhen.js | 4 + .../rxjs/add/operator/windowWhen.js.map | 1 + .../rxjs/add/operator/withLatestFrom.d.ts | 1 + .../rxjs/add/operator/withLatestFrom.js | 4 + .../rxjs/add/operator/withLatestFrom.js.map | 1 + .../node_modules/rxjs/add/operator/zip.d.ts | 1 + .../node_modules/rxjs/add/operator/zip.js | 4 + .../node_modules/rxjs/add/operator/zip.js.map | 1 + .../rxjs/add/operator/zipAll.d.ts | 1 + .../node_modules/rxjs/add/operator/zipAll.js | 4 + .../rxjs/add/operator/zipAll.js.map | 1 + .../node_modules/rxjs/ajax/index.d.ts | 2 + .../node_modules/rxjs/ajax/index.js | 9 + .../node_modules/rxjs/ajax/index.js.map | 1 + .../node_modules/rxjs/ajax/package.json | 8 + .../node_modules/rxjs/bundles/rxjs.umd.js | 9297 ++++++++++ .../node_modules/rxjs/bundles/rxjs.umd.js.map | 1 + .../node_modules/rxjs/bundles/rxjs.umd.min.js | 268 + .../rxjs/bundles/rxjs.umd.min.js.map | 1 + .../node_modules/rxjs/fetch/index.d.ts | 1 + .../node_modules/rxjs/fetch/index.js | 5 + .../node_modules/rxjs/fetch/index.js.map | 1 + .../node_modules/rxjs/fetch/package.json | 8 + tic-tac-toe-app/node_modules/rxjs/index.d.ts | 57 + tic-tac-toe-app/node_modules/rxjs/index.js | 115 + .../node_modules/rxjs/index.js.map | 1 + .../node_modules/rxjs/interfaces.d.ts | 1 + .../node_modules/rxjs/interfaces.js | 3 + .../node_modules/rxjs/interfaces.js.map | 1 + .../rxjs/internal-compatibility/index.d.ts | 58 + .../rxjs/internal-compatibility/index.js | 123 + .../rxjs/internal-compatibility/index.js.map | 1 + .../rxjs/internal-compatibility/package.json | 8 + .../rxjs/internal/AsyncSubject.d.ts | 19 + .../rxjs/internal/AsyncSubject.js | 60 + .../rxjs/internal/AsyncSubject.js.map | 1 + .../rxjs/internal/BehaviorSubject.d.ts | 18 + .../rxjs/internal/BehaviorSubject.js | 56 + .../rxjs/internal/BehaviorSubject.js.map | 1 + .../rxjs/internal/InnerSubscriber.d.ts | 17 + .../rxjs/internal/InnerSubscriber.js | 41 + .../rxjs/internal/InnerSubscriber.js.map | 1 + .../rxjs/internal/Notification.d.ts | 88 + .../rxjs/internal/Notification.js | 77 + .../rxjs/internal/Notification.js.map | 1 + .../rxjs/internal/Observable.d.ts | 91 + .../node_modules/rxjs/internal/Observable.js | 117 + .../rxjs/internal/Observable.js.map | 1 + .../node_modules/rxjs/internal/Observer.d.ts | 2 + .../node_modules/rxjs/internal/Observer.js | 18 + .../rxjs/internal/Observer.js.map | 1 + .../node_modules/rxjs/internal/Operator.d.ts | 5 + .../node_modules/rxjs/internal/Operator.js | 3 + .../rxjs/internal/Operator.js.map | 1 + .../rxjs/internal/OuterSubscriber.d.ts | 12 + .../rxjs/internal/OuterSubscriber.js | 34 + .../rxjs/internal/OuterSubscriber.js.map | 1 + .../rxjs/internal/ReplaySubject.d.ts | 25 + .../rxjs/internal/ReplaySubject.js | 126 + .../rxjs/internal/ReplaySubject.js.map | 1 + .../node_modules/rxjs/internal/Rx.d.ts | 195 + .../node_modules/rxjs/internal/Rx.js | 200 + .../node_modules/rxjs/internal/Rx.js.map | 1 + .../node_modules/rxjs/internal/Scheduler.d.ts | 59 + .../node_modules/rxjs/internal/Scheduler.js | 17 + .../rxjs/internal/Scheduler.js.map | 1 + .../node_modules/rxjs/internal/Subject.d.ts | 61 + .../node_modules/rxjs/internal/Subject.js | 171 + .../node_modules/rxjs/internal/Subject.js.map | 1 + .../rxjs/internal/SubjectSubscription.d.ts | 15 + .../rxjs/internal/SubjectSubscription.js | 45 + .../rxjs/internal/SubjectSubscription.js.map | 1 + .../rxjs/internal/Subscriber.d.ts | 87 + .../node_modules/rxjs/internal/Subscriber.js | 246 + .../rxjs/internal/Subscriber.js.map | 1 + .../rxjs/internal/Subscription.d.ts | 66 + .../rxjs/internal/Subscription.js | 137 + .../rxjs/internal/Subscription.js.map | 1 + .../node_modules/rxjs/internal/config.d.ts | 20 + .../node_modules/rxjs/internal/config.js | 20 + .../node_modules/rxjs/internal/config.js.map | 1 + .../observable/ConnectableObservable.d.ts | 23 + .../observable/ConnectableObservable.js | 155 + .../observable/ConnectableObservable.js.map | 1 + .../observable/SubscribeOnObservable.d.ts | 25 + .../observable/SubscribeOnObservable.js | 56 + .../observable/SubscribeOnObservable.js.map | 1 + .../internal/observable/bindCallback.d.ts | 37 + .../rxjs/internal/observable/bindCallback.js | 107 + .../internal/observable/bindCallback.js.map | 1 + .../internal/observable/bindNodeCallback.d.ts | 35 + .../internal/observable/bindNodeCallback.js | 115 + .../observable/bindNodeCallback.js.map | 1 + .../internal/observable/combineLatest.d.ts | 100 + .../rxjs/internal/observable/combineLatest.js | 115 + .../internal/observable/combineLatest.js.map | 1 + .../rxjs/internal/observable/concat.d.ts | 26 + .../rxjs/internal/observable/concat.js | 13 + .../rxjs/internal/observable/concat.js.map | 1 + .../rxjs/internal/observable/defer.d.ts | 52 + .../rxjs/internal/observable/defer.js | 21 + .../rxjs/internal/observable/defer.js.map | 1 + .../observable/dom/AjaxObservable.d.ts | 151 + .../internal/observable/dom/AjaxObservable.js | 391 + .../observable/dom/AjaxObservable.js.map | 1 + .../observable/dom/WebSocketSubject.d.ts | 170 + .../observable/dom/WebSocketSubject.js | 241 + .../observable/dom/WebSocketSubject.js.map | 1 + .../rxjs/internal/observable/dom/ajax.d.ts | 82 + .../rxjs/internal/observable/dom/ajax.js | 5 + .../rxjs/internal/observable/dom/ajax.js.map | 1 + .../rxjs/internal/observable/dom/fetch.d.ts | 52 + .../rxjs/internal/observable/dom/fetch.js | 65 + .../rxjs/internal/observable/dom/fetch.js.map | 1 + .../internal/observable/dom/webSocket.d.ts | 153 + .../rxjs/internal/observable/dom/webSocket.js | 8 + .../internal/observable/dom/webSocket.js.map | 1 + .../rxjs/internal/observable/empty.d.ts | 60 + .../rxjs/internal/observable/empty.js | 12 + .../rxjs/internal/observable/empty.js.map | 1 + .../rxjs/internal/observable/forkJoin.d.ts | 29 + .../rxjs/internal/observable/forkJoin.js | 71 + .../rxjs/internal/observable/forkJoin.js.map | 1 + .../rxjs/internal/observable/from.d.ts | 5 + .../rxjs/internal/observable/from.js | 18 + .../rxjs/internal/observable/from.js.map | 1 + .../rxjs/internal/observable/fromArray.d.ts | 3 + .../rxjs/internal/observable/fromArray.js | 15 + .../rxjs/internal/observable/fromArray.js.map | 1 + .../rxjs/internal/observable/fromEvent.d.ts | 35 + .../rxjs/internal/observable/fromEvent.js | 65 + .../rxjs/internal/observable/fromEvent.js.map | 1 + .../internal/observable/fromEventPattern.d.ts | 5 + .../internal/observable/fromEventPattern.js | 34 + .../observable/fromEventPattern.js.map | 1 + .../internal/observable/fromIterable.d.ts | 3 + .../rxjs/internal/observable/fromIterable.js | 18 + .../internal/observable/fromIterable.js.map | 1 + .../rxjs/internal/observable/fromPromise.d.ts | 3 + .../rxjs/internal/observable/fromPromise.js | 15 + .../internal/observable/fromPromise.js.map | 1 + .../rxjs/internal/observable/generate.d.ts | 231 + .../rxjs/internal/observable/generate.js | 127 + .../rxjs/internal/observable/generate.js.map | 1 + .../rxjs/internal/observable/iif.d.ts | 91 + .../rxjs/internal/observable/iif.js | 11 + .../rxjs/internal/observable/iif.js.map | 1 + .../rxjs/internal/observable/interval.d.ts | 51 + .../rxjs/internal/observable/interval.js | 26 + .../rxjs/internal/observable/interval.js.map | 1 + .../rxjs/internal/observable/merge.d.ts | 44 + .../rxjs/internal/observable/merge.js | 30 + .../rxjs/internal/observable/merge.js.map | 1 + .../rxjs/internal/observable/never.d.ts | 36 + .../rxjs/internal/observable/never.js | 10 + .../rxjs/internal/observable/never.js.map | 1 + .../rxjs/internal/observable/of.d.ts | 31 + .../rxjs/internal/observable/of.js | 21 + .../rxjs/internal/observable/of.js.map | 1 + .../observable/onErrorResumeNext.d.ts | 9 + .../internal/observable/onErrorResumeNext.js | 29 + .../observable/onErrorResumeNext.js.map | 1 + .../rxjs/internal/observable/pairs.d.ts | 61 + .../rxjs/internal/observable/pairs.js | 42 + .../rxjs/internal/observable/pairs.js.map | 1 + .../rxjs/internal/observable/partition.d.ts | 54 + .../rxjs/internal/observable/partition.js | 14 + .../rxjs/internal/observable/partition.js.map | 1 + .../rxjs/internal/observable/race.d.ts | 39 + .../rxjs/internal/observable/race.js | 92 + .../rxjs/internal/observable/race.js.map | 1 + .../rxjs/internal/observable/range.d.ts | 39 + .../rxjs/internal/observable/range.js | 49 + .../rxjs/internal/observable/range.js.map | 1 + .../rxjs/internal/observable/throwError.d.ts | 67 + .../rxjs/internal/observable/throwError.js | 17 + .../internal/observable/throwError.js.map | 1 + .../rxjs/internal/observable/timer.d.ts | 53 + .../rxjs/internal/observable/timer.js | 41 + .../rxjs/internal/observable/timer.js.map | 1 + .../rxjs/internal/observable/using.d.ts | 31 + .../rxjs/internal/observable/using.js | 35 + .../rxjs/internal/observable/using.js.map | 1 + .../rxjs/internal/observable/zip.d.ts | 52 + .../rxjs/internal/observable/zip.js | 230 + .../rxjs/internal/observable/zip.js.map | 1 + .../rxjs/internal/operators/audit.d.ts | 48 + .../rxjs/internal/operators/audit.js | 83 + .../rxjs/internal/operators/audit.js.map | 1 + .../rxjs/internal/operators/auditTime.d.ts | 51 + .../rxjs/internal/operators/auditTime.js | 11 + .../rxjs/internal/operators/auditTime.js.map | 1 + .../rxjs/internal/operators/buffer.d.ts | 43 + .../rxjs/internal/operators/buffer.js | 51 + .../rxjs/internal/operators/buffer.js.map | 1 + .../rxjs/internal/operators/bufferCount.d.ts | 57 + .../rxjs/internal/operators/bufferCount.js | 102 + .../internal/operators/bufferCount.js.map | 1 + .../rxjs/internal/operators/bufferTime.d.ts | 4 + .../rxjs/internal/operators/bufferTime.js | 162 + .../rxjs/internal/operators/bufferTime.js.map | 1 + .../rxjs/internal/operators/bufferToggle.d.ts | 48 + .../rxjs/internal/operators/bufferToggle.js | 121 + .../internal/operators/bufferToggle.js.map | 1 + .../rxjs/internal/operators/bufferWhen.d.ts | 45 + .../rxjs/internal/operators/bufferWhen.js | 96 + .../rxjs/internal/operators/bufferWhen.js.map | 1 + .../rxjs/internal/operators/catchError.d.ts | 3 + .../rxjs/internal/operators/catchError.js | 65 + .../rxjs/internal/operators/catchError.js.map | 1 + .../rxjs/internal/operators/combineAll.d.ts | 5 + .../rxjs/internal/operators/combineAll.js | 8 + .../rxjs/internal/operators/combineAll.js.map | 1 + .../internal/operators/combineLatest.d.ts | 29 + .../rxjs/internal/operators/combineLatest.js | 22 + .../internal/operators/combineLatest.js.map | 1 + .../rxjs/internal/operators/concat.d.ts | 17 + .../rxjs/internal/operators/concat.js | 12 + .../rxjs/internal/operators/concat.js.map | 1 + .../rxjs/internal/operators/concatAll.d.ts | 3 + .../rxjs/internal/operators/concatAll.js | 8 + .../rxjs/internal/operators/concatAll.js.map | 1 + .../rxjs/internal/operators/concatMap.d.ts | 6 + .../rxjs/internal/operators/concatMap.js | 8 + .../rxjs/internal/operators/concatMap.js.map | 1 + .../rxjs/internal/operators/concatMapTo.d.ts | 6 + .../rxjs/internal/operators/concatMapTo.js | 8 + .../internal/operators/concatMapTo.js.map | 1 + .../rxjs/internal/operators/count.d.ts | 62 + .../rxjs/internal/operators/count.js | 68 + .../rxjs/internal/operators/count.js.map | 1 + .../rxjs/internal/operators/debounce.d.ts | 50 + .../rxjs/internal/operators/debounce.js | 90 + .../rxjs/internal/operators/debounce.js.map | 1 + .../rxjs/internal/operators/debounceTime.d.ts | 54 + .../rxjs/internal/operators/debounceTime.js | 76 + .../internal/operators/debounceTime.js.map | 1 + .../internal/operators/defaultIfEmpty.d.ts | 3 + .../rxjs/internal/operators/defaultIfEmpty.js | 51 + .../internal/operators/defaultIfEmpty.js.map | 1 + .../rxjs/internal/operators/delay.d.ts | 52 + .../rxjs/internal/operators/delay.js | 105 + .../rxjs/internal/operators/delay.js.map | 1 + .../rxjs/internal/operators/delayWhen.d.ts | 5 + .../rxjs/internal/operators/delayWhen.js | 146 + .../rxjs/internal/operators/delayWhen.js.map | 1 + .../internal/operators/dematerialize.d.ts | 49 + .../rxjs/internal/operators/dematerialize.js | 41 + .../internal/operators/dematerialize.js.map | 1 + .../rxjs/internal/operators/distinct.d.ts | 79 + .../rxjs/internal/operators/distinct.js | 79 + .../rxjs/internal/operators/distinct.js.map | 1 + .../operators/distinctUntilChanged.d.ts | 3 + .../operators/distinctUntilChanged.js | 74 + .../operators/distinctUntilChanged.js.map | 1 + .../operators/distinctUntilKeyChanged.d.ts | 3 + .../operators/distinctUntilKeyChanged.js | 8 + .../operators/distinctUntilKeyChanged.js.map | 1 + .../rxjs/internal/operators/elementAt.d.ts | 50 + .../rxjs/internal/operators/elementAt.js | 18 + .../rxjs/internal/operators/elementAt.js.map | 1 + .../rxjs/internal/operators/endWith.d.ts | 24 + .../rxjs/internal/operators/endWith.js | 13 + .../rxjs/internal/operators/endWith.js.map | 1 + .../rxjs/internal/operators/every.d.ts | 24 + .../rxjs/internal/operators/every.js | 65 + .../rxjs/internal/operators/every.js.map | 1 + .../rxjs/internal/operators/exhaust.d.ts | 3 + .../rxjs/internal/operators/exhaust.js | 59 + .../rxjs/internal/operators/exhaust.js.map | 1 + .../rxjs/internal/operators/exhaustMap.d.ts | 6 + .../rxjs/internal/operators/exhaustMap.js | 99 + .../rxjs/internal/operators/exhaustMap.js.map | 1 + .../rxjs/internal/operators/expand.d.ts | 36 + .../rxjs/internal/operators/expand.js | 115 + .../rxjs/internal/operators/expand.js.map | 1 + .../rxjs/internal/operators/filter.d.ts | 3 + .../rxjs/internal/operators/filter.js | 57 + .../rxjs/internal/operators/filter.js.map | 1 + .../rxjs/internal/operators/finalize.d.ts | 10 + .../rxjs/internal/operators/finalize.js | 40 + .../rxjs/internal/operators/finalize.js.map | 1 + .../rxjs/internal/operators/find.d.ts | 30 + .../rxjs/internal/operators/find.js | 73 + .../rxjs/internal/operators/find.js.map | 1 + .../rxjs/internal/operators/findIndex.d.ts | 43 + .../rxjs/internal/operators/findIndex.js | 8 + .../rxjs/internal/operators/findIndex.js.map | 1 + .../rxjs/internal/operators/first.d.ts | 5 + .../rxjs/internal/operators/first.js | 14 + .../rxjs/internal/operators/first.js.map | 1 + .../rxjs/internal/operators/groupBy.d.ts | 32 + .../rxjs/internal/operators/groupBy.js | 196 + .../rxjs/internal/operators/groupBy.js.map | 1 + .../internal/operators/ignoreElements.d.ts | 29 + .../rxjs/internal/operators/ignoreElements.js | 40 + .../internal/operators/ignoreElements.js.map | 1 + .../rxjs/internal/operators/index.d.ts | 102 + .../rxjs/internal/operators/index.js | 207 + .../rxjs/internal/operators/index.js.map | 1 + .../rxjs/internal/operators/isEmpty.d.ts | 61 + .../rxjs/internal/operators/isEmpty.js | 47 + .../rxjs/internal/operators/isEmpty.js.map | 1 + .../rxjs/internal/operators/last.d.ts | 5 + .../rxjs/internal/operators/last.js | 14 + .../rxjs/internal/operators/last.js.map | 1 + .../rxjs/internal/operators/map.d.ts | 49 + .../rxjs/internal/operators/map.js | 59 + .../rxjs/internal/operators/map.js.map | 1 + .../rxjs/internal/operators/mapTo.d.ts | 34 + .../rxjs/internal/operators/mapTo.js | 42 + .../rxjs/internal/operators/mapTo.js.map | 1 + .../rxjs/internal/operators/materialize.d.ts | 53 + .../rxjs/internal/operators/materialize.js | 52 + .../internal/operators/materialize.js.map | 1 + .../rxjs/internal/operators/max.d.ts | 47 + .../rxjs/internal/operators/max.js | 11 + .../rxjs/internal/operators/max.js.map | 1 + .../rxjs/internal/operators/merge.d.ts | 29 + .../rxjs/internal/operators/merge.js | 12 + .../rxjs/internal/operators/merge.js.map | 1 + .../rxjs/internal/operators/mergeAll.d.ts | 60 + .../rxjs/internal/operators/mergeAll.js | 10 + .../rxjs/internal/operators/mergeAll.js.map | 1 + .../rxjs/internal/operators/mergeMap.d.ts | 37 + .../rxjs/internal/operators/mergeMap.js | 111 + .../rxjs/internal/operators/mergeMap.js.map | 1 + .../rxjs/internal/operators/mergeMapTo.d.ts | 5 + .../rxjs/internal/operators/mergeMapTo.js | 15 + .../rxjs/internal/operators/mergeMapTo.js.map | 1 + .../rxjs/internal/operators/mergeScan.d.ts | 74 + .../rxjs/internal/operators/mergeScan.js | 112 + .../rxjs/internal/operators/mergeScan.js.map | 1 + .../rxjs/internal/operators/min.d.ts | 46 + .../rxjs/internal/operators/min.js | 11 + .../rxjs/internal/operators/min.js.map | 1 + .../rxjs/internal/operators/multicast.d.ts | 16 + .../rxjs/internal/operators/multicast.js | 40 + .../rxjs/internal/operators/multicast.js.map | 1 + .../rxjs/internal/operators/observeOn.d.ts | 84 + .../rxjs/internal/operators/observeOn.js | 77 + .../rxjs/internal/operators/observeOn.js.map | 1 + .../internal/operators/onErrorResumeNext.d.ts | 18 + .../internal/operators/onErrorResumeNext.js | 93 + .../operators/onErrorResumeNext.js.map | 1 + .../rxjs/internal/operators/pairwise.d.ts | 45 + .../rxjs/internal/operators/pairwise.js | 51 + .../rxjs/internal/operators/pairwise.js.map | 1 + .../rxjs/internal/operators/partition.d.ts | 51 + .../rxjs/internal/operators/partition.js | 12 + .../rxjs/internal/operators/partition.js.map | 1 + .../rxjs/internal/operators/pluck.d.ts | 8 + .../rxjs/internal/operators/pluck.js | 32 + .../rxjs/internal/operators/pluck.js.map | 1 + .../rxjs/internal/operators/publish.d.ts | 6 + .../rxjs/internal/operators/publish.js | 11 + .../rxjs/internal/operators/publish.js.map | 1 + .../internal/operators/publishBehavior.d.ts | 10 + .../internal/operators/publishBehavior.js | 9 + .../internal/operators/publishBehavior.js.map | 1 + .../rxjs/internal/operators/publishLast.d.ts | 61 + .../rxjs/internal/operators/publishLast.js | 9 + .../internal/operators/publishLast.js.map | 1 + .../internal/operators/publishReplay.d.ts | 4 + .../rxjs/internal/operators/publishReplay.js | 14 + .../internal/operators/publishReplay.js.map | 1 + .../rxjs/internal/operators/race.d.ts | 10 + .../rxjs/internal/operators/race.js | 18 + .../rxjs/internal/operators/race.js.map | 1 + .../rxjs/internal/operators/reduce.d.ts | 4 + .../rxjs/internal/operators/reduce.js | 18 + .../rxjs/internal/operators/reduce.js.map | 1 + .../rxjs/internal/operators/refCount.d.ts | 55 + .../rxjs/internal/operators/refCount.js | 72 + .../rxjs/internal/operators/refCount.js.map | 1 + .../rxjs/internal/operators/repeat.d.ts | 58 + .../rxjs/internal/operators/repeat.js | 65 + .../rxjs/internal/operators/repeat.js.map | 1 + .../rxjs/internal/operators/repeatWhen.d.ts | 33 + .../rxjs/internal/operators/repeatWhen.js | 97 + .../rxjs/internal/operators/repeatWhen.js.map | 1 + .../rxjs/internal/operators/retry.d.ts | 48 + .../rxjs/internal/operators/retry.js | 54 + .../rxjs/internal/operators/retry.js.map | 1 + .../rxjs/internal/operators/retryWhen.d.ts | 17 + .../rxjs/internal/operators/retryWhen.js | 89 + .../rxjs/internal/operators/retryWhen.js.map | 1 + .../rxjs/internal/operators/sample.d.ts | 43 + .../rxjs/internal/operators/sample.js | 59 + .../rxjs/internal/operators/sample.js.map | 1 + .../rxjs/internal/operators/sampleTime.d.ts | 44 + .../rxjs/internal/operators/sampleTime.js | 60 + .../rxjs/internal/operators/sampleTime.js.map | 1 + .../rxjs/internal/operators/scan.d.ts | 4 + .../rxjs/internal/operators/scan.js | 83 + .../rxjs/internal/operators/scan.js.map | 1 + .../internal/operators/sequenceEqual.d.ts | 87 + .../rxjs/internal/operators/sequenceEqual.js | 124 + .../internal/operators/sequenceEqual.js.map | 1 + .../rxjs/internal/operators/share.d.ts | 14 + .../rxjs/internal/operators/share.js | 13 + .../rxjs/internal/operators/share.js.map | 1 + .../rxjs/internal/operators/shareReplay.d.ts | 54 + .../rxjs/internal/operators/shareReplay.js | 57 + .../internal/operators/shareReplay.js.map | 1 + .../rxjs/internal/operators/single.d.ts | 49 + .../rxjs/internal/operators/single.js | 82 + .../rxjs/internal/operators/single.js.map | 1 + .../rxjs/internal/operators/skip.d.ts | 13 + .../rxjs/internal/operators/skip.js | 45 + .../rxjs/internal/operators/skip.js.map | 1 + .../rxjs/internal/operators/skipLast.d.ts | 40 + .../rxjs/internal/operators/skipLast.js | 64 + .../rxjs/internal/operators/skipLast.js.map | 1 + .../rxjs/internal/operators/skipUntil.d.ts | 42 + .../rxjs/internal/operators/skipUntil.js | 62 + .../rxjs/internal/operators/skipUntil.js.map | 1 + .../rxjs/internal/operators/skipWhile.d.ts | 14 + .../rxjs/internal/operators/skipWhile.js | 59 + .../rxjs/internal/operators/skipWhile.js.map | 1 + .../rxjs/internal/operators/startWith.d.ts | 24 + .../rxjs/internal/operators/startWith.js | 20 + .../rxjs/internal/operators/startWith.js.map | 1 + .../rxjs/internal/operators/subscribeOn.d.ts | 44 + .../rxjs/internal/operators/subscribeOn.js | 21 + .../internal/operators/subscribeOn.js.map | 1 + .../rxjs/internal/operators/switchAll.d.ts | 3 + .../rxjs/internal/operators/switchAll.js | 9 + .../rxjs/internal/operators/switchAll.js.map | 1 + .../rxjs/internal/operators/switchMap.d.ts | 6 + .../rxjs/internal/operators/switchMap.js | 93 + .../rxjs/internal/operators/switchMap.js.map | 1 + .../rxjs/internal/operators/switchMapTo.d.ts | 6 + .../rxjs/internal/operators/switchMapTo.js | 8 + .../internal/operators/switchMapTo.js.map | 1 + .../rxjs/internal/operators/take.d.ts | 48 + .../rxjs/internal/operators/take.js | 63 + .../rxjs/internal/operators/take.js.map | 1 + .../rxjs/internal/operators/takeLast.d.ts | 44 + .../rxjs/internal/operators/takeLast.js | 78 + .../rxjs/internal/operators/takeLast.js.map | 1 + .../rxjs/internal/operators/takeUntil.d.ts | 43 + .../rxjs/internal/operators/takeUntil.js | 52 + .../rxjs/internal/operators/takeUntil.js.map | 1 + .../rxjs/internal/operators/takeWhile.d.ts | 4 + .../rxjs/internal/operators/takeWhile.js | 69 + .../rxjs/internal/operators/takeWhile.js.map | 1 + .../rxjs/internal/operators/tap.d.ts | 9 + .../rxjs/internal/operators/tap.js | 89 + .../rxjs/internal/operators/tap.js.map | 1 + .../rxjs/internal/operators/throttle.d.ts | 53 + .../rxjs/internal/operators/throttle.js | 103 + .../rxjs/internal/operators/throttle.js.map | 1 + .../rxjs/internal/operators/throttleTime.d.ts | 82 + .../rxjs/internal/operators/throttleTime.js | 95 + .../internal/operators/throttleTime.js.map | 1 + .../rxjs/internal/operators/throwIfEmpty.d.ts | 32 + .../rxjs/internal/operators/throwIfEmpty.js | 66 + .../internal/operators/throwIfEmpty.js.map | 1 + .../rxjs/internal/operators/timeInterval.d.ts | 55 + .../rxjs/internal/operators/timeInterval.js | 28 + .../internal/operators/timeInterval.js.map | 1 + .../rxjs/internal/operators/timeout.d.ts | 80 + .../rxjs/internal/operators/timeout.js | 12 + .../rxjs/internal/operators/timeout.js.map | 1 + .../rxjs/internal/operators/timeoutWith.d.ts | 2 + .../rxjs/internal/operators/timeoutWith.js | 80 + .../internal/operators/timeoutWith.js.map | 1 + .../rxjs/internal/operators/timestamp.d.ts | 41 + .../rxjs/internal/operators/timestamp.js | 18 + .../rxjs/internal/operators/timestamp.js.map | 1 + .../rxjs/internal/operators/toArray.d.ts | 33 + .../rxjs/internal/operators/toArray.js | 15 + .../rxjs/internal/operators/toArray.js.map | 1 + .../rxjs/internal/operators/window.d.ts | 46 + .../rxjs/internal/operators/window.js | 81 + .../rxjs/internal/operators/window.js.map | 1 + .../rxjs/internal/operators/windowCount.d.ts | 66 + .../rxjs/internal/operators/windowCount.js | 90 + .../internal/operators/windowCount.js.map | 1 + .../rxjs/internal/operators/windowTime.d.ts | 87 + .../rxjs/internal/operators/windowTime.js | 169 + .../rxjs/internal/operators/windowTime.js.map | 1 + .../rxjs/internal/operators/windowToggle.d.ts | 51 + .../rxjs/internal/operators/windowToggle.js | 143 + .../internal/operators/windowToggle.js.map | 1 + .../rxjs/internal/operators/windowWhen.d.ts | 48 + .../rxjs/internal/operators/windowWhen.js | 96 + .../rxjs/internal/operators/windowWhen.js.map | 1 + .../internal/operators/withLatestFrom.d.ts | 15 + .../rxjs/internal/operators/withLatestFrom.js | 97 + .../internal/operators/withLatestFrom.js.map | 1 + .../rxjs/internal/operators/zip.d.ts | 29 + .../rxjs/internal/operators/zip.js | 14 + .../rxjs/internal/operators/zip.js.map | 1 + .../rxjs/internal/operators/zipAll.d.ts | 5 + .../rxjs/internal/operators/zipAll.js | 8 + .../rxjs/internal/operators/zipAll.js.map | 1 + .../internal/scheduled/scheduleArray.d.ts | 3 + .../rxjs/internal/scheduled/scheduleArray.js | 23 + .../internal/scheduled/scheduleArray.js.map | 1 + .../internal/scheduled/scheduleIterable.d.ts | 3 + .../internal/scheduled/scheduleIterable.js | 48 + .../scheduled/scheduleIterable.js.map | 1 + .../scheduled/scheduleObservable.d.ts | 3 + .../internal/scheduled/scheduleObservable.js | 21 + .../scheduled/scheduleObservable.js.map | 1 + .../internal/scheduled/schedulePromise.d.ts | 3 + .../internal/scheduled/schedulePromise.js | 20 + .../internal/scheduled/schedulePromise.js.map | 1 + .../rxjs/internal/scheduled/scheduled.d.ts | 13 + .../rxjs/internal/scheduled/scheduled.js | 29 + .../rxjs/internal/scheduled/scheduled.js.map | 1 + .../rxjs/internal/scheduler/Action.d.ts | 31 + .../rxjs/internal/scheduler/Action.js | 29 + .../rxjs/internal/scheduler/Action.js.map | 1 + .../scheduler/AnimationFrameAction.d.ts | 15 + .../scheduler/AnimationFrameAction.js | 47 + .../scheduler/AnimationFrameAction.js.map | 1 + .../scheduler/AnimationFrameScheduler.d.ts | 5 + .../scheduler/AnimationFrameScheduler.js | 46 + .../scheduler/AnimationFrameScheduler.js.map | 1 + .../rxjs/internal/scheduler/AsapAction.d.ts | 15 + .../rxjs/internal/scheduler/AsapAction.js | 48 + .../rxjs/internal/scheduler/AsapAction.js.map | 1 + .../internal/scheduler/AsapScheduler.d.ts | 5 + .../rxjs/internal/scheduler/AsapScheduler.js | 46 + .../internal/scheduler/AsapScheduler.js.map | 1 + .../rxjs/internal/scheduler/AsyncAction.d.ts | 29 + .../rxjs/internal/scheduler/AsyncAction.js | 102 + .../internal/scheduler/AsyncAction.js.map | 1 + .../internal/scheduler/AsyncScheduler.d.ts | 27 + .../rxjs/internal/scheduler/AsyncScheduler.js | 67 + .../internal/scheduler/AsyncScheduler.js.map | 1 + .../rxjs/internal/scheduler/QueueAction.d.ts | 17 + .../rxjs/internal/scheduler/QueueAction.js | 50 + .../internal/scheduler/QueueAction.js.map | 1 + .../internal/scheduler/QueueScheduler.d.ts | 3 + .../rxjs/internal/scheduler/QueueScheduler.js | 25 + .../internal/scheduler/QueueScheduler.js.map | 1 + .../scheduler/VirtualTimeScheduler.d.ts | 33 + .../scheduler/VirtualTimeScheduler.js | 111 + .../scheduler/VirtualTimeScheduler.js.map | 1 + .../internal/scheduler/animationFrame.d.ts | 37 + .../rxjs/internal/scheduler/animationFrame.js | 6 + .../internal/scheduler/animationFrame.js.map | 1 + .../rxjs/internal/scheduler/asap.d.ts | 39 + .../rxjs/internal/scheduler/asap.js | 6 + .../rxjs/internal/scheduler/asap.js.map | 1 + .../rxjs/internal/scheduler/async.d.ts | 52 + .../rxjs/internal/scheduler/async.js | 6 + .../rxjs/internal/scheduler/async.js.map | 1 + .../rxjs/internal/scheduler/queue.d.ts | 68 + .../rxjs/internal/scheduler/queue.js | 6 + .../rxjs/internal/scheduler/queue.js.map | 1 + .../rxjs/internal/symbol/iterator.d.ts | 6 + .../rxjs/internal/symbol/iterator.js | 12 + .../rxjs/internal/symbol/iterator.js.map | 1 + .../rxjs/internal/symbol/observable.d.ts | 8 + .../rxjs/internal/symbol/observable.js | 4 + .../rxjs/internal/symbol/observable.js.map | 1 + .../rxjs/internal/symbol/rxSubscriber.d.ts | 6 + .../rxjs/internal/symbol/rxSubscriber.js | 9 + .../rxjs/internal/symbol/rxSubscriber.js.map | 1 + .../rxjs/internal/testing/ColdObservable.d.ts | 20 + .../rxjs/internal/testing/ColdObservable.js | 52 + .../internal/testing/ColdObservable.js.map | 1 + .../rxjs/internal/testing/HotObservable.d.ts | 23 + .../rxjs/internal/testing/HotObservable.js | 53 + .../internal/testing/HotObservable.js.map | 1 + .../internal/testing/SubscriptionLog.d.ts | 5 + .../rxjs/internal/testing/SubscriptionLog.js | 12 + .../internal/testing/SubscriptionLog.js.map | 1 + .../testing/SubscriptionLoggable.d.ts | 8 + .../internal/testing/SubscriptionLoggable.js | 20 + .../testing/SubscriptionLoggable.js.map | 1 + .../rxjs/internal/testing/TestMessage.d.ts | 6 + .../rxjs/internal/testing/TestMessage.js | 3 + .../rxjs/internal/testing/TestMessage.js.map | 1 + .../rxjs/internal/testing/TestScheduler.d.ts | 53 + .../rxjs/internal/testing/TestScheduler.js | 364 + .../internal/testing/TestScheduler.js.map | 1 + .../node_modules/rxjs/internal/types.d.ts | 82 + .../node_modules/rxjs/internal/types.js | 3 + .../node_modules/rxjs/internal/types.js.map | 1 + .../util/ArgumentOutOfRangeError.d.ts | 16 + .../internal/util/ArgumentOutOfRangeError.js | 14 + .../util/ArgumentOutOfRangeError.js.map | 1 + .../rxjs/internal/util/EmptyError.d.ts | 16 + .../rxjs/internal/util/EmptyError.js | 14 + .../rxjs/internal/util/EmptyError.js.map | 1 + .../rxjs/internal/util/Immediate.d.ts | 13 + .../rxjs/internal/util/Immediate.js | 29 + .../rxjs/internal/util/Immediate.js.map | 1 + .../util/ObjectUnsubscribedError.d.ts | 15 + .../internal/util/ObjectUnsubscribedError.js | 14 + .../util/ObjectUnsubscribedError.js.map | 1 + .../rxjs/internal/util/TimeoutError.d.ts | 13 + .../rxjs/internal/util/TimeoutError.js | 14 + .../rxjs/internal/util/TimeoutError.js.map | 1 + .../internal/util/UnsubscriptionError.d.ts | 11 + .../rxjs/internal/util/UnsubscriptionError.js | 16 + .../internal/util/UnsubscriptionError.js.map | 1 + .../rxjs/internal/util/applyMixins.d.ts | 1 + .../rxjs/internal/util/applyMixins.js | 14 + .../rxjs/internal/util/applyMixins.js.map | 1 + .../rxjs/internal/util/canReportError.d.ts | 9 + .../rxjs/internal/util/canReportError.js | 20 + .../rxjs/internal/util/canReportError.js.map | 1 + .../rxjs/internal/util/errorObject.d.ts | 1 + .../rxjs/internal/util/errorObject.js | 4 + .../rxjs/internal/util/errorObject.js.map | 1 + .../rxjs/internal/util/hostReportError.d.ts | 6 + .../rxjs/internal/util/hostReportError.js | 7 + .../rxjs/internal/util/hostReportError.js.map | 1 + .../rxjs/internal/util/identity.d.ts | 1 + .../rxjs/internal/util/identity.js | 7 + .../rxjs/internal/util/identity.js.map | 1 + .../rxjs/internal/util/isArray.d.ts | 1 + .../rxjs/internal/util/isArray.js | 4 + .../rxjs/internal/util/isArray.js.map | 1 + .../rxjs/internal/util/isArrayLike.d.ts | 1 + .../rxjs/internal/util/isArrayLike.js | 4 + .../rxjs/internal/util/isArrayLike.js.map | 1 + .../rxjs/internal/util/isDate.d.ts | 1 + .../node_modules/rxjs/internal/util/isDate.js | 7 + .../rxjs/internal/util/isDate.js.map | 1 + .../rxjs/internal/util/isFunction.d.ts | 1 + .../rxjs/internal/util/isFunction.js | 7 + .../rxjs/internal/util/isFunction.js.map | 1 + .../internal/util/isInteropObservable.d.ts | 3 + .../rxjs/internal/util/isInteropObservable.js | 8 + .../internal/util/isInteropObservable.js.map | 1 + .../rxjs/internal/util/isIterable.d.ts | 2 + .../rxjs/internal/util/isIterable.js | 8 + .../rxjs/internal/util/isIterable.js.map | 1 + .../rxjs/internal/util/isNumeric.d.ts | 1 + .../rxjs/internal/util/isNumeric.js | 8 + .../rxjs/internal/util/isNumeric.js.map | 1 + .../rxjs/internal/util/isObject.d.ts | 1 + .../rxjs/internal/util/isObject.js | 7 + .../rxjs/internal/util/isObject.js.map | 1 + .../rxjs/internal/util/isObservable.d.ts | 6 + .../rxjs/internal/util/isObservable.js | 8 + .../rxjs/internal/util/isObservable.js.map | 1 + .../rxjs/internal/util/isPromise.d.ts | 6 + .../rxjs/internal/util/isPromise.js | 7 + .../rxjs/internal/util/isPromise.js.map | 1 + .../rxjs/internal/util/isScheduler.d.ts | 2 + .../rxjs/internal/util/isScheduler.js | 7 + .../rxjs/internal/util/isScheduler.js.map | 1 + .../node_modules/rxjs/internal/util/noop.d.ts | 1 + .../node_modules/rxjs/internal/util/noop.js | 5 + .../rxjs/internal/util/noop.js.map | 1 + .../node_modules/rxjs/internal/util/not.d.ts | 1 + .../node_modules/rxjs/internal/util/not.js | 12 + .../rxjs/internal/util/not.js.map | 1 + .../node_modules/rxjs/internal/util/pipe.d.ts | 14 + .../node_modules/rxjs/internal/util/pipe.js | 24 + .../rxjs/internal/util/pipe.js.map | 1 + .../node_modules/rxjs/internal/util/root.d.ts | 2 + .../node_modules/rxjs/internal/util/root.js | 14 + .../rxjs/internal/util/root.js.map | 1 + .../rxjs/internal/util/subscribeTo.d.ts | 4 + .../rxjs/internal/util/subscribeTo.js | 32 + .../rxjs/internal/util/subscribeTo.js.map | 1 + .../rxjs/internal/util/subscribeToArray.d.ts | 6 + .../rxjs/internal/util/subscribeToArray.js | 9 + .../internal/util/subscribeToArray.js.map | 1 + .../internal/util/subscribeToIterable.d.ts | 2 + .../rxjs/internal/util/subscribeToIterable.js | 26 + .../internal/util/subscribeToIterable.js.map | 1 + .../internal/util/subscribeToObservable.d.ts | 7 + .../internal/util/subscribeToObservable.js | 13 + .../util/subscribeToObservable.js.map | 1 + .../internal/util/subscribeToPromise.d.ts | 2 + .../rxjs/internal/util/subscribeToPromise.js | 14 + .../internal/util/subscribeToPromise.js.map | 1 + .../rxjs/internal/util/subscribeToResult.d.ts | 5 + .../rxjs/internal/util/subscribeToResult.js | 17 + .../internal/util/subscribeToResult.js.map | 1 + .../rxjs/internal/util/toSubscriber.d.ts | 3 + .../rxjs/internal/util/toSubscriber.js | 21 + .../rxjs/internal/util/toSubscriber.js.map | 1 + .../rxjs/internal/util/tryCatch.d.ts | 1 + .../rxjs/internal/util/tryCatch.js | 23 + .../rxjs/internal/util/tryCatch.js.map | 1 + .../rxjs/migrations/collection.json | 9 + .../rxjs/migrations/update-6_0_0/index.js | 28 + .../rxjs/migrations/update-6_0_0/index.js.map | 1 + .../rxjs/observable/ArrayLikeObservable.d.ts | 1 + .../rxjs/observable/ArrayLikeObservable.js | 7 + .../observable/ArrayLikeObservable.js.map | 1 + .../rxjs/observable/ArrayObservable.d.ts | 1 + .../rxjs/observable/ArrayObservable.js | 7 + .../rxjs/observable/ArrayObservable.js.map | 1 + .../observable/BoundCallbackObservable.d.ts | 1 + .../observable/BoundCallbackObservable.js | 7 + .../observable/BoundCallbackObservable.js.map | 1 + .../BoundNodeCallbackObservable.d.ts | 1 + .../observable/BoundNodeCallbackObservable.js | 7 + .../BoundNodeCallbackObservable.js.map | 1 + .../observable/ConnectableObservable.d.ts | 1 + .../rxjs/observable/ConnectableObservable.js | 7 + .../observable/ConnectableObservable.js.map | 1 + .../rxjs/observable/DeferObservable.d.ts | 1 + .../rxjs/observable/DeferObservable.js | 7 + .../rxjs/observable/DeferObservable.js.map | 1 + .../rxjs/observable/EmptyObservable.d.ts | 1 + .../rxjs/observable/EmptyObservable.js | 7 + .../rxjs/observable/EmptyObservable.js.map | 1 + .../rxjs/observable/ErrorObservable.d.ts | 1 + .../rxjs/observable/ErrorObservable.js | 7 + .../rxjs/observable/ErrorObservable.js.map | 1 + .../rxjs/observable/ForkJoinObservable.d.ts | 1 + .../rxjs/observable/ForkJoinObservable.js | 7 + .../rxjs/observable/ForkJoinObservable.js.map | 1 + .../rxjs/observable/FromEventObservable.d.ts | 1 + .../rxjs/observable/FromEventObservable.js | 7 + .../observable/FromEventObservable.js.map | 1 + .../FromEventPatternObservable.d.ts | 1 + .../observable/FromEventPatternObservable.js | 7 + .../FromEventPatternObservable.js.map | 1 + .../rxjs/observable/FromObservable.d.ts | 1 + .../rxjs/observable/FromObservable.js | 7 + .../rxjs/observable/FromObservable.js.map | 1 + .../rxjs/observable/GenerateObservable.d.ts | 1 + .../rxjs/observable/GenerateObservable.js | 7 + .../rxjs/observable/GenerateObservable.js.map | 1 + .../rxjs/observable/IfObservable.d.ts | 1 + .../rxjs/observable/IfObservable.js | 7 + .../rxjs/observable/IfObservable.js.map | 1 + .../rxjs/observable/IntervalObservable.d.ts | 1 + .../rxjs/observable/IntervalObservable.js | 7 + .../rxjs/observable/IntervalObservable.js.map | 1 + .../rxjs/observable/IteratorObservable.d.ts | 1 + .../rxjs/observable/IteratorObservable.js | 7 + .../rxjs/observable/IteratorObservable.js.map | 1 + .../rxjs/observable/NeverObservable.d.ts | 1 + .../rxjs/observable/NeverObservable.js | 7 + .../rxjs/observable/NeverObservable.js.map | 1 + .../rxjs/observable/PairsObservable.d.ts | 1 + .../rxjs/observable/PairsObservable.js | 7 + .../rxjs/observable/PairsObservable.js.map | 1 + .../rxjs/observable/PromiseObservable.d.ts | 1 + .../rxjs/observable/PromiseObservable.js | 7 + .../rxjs/observable/PromiseObservable.js.map | 1 + .../rxjs/observable/RangeObservable.d.ts | 1 + .../rxjs/observable/RangeObservable.js | 7 + .../rxjs/observable/RangeObservable.js.map | 1 + .../rxjs/observable/ScalarObservable.d.ts | 1 + .../rxjs/observable/ScalarObservable.js | 7 + .../rxjs/observable/ScalarObservable.js.map | 1 + .../observable/SubscribeOnObservable.d.ts | 1 + .../rxjs/observable/SubscribeOnObservable.js | 7 + .../observable/SubscribeOnObservable.js.map | 1 + .../rxjs/observable/TimerObservable.d.ts | 1 + .../rxjs/observable/TimerObservable.js | 7 + .../rxjs/observable/TimerObservable.js.map | 1 + .../rxjs/observable/UsingObservable.d.ts | 1 + .../rxjs/observable/UsingObservable.js | 7 + .../rxjs/observable/UsingObservable.js.map | 1 + .../rxjs/observable/bindCallback.d.ts | 1 + .../rxjs/observable/bindCallback.js | 7 + .../rxjs/observable/bindCallback.js.map | 1 + .../rxjs/observable/bindNodeCallback.d.ts | 1 + .../rxjs/observable/bindNodeCallback.js | 7 + .../rxjs/observable/bindNodeCallback.js.map | 1 + .../rxjs/observable/combineLatest.d.ts | 1 + .../rxjs/observable/combineLatest.js | 7 + .../rxjs/observable/combineLatest.js.map | 1 + .../node_modules/rxjs/observable/concat.d.ts | 1 + .../node_modules/rxjs/observable/concat.js | 7 + .../rxjs/observable/concat.js.map | 1 + .../node_modules/rxjs/observable/defer.d.ts | 1 + .../node_modules/rxjs/observable/defer.js | 7 + .../node_modules/rxjs/observable/defer.js.map | 1 + .../rxjs/observable/dom/AjaxObservable.d.ts | 1 + .../rxjs/observable/dom/AjaxObservable.js | 7 + .../rxjs/observable/dom/AjaxObservable.js.map | 1 + .../rxjs/observable/dom/WebSocketSubject.d.ts | 1 + .../rxjs/observable/dom/WebSocketSubject.js | 7 + .../observable/dom/WebSocketSubject.js.map | 1 + .../rxjs/observable/dom/ajax.d.ts | 1 + .../node_modules/rxjs/observable/dom/ajax.js | 7 + .../rxjs/observable/dom/ajax.js.map | 1 + .../rxjs/observable/dom/webSocket.d.ts | 1 + .../rxjs/observable/dom/webSocket.js | 7 + .../rxjs/observable/dom/webSocket.js.map | 1 + .../node_modules/rxjs/observable/empty.d.ts | 1 + .../node_modules/rxjs/observable/empty.js | 7 + .../node_modules/rxjs/observable/empty.js.map | 1 + .../rxjs/observable/forkJoin.d.ts | 1 + .../node_modules/rxjs/observable/forkJoin.js | 7 + .../rxjs/observable/forkJoin.js.map | 1 + .../node_modules/rxjs/observable/from.d.ts | 1 + .../node_modules/rxjs/observable/from.js | 7 + .../node_modules/rxjs/observable/from.js.map | 1 + .../rxjs/observable/fromArray.d.ts | 1 + .../node_modules/rxjs/observable/fromArray.js | 7 + .../rxjs/observable/fromArray.js.map | 1 + .../rxjs/observable/fromEvent.d.ts | 1 + .../node_modules/rxjs/observable/fromEvent.js | 7 + .../rxjs/observable/fromEvent.js.map | 1 + .../rxjs/observable/fromEventPattern.d.ts | 1 + .../rxjs/observable/fromEventPattern.js | 7 + .../rxjs/observable/fromEventPattern.js.map | 1 + .../rxjs/observable/fromIterable.d.ts | 1 + .../rxjs/observable/fromIterable.js | 7 + .../rxjs/observable/fromIterable.js.map | 1 + .../rxjs/observable/fromPromise.d.ts | 1 + .../rxjs/observable/fromPromise.js | 7 + .../rxjs/observable/fromPromise.js.map | 1 + .../rxjs/observable/generate.d.ts | 1 + .../node_modules/rxjs/observable/generate.js | 7 + .../rxjs/observable/generate.js.map | 1 + .../node_modules/rxjs/observable/if.d.ts | 1 + .../node_modules/rxjs/observable/if.js | 7 + .../node_modules/rxjs/observable/if.js.map | 1 + .../rxjs/observable/interval.d.ts | 1 + .../node_modules/rxjs/observable/interval.js | 7 + .../rxjs/observable/interval.js.map | 1 + .../node_modules/rxjs/observable/merge.d.ts | 1 + .../node_modules/rxjs/observable/merge.js | 7 + .../node_modules/rxjs/observable/merge.js.map | 1 + .../node_modules/rxjs/observable/never.d.ts | 1 + .../node_modules/rxjs/observable/never.js | 7 + .../node_modules/rxjs/observable/never.js.map | 1 + .../node_modules/rxjs/observable/of.d.ts | 1 + .../node_modules/rxjs/observable/of.js | 7 + .../node_modules/rxjs/observable/of.js.map | 1 + .../rxjs/observable/onErrorResumeNext.d.ts | 1 + .../rxjs/observable/onErrorResumeNext.js | 7 + .../rxjs/observable/onErrorResumeNext.js.map | 1 + .../node_modules/rxjs/observable/pairs.d.ts | 1 + .../node_modules/rxjs/observable/pairs.js | 7 + .../node_modules/rxjs/observable/pairs.js.map | 1 + .../node_modules/rxjs/observable/race.d.ts | 1 + .../node_modules/rxjs/observable/race.js | 7 + .../node_modules/rxjs/observable/race.js.map | 1 + .../node_modules/rxjs/observable/range.d.ts | 1 + .../node_modules/rxjs/observable/range.js | 7 + .../node_modules/rxjs/observable/range.js.map | 1 + .../node_modules/rxjs/observable/throw.d.ts | 1 + .../node_modules/rxjs/observable/throw.js | 7 + .../node_modules/rxjs/observable/throw.js.map | 1 + .../node_modules/rxjs/observable/timer.d.ts | 1 + .../node_modules/rxjs/observable/timer.js | 7 + .../node_modules/rxjs/observable/timer.js.map | 1 + .../node_modules/rxjs/observable/using.d.ts | 1 + .../node_modules/rxjs/observable/using.js | 7 + .../node_modules/rxjs/observable/using.js.map | 1 + .../node_modules/rxjs/observable/zip.d.ts | 1 + .../node_modules/rxjs/observable/zip.js | 7 + .../node_modules/rxjs/observable/zip.js.map | 1 + .../node_modules/rxjs/operator/audit.d.ts | 1 + .../node_modules/rxjs/operator/audit.js | 7 + .../node_modules/rxjs/operator/audit.js.map | 1 + .../node_modules/rxjs/operator/auditTime.d.ts | 1 + .../node_modules/rxjs/operator/auditTime.js | 7 + .../rxjs/operator/auditTime.js.map | 1 + .../node_modules/rxjs/operator/buffer.d.ts | 1 + .../node_modules/rxjs/operator/buffer.js | 7 + .../node_modules/rxjs/operator/buffer.js.map | 1 + .../rxjs/operator/bufferCount.d.ts | 1 + .../node_modules/rxjs/operator/bufferCount.js | 7 + .../rxjs/operator/bufferCount.js.map | 1 + .../rxjs/operator/bufferTime.d.ts | 1 + .../node_modules/rxjs/operator/bufferTime.js | 7 + .../rxjs/operator/bufferTime.js.map | 1 + .../rxjs/operator/bufferToggle.d.ts | 1 + .../rxjs/operator/bufferToggle.js | 7 + .../rxjs/operator/bufferToggle.js.map | 1 + .../rxjs/operator/bufferWhen.d.ts | 1 + .../node_modules/rxjs/operator/bufferWhen.js | 7 + .../rxjs/operator/bufferWhen.js.map | 1 + .../node_modules/rxjs/operator/catch.d.ts | 1 + .../node_modules/rxjs/operator/catch.js | 7 + .../node_modules/rxjs/operator/catch.js.map | 1 + .../rxjs/operator/combineAll.d.ts | 1 + .../node_modules/rxjs/operator/combineAll.js | 7 + .../rxjs/operator/combineAll.js.map | 1 + .../rxjs/operator/combineLatest.d.ts | 1 + .../rxjs/operator/combineLatest.js | 7 + .../rxjs/operator/combineLatest.js.map | 1 + .../node_modules/rxjs/operator/concat.d.ts | 1 + .../node_modules/rxjs/operator/concat.js | 7 + .../node_modules/rxjs/operator/concat.js.map | 1 + .../node_modules/rxjs/operator/concatAll.d.ts | 1 + .../node_modules/rxjs/operator/concatAll.js | 7 + .../rxjs/operator/concatAll.js.map | 1 + .../node_modules/rxjs/operator/concatMap.d.ts | 1 + .../node_modules/rxjs/operator/concatMap.js | 7 + .../rxjs/operator/concatMap.js.map | 1 + .../rxjs/operator/concatMapTo.d.ts | 1 + .../node_modules/rxjs/operator/concatMapTo.js | 7 + .../rxjs/operator/concatMapTo.js.map | 1 + .../node_modules/rxjs/operator/count.d.ts | 1 + .../node_modules/rxjs/operator/count.js | 7 + .../node_modules/rxjs/operator/count.js.map | 1 + .../node_modules/rxjs/operator/debounce.d.ts | 1 + .../node_modules/rxjs/operator/debounce.js | 7 + .../rxjs/operator/debounce.js.map | 1 + .../rxjs/operator/debounceTime.d.ts | 1 + .../rxjs/operator/debounceTime.js | 7 + .../rxjs/operator/debounceTime.js.map | 1 + .../rxjs/operator/defaultIfEmpty.d.ts | 1 + .../rxjs/operator/defaultIfEmpty.js | 7 + .../rxjs/operator/defaultIfEmpty.js.map | 1 + .../node_modules/rxjs/operator/delay.d.ts | 1 + .../node_modules/rxjs/operator/delay.js | 7 + .../node_modules/rxjs/operator/delay.js.map | 1 + .../node_modules/rxjs/operator/delayWhen.d.ts | 1 + .../node_modules/rxjs/operator/delayWhen.js | 7 + .../rxjs/operator/delayWhen.js.map | 1 + .../rxjs/operator/dematerialize.d.ts | 1 + .../rxjs/operator/dematerialize.js | 7 + .../rxjs/operator/dematerialize.js.map | 1 + .../node_modules/rxjs/operator/distinct.d.ts | 1 + .../node_modules/rxjs/operator/distinct.js | 7 + .../rxjs/operator/distinct.js.map | 1 + .../rxjs/operator/distinctUntilChanged.d.ts | 1 + .../rxjs/operator/distinctUntilChanged.js | 7 + .../rxjs/operator/distinctUntilChanged.js.map | 1 + .../operator/distinctUntilKeyChanged.d.ts | 1 + .../rxjs/operator/distinctUntilKeyChanged.js | 7 + .../operator/distinctUntilKeyChanged.js.map | 1 + .../node_modules/rxjs/operator/do.d.ts | 1 + .../node_modules/rxjs/operator/do.js | 7 + .../node_modules/rxjs/operator/do.js.map | 1 + .../node_modules/rxjs/operator/elementAt.d.ts | 1 + .../node_modules/rxjs/operator/elementAt.js | 7 + .../rxjs/operator/elementAt.js.map | 1 + .../node_modules/rxjs/operator/every.d.ts | 1 + .../node_modules/rxjs/operator/every.js | 7 + .../node_modules/rxjs/operator/every.js.map | 1 + .../node_modules/rxjs/operator/exhaust.d.ts | 1 + .../node_modules/rxjs/operator/exhaust.js | 7 + .../node_modules/rxjs/operator/exhaust.js.map | 1 + .../rxjs/operator/exhaustMap.d.ts | 1 + .../node_modules/rxjs/operator/exhaustMap.js | 7 + .../rxjs/operator/exhaustMap.js.map | 1 + .../node_modules/rxjs/operator/expand.d.ts | 1 + .../node_modules/rxjs/operator/expand.js | 7 + .../node_modules/rxjs/operator/expand.js.map | 1 + .../node_modules/rxjs/operator/filter.d.ts | 1 + .../node_modules/rxjs/operator/filter.js | 7 + .../node_modules/rxjs/operator/filter.js.map | 1 + .../node_modules/rxjs/operator/finally.d.ts | 1 + .../node_modules/rxjs/operator/finally.js | 7 + .../node_modules/rxjs/operator/finally.js.map | 1 + .../node_modules/rxjs/operator/find.d.ts | 1 + .../node_modules/rxjs/operator/find.js | 7 + .../node_modules/rxjs/operator/find.js.map | 1 + .../node_modules/rxjs/operator/findIndex.d.ts | 1 + .../node_modules/rxjs/operator/findIndex.js | 7 + .../rxjs/operator/findIndex.js.map | 1 + .../node_modules/rxjs/operator/first.d.ts | 1 + .../node_modules/rxjs/operator/first.js | 7 + .../node_modules/rxjs/operator/first.js.map | 1 + .../node_modules/rxjs/operator/groupBy.d.ts | 1 + .../node_modules/rxjs/operator/groupBy.js | 7 + .../node_modules/rxjs/operator/groupBy.js.map | 1 + .../rxjs/operator/ignoreElements.d.ts | 1 + .../rxjs/operator/ignoreElements.js | 7 + .../rxjs/operator/ignoreElements.js.map | 1 + .../node_modules/rxjs/operator/isEmpty.d.ts | 1 + .../node_modules/rxjs/operator/isEmpty.js | 7 + .../node_modules/rxjs/operator/isEmpty.js.map | 1 + .../node_modules/rxjs/operator/last.d.ts | 1 + .../node_modules/rxjs/operator/last.js | 7 + .../node_modules/rxjs/operator/last.js.map | 1 + .../node_modules/rxjs/operator/let.d.ts | 1 + .../node_modules/rxjs/operator/let.js | 7 + .../node_modules/rxjs/operator/let.js.map | 1 + .../node_modules/rxjs/operator/map.d.ts | 1 + .../node_modules/rxjs/operator/map.js | 7 + .../node_modules/rxjs/operator/map.js.map | 1 + .../node_modules/rxjs/operator/mapTo.d.ts | 1 + .../node_modules/rxjs/operator/mapTo.js | 7 + .../node_modules/rxjs/operator/mapTo.js.map | 1 + .../rxjs/operator/materialize.d.ts | 1 + .../node_modules/rxjs/operator/materialize.js | 7 + .../rxjs/operator/materialize.js.map | 1 + .../node_modules/rxjs/operator/max.d.ts | 1 + .../node_modules/rxjs/operator/max.js | 7 + .../node_modules/rxjs/operator/max.js.map | 1 + .../node_modules/rxjs/operator/merge.d.ts | 1 + .../node_modules/rxjs/operator/merge.js | 7 + .../node_modules/rxjs/operator/merge.js.map | 1 + .../node_modules/rxjs/operator/mergeAll.d.ts | 1 + .../node_modules/rxjs/operator/mergeAll.js | 7 + .../rxjs/operator/mergeAll.js.map | 1 + .../node_modules/rxjs/operator/mergeMap.d.ts | 1 + .../node_modules/rxjs/operator/mergeMap.js | 7 + .../rxjs/operator/mergeMap.js.map | 1 + .../rxjs/operator/mergeMapTo.d.ts | 1 + .../node_modules/rxjs/operator/mergeMapTo.js | 7 + .../rxjs/operator/mergeMapTo.js.map | 1 + .../node_modules/rxjs/operator/mergeScan.d.ts | 1 + .../node_modules/rxjs/operator/mergeScan.js | 7 + .../rxjs/operator/mergeScan.js.map | 1 + .../node_modules/rxjs/operator/min.d.ts | 1 + .../node_modules/rxjs/operator/min.js | 7 + .../node_modules/rxjs/operator/min.js.map | 1 + .../node_modules/rxjs/operator/multicast.d.ts | 1 + .../node_modules/rxjs/operator/multicast.js | 7 + .../rxjs/operator/multicast.js.map | 1 + .../node_modules/rxjs/operator/observeOn.d.ts | 1 + .../node_modules/rxjs/operator/observeOn.js | 7 + .../rxjs/operator/observeOn.js.map | 1 + .../rxjs/operator/onErrorResumeNext.d.ts | 1 + .../rxjs/operator/onErrorResumeNext.js | 7 + .../rxjs/operator/onErrorResumeNext.js.map | 1 + .../node_modules/rxjs/operator/pairwise.d.ts | 1 + .../node_modules/rxjs/operator/pairwise.js | 7 + .../rxjs/operator/pairwise.js.map | 1 + .../node_modules/rxjs/operator/partition.d.ts | 1 + .../node_modules/rxjs/operator/partition.js | 7 + .../rxjs/operator/partition.js.map | 1 + .../node_modules/rxjs/operator/pluck.d.ts | 1 + .../node_modules/rxjs/operator/pluck.js | 7 + .../node_modules/rxjs/operator/pluck.js.map | 1 + .../node_modules/rxjs/operator/publish.d.ts | 1 + .../node_modules/rxjs/operator/publish.js | 7 + .../node_modules/rxjs/operator/publish.js.map | 1 + .../rxjs/operator/publishBehavior.d.ts | 1 + .../rxjs/operator/publishBehavior.js | 7 + .../rxjs/operator/publishBehavior.js.map | 1 + .../rxjs/operator/publishLast.d.ts | 1 + .../node_modules/rxjs/operator/publishLast.js | 7 + .../rxjs/operator/publishLast.js.map | 1 + .../rxjs/operator/publishReplay.d.ts | 1 + .../rxjs/operator/publishReplay.js | 7 + .../rxjs/operator/publishReplay.js.map | 1 + .../node_modules/rxjs/operator/race.d.ts | 1 + .../node_modules/rxjs/operator/race.js | 7 + .../node_modules/rxjs/operator/race.js.map | 1 + .../node_modules/rxjs/operator/reduce.d.ts | 1 + .../node_modules/rxjs/operator/reduce.js | 7 + .../node_modules/rxjs/operator/reduce.js.map | 1 + .../node_modules/rxjs/operator/repeat.d.ts | 1 + .../node_modules/rxjs/operator/repeat.js | 7 + .../node_modules/rxjs/operator/repeat.js.map | 1 + .../rxjs/operator/repeatWhen.d.ts | 1 + .../node_modules/rxjs/operator/repeatWhen.js | 7 + .../rxjs/operator/repeatWhen.js.map | 1 + .../node_modules/rxjs/operator/retry.d.ts | 1 + .../node_modules/rxjs/operator/retry.js | 7 + .../node_modules/rxjs/operator/retry.js.map | 1 + .../node_modules/rxjs/operator/retryWhen.d.ts | 1 + .../node_modules/rxjs/operator/retryWhen.js | 7 + .../rxjs/operator/retryWhen.js.map | 1 + .../node_modules/rxjs/operator/sample.d.ts | 1 + .../node_modules/rxjs/operator/sample.js | 7 + .../node_modules/rxjs/operator/sample.js.map | 1 + .../rxjs/operator/sampleTime.d.ts | 1 + .../node_modules/rxjs/operator/sampleTime.js | 7 + .../rxjs/operator/sampleTime.js.map | 1 + .../node_modules/rxjs/operator/scan.d.ts | 1 + .../node_modules/rxjs/operator/scan.js | 7 + .../node_modules/rxjs/operator/scan.js.map | 1 + .../rxjs/operator/sequenceEqual.d.ts | 1 + .../rxjs/operator/sequenceEqual.js | 7 + .../rxjs/operator/sequenceEqual.js.map | 1 + .../node_modules/rxjs/operator/share.d.ts | 1 + .../node_modules/rxjs/operator/share.js | 7 + .../node_modules/rxjs/operator/share.js.map | 1 + .../rxjs/operator/shareReplay.d.ts | 1 + .../node_modules/rxjs/operator/shareReplay.js | 7 + .../rxjs/operator/shareReplay.js.map | 1 + .../node_modules/rxjs/operator/single.d.ts | 1 + .../node_modules/rxjs/operator/single.js | 7 + .../node_modules/rxjs/operator/single.js.map | 1 + .../node_modules/rxjs/operator/skip.d.ts | 1 + .../node_modules/rxjs/operator/skip.js | 7 + .../node_modules/rxjs/operator/skip.js.map | 1 + .../node_modules/rxjs/operator/skipLast.d.ts | 1 + .../node_modules/rxjs/operator/skipLast.js | 7 + .../rxjs/operator/skipLast.js.map | 1 + .../node_modules/rxjs/operator/skipUntil.d.ts | 1 + .../node_modules/rxjs/operator/skipUntil.js | 7 + .../rxjs/operator/skipUntil.js.map | 1 + .../node_modules/rxjs/operator/skipWhile.d.ts | 1 + .../node_modules/rxjs/operator/skipWhile.js | 7 + .../rxjs/operator/skipWhile.js.map | 1 + .../node_modules/rxjs/operator/startWith.d.ts | 1 + .../node_modules/rxjs/operator/startWith.js | 7 + .../rxjs/operator/startWith.js.map | 1 + .../rxjs/operator/subscribeOn.d.ts | 1 + .../node_modules/rxjs/operator/subscribeOn.js | 7 + .../rxjs/operator/subscribeOn.js.map | 1 + .../node_modules/rxjs/operator/switch.d.ts | 1 + .../node_modules/rxjs/operator/switch.js | 7 + .../node_modules/rxjs/operator/switch.js.map | 1 + .../node_modules/rxjs/operator/switchMap.d.ts | 1 + .../node_modules/rxjs/operator/switchMap.js | 7 + .../rxjs/operator/switchMap.js.map | 1 + .../rxjs/operator/switchMapTo.d.ts | 1 + .../node_modules/rxjs/operator/switchMapTo.js | 7 + .../rxjs/operator/switchMapTo.js.map | 1 + .../node_modules/rxjs/operator/take.d.ts | 1 + .../node_modules/rxjs/operator/take.js | 7 + .../node_modules/rxjs/operator/take.js.map | 1 + .../node_modules/rxjs/operator/takeLast.d.ts | 1 + .../node_modules/rxjs/operator/takeLast.js | 7 + .../rxjs/operator/takeLast.js.map | 1 + .../node_modules/rxjs/operator/takeUntil.d.ts | 1 + .../node_modules/rxjs/operator/takeUntil.js | 7 + .../rxjs/operator/takeUntil.js.map | 1 + .../node_modules/rxjs/operator/takeWhile.d.ts | 1 + .../node_modules/rxjs/operator/takeWhile.js | 7 + .../rxjs/operator/takeWhile.js.map | 1 + .../node_modules/rxjs/operator/throttle.d.ts | 1 + .../node_modules/rxjs/operator/throttle.js | 7 + .../rxjs/operator/throttle.js.map | 1 + .../rxjs/operator/throttleTime.d.ts | 1 + .../rxjs/operator/throttleTime.js | 7 + .../rxjs/operator/throttleTime.js.map | 1 + .../rxjs/operator/timeInterval.d.ts | 1 + .../rxjs/operator/timeInterval.js | 7 + .../rxjs/operator/timeInterval.js.map | 1 + .../node_modules/rxjs/operator/timeout.d.ts | 1 + .../node_modules/rxjs/operator/timeout.js | 7 + .../node_modules/rxjs/operator/timeout.js.map | 1 + .../rxjs/operator/timeoutWith.d.ts | 1 + .../node_modules/rxjs/operator/timeoutWith.js | 7 + .../rxjs/operator/timeoutWith.js.map | 1 + .../node_modules/rxjs/operator/timestamp.d.ts | 1 + .../node_modules/rxjs/operator/timestamp.js | 7 + .../rxjs/operator/timestamp.js.map | 1 + .../node_modules/rxjs/operator/toArray.d.ts | 1 + .../node_modules/rxjs/operator/toArray.js | 7 + .../node_modules/rxjs/operator/toArray.js.map | 1 + .../node_modules/rxjs/operator/toPromise.d.ts | 1 + .../node_modules/rxjs/operator/toPromise.js | 7 + .../rxjs/operator/toPromise.js.map | 1 + .../node_modules/rxjs/operator/window.d.ts | 1 + .../node_modules/rxjs/operator/window.js | 7 + .../node_modules/rxjs/operator/window.js.map | 1 + .../rxjs/operator/windowCount.d.ts | 1 + .../node_modules/rxjs/operator/windowCount.js | 7 + .../rxjs/operator/windowCount.js.map | 1 + .../rxjs/operator/windowTime.d.ts | 1 + .../node_modules/rxjs/operator/windowTime.js | 7 + .../rxjs/operator/windowTime.js.map | 1 + .../rxjs/operator/windowToggle.d.ts | 1 + .../rxjs/operator/windowToggle.js | 7 + .../rxjs/operator/windowToggle.js.map | 1 + .../rxjs/operator/windowWhen.d.ts | 1 + .../node_modules/rxjs/operator/windowWhen.js | 7 + .../rxjs/operator/windowWhen.js.map | 1 + .../rxjs/operator/withLatestFrom.d.ts | 1 + .../rxjs/operator/withLatestFrom.js | 7 + .../rxjs/operator/withLatestFrom.js.map | 1 + .../node_modules/rxjs/operator/zip.d.ts | 1 + .../node_modules/rxjs/operator/zip.js | 7 + .../node_modules/rxjs/operator/zip.js.map | 1 + .../node_modules/rxjs/operator/zipAll.d.ts | 1 + .../node_modules/rxjs/operator/zipAll.js | 7 + .../node_modules/rxjs/operator/zipAll.js.map | 1 + .../node_modules/rxjs/operators/audit.d.ts | 1 + .../node_modules/rxjs/operators/audit.js | 7 + .../node_modules/rxjs/operators/audit.js.map | 1 + .../rxjs/operators/auditTime.d.ts | 1 + .../node_modules/rxjs/operators/auditTime.js | 7 + .../rxjs/operators/auditTime.js.map | 1 + .../node_modules/rxjs/operators/buffer.d.ts | 1 + .../node_modules/rxjs/operators/buffer.js | 7 + .../node_modules/rxjs/operators/buffer.js.map | 1 + .../rxjs/operators/bufferCount.d.ts | 1 + .../rxjs/operators/bufferCount.js | 7 + .../rxjs/operators/bufferCount.js.map | 1 + .../rxjs/operators/bufferTime.d.ts | 1 + .../node_modules/rxjs/operators/bufferTime.js | 7 + .../rxjs/operators/bufferTime.js.map | 1 + .../rxjs/operators/bufferToggle.d.ts | 1 + .../rxjs/operators/bufferToggle.js | 7 + .../rxjs/operators/bufferToggle.js.map | 1 + .../rxjs/operators/bufferWhen.d.ts | 1 + .../node_modules/rxjs/operators/bufferWhen.js | 7 + .../rxjs/operators/bufferWhen.js.map | 1 + .../rxjs/operators/catchError.d.ts | 1 + .../node_modules/rxjs/operators/catchError.js | 7 + .../rxjs/operators/catchError.js.map | 1 + .../rxjs/operators/combineAll.d.ts | 1 + .../node_modules/rxjs/operators/combineAll.js | 7 + .../rxjs/operators/combineAll.js.map | 1 + .../rxjs/operators/combineLatest.d.ts | 1 + .../rxjs/operators/combineLatest.js | 7 + .../rxjs/operators/combineLatest.js.map | 1 + .../node_modules/rxjs/operators/concat.d.ts | 1 + .../node_modules/rxjs/operators/concat.js | 7 + .../node_modules/rxjs/operators/concat.js.map | 1 + .../rxjs/operators/concatAll.d.ts | 1 + .../node_modules/rxjs/operators/concatAll.js | 7 + .../rxjs/operators/concatAll.js.map | 1 + .../rxjs/operators/concatMap.d.ts | 1 + .../node_modules/rxjs/operators/concatMap.js | 7 + .../rxjs/operators/concatMap.js.map | 1 + .../rxjs/operators/concatMapTo.d.ts | 1 + .../rxjs/operators/concatMapTo.js | 7 + .../rxjs/operators/concatMapTo.js.map | 1 + .../node_modules/rxjs/operators/count.d.ts | 1 + .../node_modules/rxjs/operators/count.js | 7 + .../node_modules/rxjs/operators/count.js.map | 1 + .../node_modules/rxjs/operators/debounce.d.ts | 1 + .../node_modules/rxjs/operators/debounce.js | 7 + .../rxjs/operators/debounce.js.map | 1 + .../rxjs/operators/debounceTime.d.ts | 1 + .../rxjs/operators/debounceTime.js | 7 + .../rxjs/operators/debounceTime.js.map | 1 + .../rxjs/operators/defaultIfEmpty.d.ts | 1 + .../rxjs/operators/defaultIfEmpty.js | 7 + .../rxjs/operators/defaultIfEmpty.js.map | 1 + .../node_modules/rxjs/operators/delay.d.ts | 1 + .../node_modules/rxjs/operators/delay.js | 7 + .../node_modules/rxjs/operators/delay.js.map | 1 + .../rxjs/operators/delayWhen.d.ts | 1 + .../node_modules/rxjs/operators/delayWhen.js | 7 + .../rxjs/operators/delayWhen.js.map | 1 + .../rxjs/operators/dematerialize.d.ts | 1 + .../rxjs/operators/dematerialize.js | 7 + .../rxjs/operators/dematerialize.js.map | 1 + .../node_modules/rxjs/operators/distinct.d.ts | 1 + .../node_modules/rxjs/operators/distinct.js | 7 + .../rxjs/operators/distinct.js.map | 1 + .../rxjs/operators/distinctUntilChanged.d.ts | 1 + .../rxjs/operators/distinctUntilChanged.js | 7 + .../operators/distinctUntilChanged.js.map | 1 + .../operators/distinctUntilKeyChanged.d.ts | 1 + .../rxjs/operators/distinctUntilKeyChanged.js | 7 + .../operators/distinctUntilKeyChanged.js.map | 1 + .../rxjs/operators/elementAt.d.ts | 1 + .../node_modules/rxjs/operators/elementAt.js | 7 + .../rxjs/operators/elementAt.js.map | 1 + .../node_modules/rxjs/operators/every.d.ts | 1 + .../node_modules/rxjs/operators/every.js | 7 + .../node_modules/rxjs/operators/every.js.map | 1 + .../node_modules/rxjs/operators/exhaust.d.ts | 1 + .../node_modules/rxjs/operators/exhaust.js | 7 + .../rxjs/operators/exhaust.js.map | 1 + .../rxjs/operators/exhaustMap.d.ts | 1 + .../node_modules/rxjs/operators/exhaustMap.js | 7 + .../rxjs/operators/exhaustMap.js.map | 1 + .../node_modules/rxjs/operators/expand.d.ts | 1 + .../node_modules/rxjs/operators/expand.js | 7 + .../node_modules/rxjs/operators/expand.js.map | 1 + .../node_modules/rxjs/operators/filter.d.ts | 1 + .../node_modules/rxjs/operators/filter.js | 7 + .../node_modules/rxjs/operators/filter.js.map | 1 + .../node_modules/rxjs/operators/finalize.d.ts | 1 + .../node_modules/rxjs/operators/finalize.js | 7 + .../rxjs/operators/finalize.js.map | 1 + .../node_modules/rxjs/operators/find.d.ts | 1 + .../node_modules/rxjs/operators/find.js | 7 + .../node_modules/rxjs/operators/find.js.map | 1 + .../rxjs/operators/findIndex.d.ts | 1 + .../node_modules/rxjs/operators/findIndex.js | 7 + .../rxjs/operators/findIndex.js.map | 1 + .../node_modules/rxjs/operators/first.d.ts | 1 + .../node_modules/rxjs/operators/first.js | 7 + .../node_modules/rxjs/operators/first.js.map | 1 + .../node_modules/rxjs/operators/groupBy.d.ts | 1 + .../node_modules/rxjs/operators/groupBy.js | 7 + .../rxjs/operators/groupBy.js.map | 1 + .../rxjs/operators/ignoreElements.d.ts | 1 + .../rxjs/operators/ignoreElements.js | 7 + .../rxjs/operators/ignoreElements.js.map | 1 + .../node_modules/rxjs/operators/index.d.ts | 104 + .../node_modules/rxjs/operators/index.js | 211 + .../node_modules/rxjs/operators/index.js.map | 1 + .../node_modules/rxjs/operators/isEmpty.d.ts | 1 + .../node_modules/rxjs/operators/isEmpty.js | 7 + .../rxjs/operators/isEmpty.js.map | 1 + .../node_modules/rxjs/operators/last.d.ts | 1 + .../node_modules/rxjs/operators/last.js | 7 + .../node_modules/rxjs/operators/last.js.map | 1 + .../node_modules/rxjs/operators/map.d.ts | 1 + .../node_modules/rxjs/operators/map.js | 7 + .../node_modules/rxjs/operators/map.js.map | 1 + .../node_modules/rxjs/operators/mapTo.d.ts | 1 + .../node_modules/rxjs/operators/mapTo.js | 7 + .../node_modules/rxjs/operators/mapTo.js.map | 1 + .../rxjs/operators/materialize.d.ts | 1 + .../rxjs/operators/materialize.js | 7 + .../rxjs/operators/materialize.js.map | 1 + .../node_modules/rxjs/operators/max.d.ts | 1 + .../node_modules/rxjs/operators/max.js | 7 + .../node_modules/rxjs/operators/max.js.map | 1 + .../node_modules/rxjs/operators/merge.d.ts | 1 + .../node_modules/rxjs/operators/merge.js | 7 + .../node_modules/rxjs/operators/merge.js.map | 1 + .../node_modules/rxjs/operators/mergeAll.d.ts | 1 + .../node_modules/rxjs/operators/mergeAll.js | 7 + .../rxjs/operators/mergeAll.js.map | 1 + .../node_modules/rxjs/operators/mergeMap.d.ts | 1 + .../node_modules/rxjs/operators/mergeMap.js | 7 + .../rxjs/operators/mergeMap.js.map | 1 + .../rxjs/operators/mergeMapTo.d.ts | 1 + .../node_modules/rxjs/operators/mergeMapTo.js | 7 + .../rxjs/operators/mergeMapTo.js.map | 1 + .../rxjs/operators/mergeScan.d.ts | 1 + .../node_modules/rxjs/operators/mergeScan.js | 7 + .../rxjs/operators/mergeScan.js.map | 1 + .../node_modules/rxjs/operators/min.d.ts | 1 + .../node_modules/rxjs/operators/min.js | 7 + .../node_modules/rxjs/operators/min.js.map | 1 + .../rxjs/operators/multicast.d.ts | 1 + .../node_modules/rxjs/operators/multicast.js | 7 + .../rxjs/operators/multicast.js.map | 1 + .../rxjs/operators/observeOn.d.ts | 1 + .../node_modules/rxjs/operators/observeOn.js | 7 + .../rxjs/operators/observeOn.js.map | 1 + .../rxjs/operators/onErrorResumeNext.d.ts | 1 + .../rxjs/operators/onErrorResumeNext.js | 7 + .../rxjs/operators/onErrorResumeNext.js.map | 1 + .../node_modules/rxjs/operators/package.json | 8 + .../node_modules/rxjs/operators/pairwise.d.ts | 1 + .../node_modules/rxjs/operators/pairwise.js | 7 + .../rxjs/operators/pairwise.js.map | 1 + .../rxjs/operators/partition.d.ts | 1 + .../node_modules/rxjs/operators/partition.js | 7 + .../rxjs/operators/partition.js.map | 1 + .../node_modules/rxjs/operators/pluck.d.ts | 1 + .../node_modules/rxjs/operators/pluck.js | 7 + .../node_modules/rxjs/operators/pluck.js.map | 1 + .../node_modules/rxjs/operators/publish.d.ts | 1 + .../node_modules/rxjs/operators/publish.js | 7 + .../rxjs/operators/publish.js.map | 1 + .../rxjs/operators/publishBehavior.d.ts | 1 + .../rxjs/operators/publishBehavior.js | 7 + .../rxjs/operators/publishBehavior.js.map | 1 + .../rxjs/operators/publishLast.d.ts | 1 + .../rxjs/operators/publishLast.js | 7 + .../rxjs/operators/publishLast.js.map | 1 + .../rxjs/operators/publishReplay.d.ts | 1 + .../rxjs/operators/publishReplay.js | 7 + .../rxjs/operators/publishReplay.js.map | 1 + .../node_modules/rxjs/operators/race.d.ts | 1 + .../node_modules/rxjs/operators/race.js | 7 + .../node_modules/rxjs/operators/race.js.map | 1 + .../node_modules/rxjs/operators/reduce.d.ts | 1 + .../node_modules/rxjs/operators/reduce.js | 7 + .../node_modules/rxjs/operators/reduce.js.map | 1 + .../node_modules/rxjs/operators/refCount.d.ts | 1 + .../node_modules/rxjs/operators/refCount.js | 7 + .../rxjs/operators/refCount.js.map | 1 + .../node_modules/rxjs/operators/repeat.d.ts | 1 + .../node_modules/rxjs/operators/repeat.js | 7 + .../node_modules/rxjs/operators/repeat.js.map | 1 + .../rxjs/operators/repeatWhen.d.ts | 1 + .../node_modules/rxjs/operators/repeatWhen.js | 7 + .../rxjs/operators/repeatWhen.js.map | 1 + .../node_modules/rxjs/operators/retry.d.ts | 1 + .../node_modules/rxjs/operators/retry.js | 7 + .../node_modules/rxjs/operators/retry.js.map | 1 + .../rxjs/operators/retryWhen.d.ts | 1 + .../node_modules/rxjs/operators/retryWhen.js | 7 + .../rxjs/operators/retryWhen.js.map | 1 + .../node_modules/rxjs/operators/sample.d.ts | 1 + .../node_modules/rxjs/operators/sample.js | 7 + .../node_modules/rxjs/operators/sample.js.map | 1 + .../rxjs/operators/sampleTime.d.ts | 1 + .../node_modules/rxjs/operators/sampleTime.js | 7 + .../rxjs/operators/sampleTime.js.map | 1 + .../node_modules/rxjs/operators/scan.d.ts | 1 + .../node_modules/rxjs/operators/scan.js | 7 + .../node_modules/rxjs/operators/scan.js.map | 1 + .../rxjs/operators/sequenceEqual.d.ts | 1 + .../rxjs/operators/sequenceEqual.js | 7 + .../rxjs/operators/sequenceEqual.js.map | 1 + .../node_modules/rxjs/operators/share.d.ts | 1 + .../node_modules/rxjs/operators/share.js | 7 + .../node_modules/rxjs/operators/share.js.map | 1 + .../rxjs/operators/shareReplay.d.ts | 1 + .../rxjs/operators/shareReplay.js | 7 + .../rxjs/operators/shareReplay.js.map | 1 + .../node_modules/rxjs/operators/single.d.ts | 1 + .../node_modules/rxjs/operators/single.js | 7 + .../node_modules/rxjs/operators/single.js.map | 1 + .../node_modules/rxjs/operators/skip.d.ts | 1 + .../node_modules/rxjs/operators/skip.js | 7 + .../node_modules/rxjs/operators/skip.js.map | 1 + .../node_modules/rxjs/operators/skipLast.d.ts | 1 + .../node_modules/rxjs/operators/skipLast.js | 7 + .../rxjs/operators/skipLast.js.map | 1 + .../rxjs/operators/skipUntil.d.ts | 1 + .../node_modules/rxjs/operators/skipUntil.js | 7 + .../rxjs/operators/skipUntil.js.map | 1 + .../rxjs/operators/skipWhile.d.ts | 1 + .../node_modules/rxjs/operators/skipWhile.js | 7 + .../rxjs/operators/skipWhile.js.map | 1 + .../rxjs/operators/startWith.d.ts | 1 + .../node_modules/rxjs/operators/startWith.js | 7 + .../rxjs/operators/startWith.js.map | 1 + .../rxjs/operators/subscribeOn.d.ts | 1 + .../rxjs/operators/subscribeOn.js | 7 + .../rxjs/operators/subscribeOn.js.map | 1 + .../rxjs/operators/switchAll.d.ts | 1 + .../node_modules/rxjs/operators/switchAll.js | 7 + .../rxjs/operators/switchAll.js.map | 1 + .../rxjs/operators/switchMap.d.ts | 1 + .../node_modules/rxjs/operators/switchMap.js | 7 + .../rxjs/operators/switchMap.js.map | 1 + .../rxjs/operators/switchMapTo.d.ts | 1 + .../rxjs/operators/switchMapTo.js | 7 + .../rxjs/operators/switchMapTo.js.map | 1 + .../node_modules/rxjs/operators/take.d.ts | 1 + .../node_modules/rxjs/operators/take.js | 7 + .../node_modules/rxjs/operators/take.js.map | 1 + .../node_modules/rxjs/operators/takeLast.d.ts | 1 + .../node_modules/rxjs/operators/takeLast.js | 7 + .../rxjs/operators/takeLast.js.map | 1 + .../rxjs/operators/takeUntil.d.ts | 1 + .../node_modules/rxjs/operators/takeUntil.js | 7 + .../rxjs/operators/takeUntil.js.map | 1 + .../rxjs/operators/takeWhile.d.ts | 1 + .../node_modules/rxjs/operators/takeWhile.js | 7 + .../rxjs/operators/takeWhile.js.map | 1 + .../node_modules/rxjs/operators/tap.d.ts | 1 + .../node_modules/rxjs/operators/tap.js | 7 + .../node_modules/rxjs/operators/tap.js.map | 1 + .../node_modules/rxjs/operators/throttle.d.ts | 1 + .../node_modules/rxjs/operators/throttle.js | 7 + .../rxjs/operators/throttle.js.map | 1 + .../rxjs/operators/throttleTime.d.ts | 1 + .../rxjs/operators/throttleTime.js | 7 + .../rxjs/operators/throttleTime.js.map | 1 + .../rxjs/operators/throwIfEmpty.d.ts | 1 + .../rxjs/operators/throwIfEmpty.js | 7 + .../rxjs/operators/throwIfEmpty.js.map | 1 + .../rxjs/operators/timeInterval.d.ts | 1 + .../rxjs/operators/timeInterval.js | 7 + .../rxjs/operators/timeInterval.js.map | 1 + .../node_modules/rxjs/operators/timeout.d.ts | 1 + .../node_modules/rxjs/operators/timeout.js | 7 + .../rxjs/operators/timeout.js.map | 1 + .../rxjs/operators/timeoutWith.d.ts | 1 + .../rxjs/operators/timeoutWith.js | 7 + .../rxjs/operators/timeoutWith.js.map | 1 + .../rxjs/operators/timestamp.d.ts | 1 + .../node_modules/rxjs/operators/timestamp.js | 7 + .../rxjs/operators/timestamp.js.map | 1 + .../node_modules/rxjs/operators/toArray.d.ts | 1 + .../node_modules/rxjs/operators/toArray.js | 7 + .../rxjs/operators/toArray.js.map | 1 + .../node_modules/rxjs/operators/window.d.ts | 1 + .../node_modules/rxjs/operators/window.js | 7 + .../node_modules/rxjs/operators/window.js.map | 1 + .../rxjs/operators/windowCount.d.ts | 1 + .../rxjs/operators/windowCount.js | 7 + .../rxjs/operators/windowCount.js.map | 1 + .../rxjs/operators/windowTime.d.ts | 1 + .../node_modules/rxjs/operators/windowTime.js | 7 + .../rxjs/operators/windowTime.js.map | 1 + .../rxjs/operators/windowToggle.d.ts | 1 + .../rxjs/operators/windowToggle.js | 7 + .../rxjs/operators/windowToggle.js.map | 1 + .../rxjs/operators/windowWhen.d.ts | 1 + .../node_modules/rxjs/operators/windowWhen.js | 7 + .../rxjs/operators/windowWhen.js.map | 1 + .../rxjs/operators/withLatestFrom.d.ts | 1 + .../rxjs/operators/withLatestFrom.js | 7 + .../rxjs/operators/withLatestFrom.js.map | 1 + .../node_modules/rxjs/operators/zip.d.ts | 1 + .../node_modules/rxjs/operators/zip.js | 7 + .../node_modules/rxjs/operators/zip.js.map | 1 + .../node_modules/rxjs/operators/zipAll.d.ts | 1 + .../node_modules/rxjs/operators/zipAll.js | 7 + .../node_modules/rxjs/operators/zipAll.js.map | 1 + .../node_modules/rxjs/package.json | 208 + .../rxjs/scheduler/animationFrame.d.ts | 1 + .../rxjs/scheduler/animationFrame.js | 7 + .../rxjs/scheduler/animationFrame.js.map | 1 + .../node_modules/rxjs/scheduler/asap.d.ts | 1 + .../node_modules/rxjs/scheduler/asap.js | 7 + .../node_modules/rxjs/scheduler/asap.js.map | 1 + .../node_modules/rxjs/scheduler/async.d.ts | 1 + .../node_modules/rxjs/scheduler/async.js | 7 + .../node_modules/rxjs/scheduler/async.js.map | 1 + .../node_modules/rxjs/scheduler/queue.d.ts | 1 + .../node_modules/rxjs/scheduler/queue.js | 7 + .../node_modules/rxjs/scheduler/queue.js.map | 1 + .../node_modules/rxjs/src/AsyncSubject.ts | 1 + .../node_modules/rxjs/src/BehaviorSubject.ts | 1 + .../node_modules/rxjs/src/InnerSubscriber.ts | 1 + .../node_modules/rxjs/src/LICENSE.txt | 202 + .../node_modules/rxjs/src/MiscJSDoc.ts | 451 + .../node_modules/rxjs/src/Notification.ts | 1 + .../node_modules/rxjs/src/Observable.ts | 1 + .../node_modules/rxjs/src/Observer.ts | 1 + .../node_modules/rxjs/src/Operator.ts | 1 + .../node_modules/rxjs/src/OuterSubscriber.ts | 1 + .../node_modules/rxjs/src/README.md | 147 + .../node_modules/rxjs/src/ReplaySubject.ts | 1 + .../node_modules/rxjs/src/Rx.global.js | 5 + tic-tac-toe-app/node_modules/rxjs/src/Rx.ts | 2 + .../node_modules/rxjs/src/Scheduler.ts | 1 + .../node_modules/rxjs/src/Subject.ts | 1 + .../rxjs/src/SubjectSubscription.ts | 1 + .../node_modules/rxjs/src/Subscriber.ts | 1 + .../node_modules/rxjs/src/Subscription.ts | 1 + .../rxjs/src/add/observable/bindCallback.ts | 1 + .../src/add/observable/bindNodeCallback.ts | 1 + .../rxjs/src/add/observable/combineLatest.ts | 1 + .../rxjs/src/add/observable/concat.ts | 1 + .../rxjs/src/add/observable/defer.ts | 1 + .../rxjs/src/add/observable/dom/ajax.ts | 1 + .../rxjs/src/add/observable/dom/webSocket.ts | 1 + .../rxjs/src/add/observable/empty.ts | 1 + .../rxjs/src/add/observable/forkJoin.ts | 1 + .../rxjs/src/add/observable/from.ts | 1 + .../rxjs/src/add/observable/fromEvent.ts | 1 + .../src/add/observable/fromEventPattern.ts | 1 + .../rxjs/src/add/observable/fromPromise.ts | 1 + .../rxjs/src/add/observable/generate.ts | 1 + .../rxjs/src/add/observable/if.ts | 1 + .../rxjs/src/add/observable/interval.ts | 1 + .../rxjs/src/add/observable/merge.ts | 1 + .../rxjs/src/add/observable/never.ts | 1 + .../rxjs/src/add/observable/of.ts | 1 + .../src/add/observable/onErrorResumeNext.ts | 1 + .../rxjs/src/add/observable/pairs.ts | 1 + .../rxjs/src/add/observable/race.ts | 1 + .../rxjs/src/add/observable/range.ts | 1 + .../rxjs/src/add/observable/throw.ts | 1 + .../rxjs/src/add/observable/timer.ts | 1 + .../rxjs/src/add/observable/using.ts | 1 + .../rxjs/src/add/observable/zip.ts | 1 + .../rxjs/src/add/operator/audit.ts | 1 + .../rxjs/src/add/operator/auditTime.ts | 1 + .../rxjs/src/add/operator/buffer.ts | 1 + .../rxjs/src/add/operator/bufferCount.ts | 1 + .../rxjs/src/add/operator/bufferTime.ts | 1 + .../rxjs/src/add/operator/bufferToggle.ts | 1 + .../rxjs/src/add/operator/bufferWhen.ts | 1 + .../rxjs/src/add/operator/catch.ts | 1 + .../rxjs/src/add/operator/combineAll.ts | 1 + .../rxjs/src/add/operator/combineLatest.ts | 1 + .../rxjs/src/add/operator/concat.ts | 1 + .../rxjs/src/add/operator/concatAll.ts | 1 + .../rxjs/src/add/operator/concatMap.ts | 1 + .../rxjs/src/add/operator/concatMapTo.ts | 1 + .../rxjs/src/add/operator/count.ts | 1 + .../rxjs/src/add/operator/debounce.ts | 1 + .../rxjs/src/add/operator/debounceTime.ts | 1 + .../rxjs/src/add/operator/defaultIfEmpty.ts | 1 + .../rxjs/src/add/operator/delay.ts | 1 + .../rxjs/src/add/operator/delayWhen.ts | 1 + .../rxjs/src/add/operator/dematerialize.ts | 1 + .../rxjs/src/add/operator/distinct.ts | 1 + .../src/add/operator/distinctUntilChanged.ts | 1 + .../add/operator/distinctUntilKeyChanged.ts | 1 + .../node_modules/rxjs/src/add/operator/do.ts | 1 + .../rxjs/src/add/operator/elementAt.ts | 1 + .../rxjs/src/add/operator/every.ts | 1 + .../rxjs/src/add/operator/exhaust.ts | 1 + .../rxjs/src/add/operator/exhaustMap.ts | 1 + .../rxjs/src/add/operator/expand.ts | 1 + .../rxjs/src/add/operator/filter.ts | 1 + .../rxjs/src/add/operator/finally.ts | 1 + .../rxjs/src/add/operator/find.ts | 1 + .../rxjs/src/add/operator/findIndex.ts | 1 + .../rxjs/src/add/operator/first.ts | 1 + .../rxjs/src/add/operator/groupBy.ts | 1 + .../rxjs/src/add/operator/ignoreElements.ts | 1 + .../rxjs/src/add/operator/isEmpty.ts | 1 + .../rxjs/src/add/operator/last.ts | 1 + .../node_modules/rxjs/src/add/operator/let.ts | 1 + .../node_modules/rxjs/src/add/operator/map.ts | 1 + .../rxjs/src/add/operator/mapTo.ts | 1 + .../rxjs/src/add/operator/materialize.ts | 1 + .../node_modules/rxjs/src/add/operator/max.ts | 1 + .../rxjs/src/add/operator/merge.ts | 1 + .../rxjs/src/add/operator/mergeAll.ts | 1 + .../rxjs/src/add/operator/mergeMap.ts | 1 + .../rxjs/src/add/operator/mergeMapTo.ts | 1 + .../rxjs/src/add/operator/mergeScan.ts | 1 + .../node_modules/rxjs/src/add/operator/min.ts | 1 + .../rxjs/src/add/operator/multicast.ts | 1 + .../rxjs/src/add/operator/observeOn.ts | 1 + .../src/add/operator/onErrorResumeNext.ts | 1 + .../rxjs/src/add/operator/pairwise.ts | 1 + .../rxjs/src/add/operator/partition.ts | 1 + .../rxjs/src/add/operator/pluck.ts | 1 + .../rxjs/src/add/operator/publish.ts | 1 + .../rxjs/src/add/operator/publishBehavior.ts | 1 + .../rxjs/src/add/operator/publishLast.ts | 1 + .../rxjs/src/add/operator/publishReplay.ts | 1 + .../rxjs/src/add/operator/race.ts | 1 + .../rxjs/src/add/operator/reduce.ts | 1 + .../rxjs/src/add/operator/repeat.ts | 1 + .../rxjs/src/add/operator/repeatWhen.ts | 1 + .../rxjs/src/add/operator/retry.ts | 1 + .../rxjs/src/add/operator/retryWhen.ts | 1 + .../rxjs/src/add/operator/sample.ts | 1 + .../rxjs/src/add/operator/sampleTime.ts | 1 + .../rxjs/src/add/operator/scan.ts | 1 + .../rxjs/src/add/operator/sequenceEqual.ts | 1 + .../rxjs/src/add/operator/share.ts | 1 + .../rxjs/src/add/operator/shareReplay.ts | 1 + .../rxjs/src/add/operator/single.ts | 1 + .../rxjs/src/add/operator/skip.ts | 1 + .../rxjs/src/add/operator/skipLast.ts | 1 + .../rxjs/src/add/operator/skipUntil.ts | 1 + .../rxjs/src/add/operator/skipWhile.ts | 1 + .../rxjs/src/add/operator/startWith.ts | 1 + .../rxjs/src/add/operator/subscribeOn.ts | 1 + .../rxjs/src/add/operator/switch.ts | 1 + .../rxjs/src/add/operator/switchMap.ts | 1 + .../rxjs/src/add/operator/switchMapTo.ts | 1 + .../rxjs/src/add/operator/take.ts | 1 + .../rxjs/src/add/operator/takeLast.ts | 1 + .../rxjs/src/add/operator/takeUntil.ts | 1 + .../rxjs/src/add/operator/takeWhile.ts | 1 + .../rxjs/src/add/operator/throttle.ts | 1 + .../rxjs/src/add/operator/throttleTime.ts | 1 + .../rxjs/src/add/operator/timeInterval.ts | 1 + .../rxjs/src/add/operator/timeout.ts | 1 + .../rxjs/src/add/operator/timeoutWith.ts | 1 + .../rxjs/src/add/operator/timestamp.ts | 1 + .../rxjs/src/add/operator/toArray.ts | 1 + .../rxjs/src/add/operator/toPromise.ts | 1 + .../rxjs/src/add/operator/window.ts | 1 + .../rxjs/src/add/operator/windowCount.ts | 1 + .../rxjs/src/add/operator/windowTime.ts | 1 + .../rxjs/src/add/operator/windowToggle.ts | 1 + .../rxjs/src/add/operator/windowWhen.ts | 1 + .../rxjs/src/add/operator/withLatestFrom.ts | 1 + .../node_modules/rxjs/src/add/operator/zip.ts | 1 + .../rxjs/src/add/operator/zipAll.ts | 1 + .../node_modules/rxjs/src/ajax/index.ts | 2 + .../node_modules/rxjs/src/ajax/package.json | 8 + .../node_modules/rxjs/src/fetch/index.ts | 1 + .../node_modules/rxjs/src/fetch/package.json | 8 + .../node_modules/rxjs/src/index.ts | 78 + .../node_modules/rxjs/src/interfaces.ts | 1 + .../rxjs/src/internal-compatibility/index.ts | 64 + .../src/internal-compatibility/package.json | 8 + .../rxjs/src/internal/AsyncSubject.ts | 49 + .../rxjs/src/internal/BehaviorSubject.ts | 45 + .../rxjs/src/internal/InnerSubscriber.ts | 29 + .../rxjs/src/internal/Notification.ts | 148 + .../rxjs/src/internal/Observable.ts | 382 + .../rxjs/src/internal/Observer.ts | 16 + .../rxjs/src/internal/Operator.ts | 6 + .../rxjs/src/internal/OuterSubscriber.ts | 23 + .../rxjs/src/internal/ReplaySubject.ts | 136 + .../node_modules/rxjs/src/internal/Rx.ts | 228 + .../rxjs/src/internal/Scheduler.ts | 68 + .../node_modules/rxjs/src/internal/Subject.ts | 188 + .../rxjs/src/internal/SubjectSubscription.ts | 39 + .../rxjs/src/internal/Subscriber.ts | 302 + .../rxjs/src/internal/Subscription.ts | 211 + .../node_modules/rxjs/src/internal/config.ts | 35 + .../observable/ConnectableObservable.ts | 182 + .../observable/SubscribeOnObservable.ts | 52 + .../src/internal/observable/bindCallback.ts | 290 + .../internal/observable/bindNodeCallback.ts | 278 + .../src/internal/observable/combineLatest.ts | 328 + .../rxjs/src/internal/observable/concat.ts | 147 + .../rxjs/src/internal/observable/defer.ts | 67 + .../internal/observable/dom/AjaxObservable.ts | 550 + .../src/internal/observable/dom/MiscJSDoc.ts | 77 + .../observable/dom/WebSocketSubject.ts | 387 + .../rxjs/src/internal/observable/dom/ajax.ts | 82 + .../rxjs/src/internal/observable/dom/fetch.ts | 107 + .../src/internal/observable/dom/webSocket.ts | 156 + .../rxjs/src/internal/observable/empty.ts | 68 + .../rxjs/src/internal/observable/forkJoin.ts | 204 + .../rxjs/src/internal/observable/from.ts | 118 + .../rxjs/src/internal/observable/fromArray.ts | 12 + .../rxjs/src/internal/observable/fromEvent.ts | 245 + .../internal/observable/fromEventPattern.ts | 169 + .../src/internal/observable/fromIterable.ts | 15 + .../src/internal/observable/fromObservable.ts | 12 + .../src/internal/observable/fromPromise.ts | 12 + .../rxjs/src/internal/observable/generate.ts | 379 + .../rxjs/src/internal/observable/iif.ts | 100 + .../rxjs/src/internal/observable/interval.ts | 83 + .../rxjs/src/internal/observable/merge.ts | 140 + .../rxjs/src/internal/observable/never.ts | 41 + .../rxjs/src/internal/observable/of.ts | 110 + .../internal/observable/onErrorResumeNext.ts | 102 + .../rxjs/src/internal/observable/pairs.ts | 91 + .../rxjs/src/internal/observable/partition.ts | 67 + .../rxjs/src/internal/observable/race.ts | 140 + .../rxjs/src/internal/observable/range.ts | 90 + .../src/internal/observable/throwError.ts | 84 + .../rxjs/src/internal/observable/timer.ts | 101 + .../rxjs/src/internal/observable/using.ts | 63 + .../rxjs/src/internal/observable/zip.ts | 330 + .../rxjs/src/internal/operators/audit.ts | 128 + .../rxjs/src/internal/operators/auditTime.ts | 57 + .../rxjs/src/internal/operators/buffer.ts | 89 + .../src/internal/operators/bufferCount.ts | 158 + .../rxjs/src/internal/operators/bufferTime.ts | 250 + .../src/internal/operators/bufferToggle.ts | 182 + .../rxjs/src/internal/operators/bufferWhen.ts | 144 + .../rxjs/src/internal/operators/catchError.ts | 149 + .../rxjs/src/internal/operators/combineAll.ts | 57 + .../src/internal/operators/combineLatest.ts | 59 + .../rxjs/src/internal/operators/concat.ts | 29 + .../rxjs/src/internal/operators/concatAll.ts | 68 + .../rxjs/src/internal/operators/concatMap.ts | 77 + .../src/internal/operators/concatMapTo.ts | 73 + .../rxjs/src/internal/operators/count.ts | 121 + .../rxjs/src/internal/operators/debounce.ts | 148 + .../src/internal/operators/debounceTime.ts | 130 + .../src/internal/operators/defaultIfEmpty.ts | 84 + .../rxjs/src/internal/operators/delay.ts | 161 + .../rxjs/src/internal/operators/delayWhen.ts | 225 + .../src/internal/operators/dematerialize.ts | 78 + .../rxjs/src/internal/operators/distinct.ts | 135 + .../operators/distinctUntilChanged.ts | 124 + .../operators/distinctUntilKeyChanged.ts | 81 + .../rxjs/src/internal/operators/elementAt.ts | 69 + .../rxjs/src/internal/operators/endWith.ts | 67 + .../rxjs/src/internal/operators/every.ts | 81 + .../rxjs/src/internal/operators/exhaust.ts | 100 + .../rxjs/src/internal/operators/exhaustMap.ts | 164 + .../rxjs/src/internal/operators/expand.ts | 180 + .../rxjs/src/internal/operators/filter.ts | 104 + .../rxjs/src/internal/operators/finalize.ts | 38 + .../rxjs/src/internal/operators/find.ts | 109 + .../rxjs/src/internal/operators/findIndex.ts | 47 + .../rxjs/src/internal/operators/first.ts | 91 + .../rxjs/src/internal/operators/groupBy.ts | 319 + .../src/internal/operators/ignoreElements.ts | 54 + .../rxjs/src/internal/operators/index.ts | 102 + .../rxjs/src/internal/operators/isEmpty.ts | 100 + .../rxjs/src/internal/operators/last.ts | 54 + .../rxjs/src/internal/operators/map.ts | 91 + .../rxjs/src/internal/operators/mapTo.ts | 72 + .../src/internal/operators/materialize.ts | 94 + .../rxjs/src/internal/operators/max.ts | 55 + .../rxjs/src/internal/operators/merge.ts | 41 + .../rxjs/src/internal/operators/mergeAll.ts | 66 + .../rxjs/src/internal/operators/mergeMap.ts | 181 + .../rxjs/src/internal/operators/mergeMapTo.ts | 64 + .../rxjs/src/internal/operators/mergeScan.ts | 152 + .../rxjs/src/internal/operators/min.ts | 53 + .../rxjs/src/internal/operators/multicast.ts | 69 + .../rxjs/src/internal/operators/observeOn.ts | 122 + .../internal/operators/onErrorResumeNext.ts | 176 + .../rxjs/src/internal/operators/pairwise.ts | 87 + .../rxjs/src/internal/operators/partition.ts | 60 + .../rxjs/src/internal/operators/pluck.ts | 70 + .../rxjs/src/internal/operators/publish.ts | 67 + .../src/internal/operators/publishBehavior.ts | 15 + .../src/internal/operators/publishLast.ts | 67 + .../src/internal/operators/publishReplay.ts | 25 + .../rxjs/src/internal/operators/race.ts | 36 + .../rxjs/src/internal/operators/reduce.ts | 82 + .../rxjs/src/internal/operators/refCount.ts | 148 + .../rxjs/src/internal/operators/repeat.ts | 106 + .../rxjs/src/internal/operators/repeatWhen.ts | 140 + .../rxjs/src/internal/operators/retry.ts | 89 + .../rxjs/src/internal/operators/retryWhen.ts | 114 + .../rxjs/src/internal/operators/sample.ts | 96 + .../rxjs/src/internal/operators/sampleTime.ts | 96 + .../rxjs/src/internal/operators/scan.ts | 121 + .../src/internal/operators/sequenceEqual.ts | 174 + .../rxjs/src/internal/operators/share.ts | 26 + .../src/internal/operators/shareReplay.ts | 122 + .../rxjs/src/internal/operators/single.ts | 123 + .../rxjs/src/internal/operators/skip.ts | 47 + .../rxjs/src/internal/operators/skipLast.ts | 96 + .../rxjs/src/internal/operators/skipUntil.ts | 105 + .../rxjs/src/internal/operators/skipWhile.ts | 64 + .../rxjs/src/internal/operators/startWith.ts | 77 + .../src/internal/operators/subscribeOn.ts | 64 + .../rxjs/src/internal/operators/switchAll.ts | 65 + .../rxjs/src/internal/operators/switchMap.ts | 174 + .../src/internal/operators/switchMapTo.ts | 64 + .../rxjs/src/internal/operators/take.ts | 99 + .../rxjs/src/internal/operators/takeLast.ts | 114 + .../rxjs/src/internal/operators/takeUntil.ts | 92 + .../rxjs/src/internal/operators/takeWhile.ts | 110 + .../rxjs/src/internal/operators/tap.ts | 147 + .../rxjs/src/internal/operators/throttle.ts | 163 + .../src/internal/operators/throttleTime.ts | 174 + .../src/internal/operators/throwIfEmpty.ts | 81 + .../src/internal/operators/timeInterval.ts | 75 + .../rxjs/src/internal/operators/timeout.ts | 92 + .../src/internal/operators/timeoutWith.ts | 144 + .../rxjs/src/internal/operators/timestamp.ts | 48 + .../rxjs/src/internal/operators/toArray.ts | 45 + .../rxjs/src/internal/operators/window.ts | 130 + .../src/internal/operators/windowCount.ts | 149 + .../rxjs/src/internal/operators/windowTime.ts | 282 + .../src/internal/operators/windowToggle.ts | 211 + .../rxjs/src/internal/operators/windowWhen.ts | 147 + .../src/internal/operators/withLatestFrom.ts | 156 + .../rxjs/src/internal/operators/zip.ts | 43 + .../rxjs/src/internal/operators/zipAll.ts | 12 + .../src/internal/scheduled/scheduleArray.ts | 21 + .../internal/scheduled/scheduleIterable.ts | 45 + .../internal/scheduled/scheduleObservable.ts | 19 + .../src/internal/scheduled/schedulePromise.ts | 21 + .../rxjs/src/internal/scheduled/scheduled.ts | 36 + .../rxjs/src/internal/scheduler/Action.ts | 36 + .../scheduler/AnimationFrameAction.ts | 47 + .../scheduler/AnimationFrameScheduler.ts | 31 + .../rxjs/src/internal/scheduler/AsapAction.ts | 48 + .../src/internal/scheduler/AsapScheduler.ts | 31 + .../src/internal/scheduler/AsyncAction.ts | 156 + .../src/internal/scheduler/AsyncScheduler.ts | 72 + .../src/internal/scheduler/QueueAction.ts | 44 + .../src/internal/scheduler/QueueScheduler.ts | 4 + .../scheduler/VirtualTimeScheduler.ts | 108 + .../src/internal/scheduler/animationFrame.ts | 40 + .../rxjs/src/internal/scheduler/asap.ts | 42 + .../rxjs/src/internal/scheduler/async.ts | 55 + .../rxjs/src/internal/scheduler/queue.ts | 71 + .../rxjs/src/internal/symbol/iterator.ts | 14 + .../rxjs/src/internal/symbol/observable.ts | 11 + .../rxjs/src/internal/symbol/rxSubscriber.ts | 10 + .../src/internal/testing/ColdObservable.ts | 48 + .../src/internal/testing/HotObservable.ts | 55 + .../src/internal/testing/SubscriptionLog.ts | 5 + .../internal/testing/SubscriptionLoggable.ts | 21 + .../rxjs/src/internal/testing/TestMessage.ts | 7 + .../src/internal/testing/TestScheduler.ts | 401 + .../node_modules/rxjs/src/internal/types.ts | 103 + .../node_modules/rxjs/src/internal/umd.ts | 26 + .../internal/util/ArgumentOutOfRangeError.ts | 31 + .../rxjs/src/internal/util/EmptyError.ts | 31 + .../rxjs/src/internal/util/Immediate.ts | 41 + .../internal/util/ObjectUnsubscribedError.ts | 30 + .../rxjs/src/internal/util/TimeoutError.ts | 28 + .../src/internal/util/UnsubscriptionError.ts | 29 + .../rxjs/src/internal/util/applyMixins.ts | 10 + .../rxjs/src/internal/util/canReportError.ts | 22 + .../rxjs/src/internal/util/errorObject.ts | 2 + .../rxjs/src/internal/util/hostReportError.ts | 8 + .../rxjs/src/internal/util/identity.ts | 3 + .../rxjs/src/internal/util/isArray.ts | 1 + .../rxjs/src/internal/util/isArrayLike.ts | 1 + .../rxjs/src/internal/util/isDate.ts | 3 + .../rxjs/src/internal/util/isFunction.ts | 3 + .../src/internal/util/isInteropObservable.ts | 7 + .../rxjs/src/internal/util/isIterable.ts | 6 + .../rxjs/src/internal/util/isNumeric.ts | 9 + .../rxjs/src/internal/util/isObject.ts | 3 + .../rxjs/src/internal/util/isObservable.ts | 10 + .../rxjs/src/internal/util/isPromise.ts | 8 + .../rxjs/src/internal/util/isScheduler.ts | 5 + .../rxjs/src/internal/util/noop.ts | 2 + .../rxjs/src/internal/util/not.ts | 8 + .../rxjs/src/internal/util/pipe.ts | 36 + .../rxjs/src/internal/util/root.ts | 31 + .../rxjs/src/internal/util/subscribeTo.ts | 29 + .../src/internal/util/subscribeToArray.ts | 12 + .../src/internal/util/subscribeToIterable.ts | 28 + .../internal/util/subscribeToObservable.ts | 17 + .../src/internal/util/subscribeToPromise.ts | 16 + .../src/internal/util/subscribeToResult.ts | 37 + .../rxjs/src/internal/util/toSubscriber.ts | 26 + .../rxjs/src/internal/util/tryCatch.ts | 20 + .../src/observable/ArrayLikeObservable.ts | 1 + .../rxjs/src/observable/ArrayObservable.ts | 1 + .../src/observable/BoundCallbackObservable.ts | 1 + .../observable/BoundNodeCallbackObservable.ts | 1 + .../src/observable/ConnectableObservable.ts | 1 + .../rxjs/src/observable/DeferObservable.ts | 1 + .../rxjs/src/observable/EmptyObservable.ts | 1 + .../rxjs/src/observable/ErrorObservable.ts | 1 + .../rxjs/src/observable/ForkJoinObservable.ts | 1 + .../src/observable/FromEventObservable.ts | 1 + .../observable/FromEventPatternObservable.ts | 1 + .../rxjs/src/observable/FromObservable.ts | 1 + .../rxjs/src/observable/GenerateObservable.ts | 1 + .../rxjs/src/observable/IfObservable.ts | 1 + .../rxjs/src/observable/IntervalObservable.ts | 1 + .../rxjs/src/observable/IteratorObservable.ts | 1 + .../rxjs/src/observable/NeverObservable.ts | 1 + .../rxjs/src/observable/PairsObservable.ts | 1 + .../rxjs/src/observable/PromiseObservable.ts | 1 + .../rxjs/src/observable/RangeObservable.ts | 1 + .../rxjs/src/observable/ScalarObservable.ts | 1 + .../src/observable/SubscribeOnObservable.ts | 1 + .../rxjs/src/observable/TimerObservable.ts | 1 + .../rxjs/src/observable/UsingObservable.ts | 1 + .../rxjs/src/observable/bindCallback.ts | 1 + .../rxjs/src/observable/bindNodeCallback.ts | 1 + .../rxjs/src/observable/combineLatest.ts | 1 + .../rxjs/src/observable/concat.ts | 1 + .../node_modules/rxjs/src/observable/defer.ts | 1 + .../rxjs/src/observable/dom/AjaxObservable.ts | 1 + .../src/observable/dom/WebSocketSubject.ts | 1 + .../rxjs/src/observable/dom/ajax.ts | 1 + .../rxjs/src/observable/dom/webSocket.ts | 1 + .../node_modules/rxjs/src/observable/empty.ts | 1 + .../rxjs/src/observable/forkJoin.ts | 1 + .../node_modules/rxjs/src/observable/from.ts | 1 + .../rxjs/src/observable/fromArray.ts | 1 + .../rxjs/src/observable/fromEvent.ts | 1 + .../rxjs/src/observable/fromEventPattern.ts | 1 + .../rxjs/src/observable/fromIterable.ts | 1 + .../rxjs/src/observable/fromPromise.ts | 1 + .../rxjs/src/observable/generate.ts | 1 + .../node_modules/rxjs/src/observable/if.ts | 1 + .../rxjs/src/observable/interval.ts | 1 + .../node_modules/rxjs/src/observable/merge.ts | 1 + .../node_modules/rxjs/src/observable/never.ts | 1 + .../node_modules/rxjs/src/observable/of.ts | 1 + .../rxjs/src/observable/onErrorResumeNext.ts | 1 + .../node_modules/rxjs/src/observable/pairs.ts | 1 + .../node_modules/rxjs/src/observable/race.ts | 1 + .../node_modules/rxjs/src/observable/range.ts | 1 + .../node_modules/rxjs/src/observable/throw.ts | 1 + .../node_modules/rxjs/src/observable/timer.ts | 1 + .../node_modules/rxjs/src/observable/using.ts | 1 + .../node_modules/rxjs/src/observable/zip.ts | 1 + .../node_modules/rxjs/src/operator/audit.ts | 1 + .../rxjs/src/operator/auditTime.ts | 1 + .../node_modules/rxjs/src/operator/buffer.ts | 1 + .../rxjs/src/operator/bufferCount.ts | 1 + .../rxjs/src/operator/bufferTime.ts | 1 + .../rxjs/src/operator/bufferToggle.ts | 1 + .../rxjs/src/operator/bufferWhen.ts | 1 + .../node_modules/rxjs/src/operator/catch.ts | 1 + .../rxjs/src/operator/combineAll.ts | 1 + .../rxjs/src/operator/combineLatest.ts | 1 + .../node_modules/rxjs/src/operator/concat.ts | 1 + .../rxjs/src/operator/concatAll.ts | 1 + .../rxjs/src/operator/concatMap.ts | 1 + .../rxjs/src/operator/concatMapTo.ts | 1 + .../node_modules/rxjs/src/operator/count.ts | 1 + .../rxjs/src/operator/debounce.ts | 1 + .../rxjs/src/operator/debounceTime.ts | 1 + .../rxjs/src/operator/defaultIfEmpty.ts | 1 + .../node_modules/rxjs/src/operator/delay.ts | 1 + .../rxjs/src/operator/delayWhen.ts | 1 + .../rxjs/src/operator/dematerialize.ts | 1 + .../rxjs/src/operator/distinct.ts | 1 + .../rxjs/src/operator/distinctUntilChanged.ts | 1 + .../src/operator/distinctUntilKeyChanged.ts | 1 + .../node_modules/rxjs/src/operator/do.ts | 1 + .../rxjs/src/operator/elementAt.ts | 1 + .../node_modules/rxjs/src/operator/every.ts | 1 + .../node_modules/rxjs/src/operator/exhaust.ts | 1 + .../rxjs/src/operator/exhaustMap.ts | 1 + .../node_modules/rxjs/src/operator/expand.ts | 1 + .../node_modules/rxjs/src/operator/filter.ts | 1 + .../node_modules/rxjs/src/operator/finally.ts | 1 + .../node_modules/rxjs/src/operator/find.ts | 1 + .../rxjs/src/operator/findIndex.ts | 1 + .../node_modules/rxjs/src/operator/first.ts | 1 + .../node_modules/rxjs/src/operator/groupBy.ts | 1 + .../rxjs/src/operator/ignoreElements.ts | 1 + .../node_modules/rxjs/src/operator/isEmpty.ts | 1 + .../node_modules/rxjs/src/operator/last.ts | 1 + .../node_modules/rxjs/src/operator/let.ts | 1 + .../node_modules/rxjs/src/operator/map.ts | 1 + .../node_modules/rxjs/src/operator/mapTo.ts | 1 + .../rxjs/src/operator/materialize.ts | 1 + .../node_modules/rxjs/src/operator/max.ts | 1 + .../node_modules/rxjs/src/operator/merge.ts | 1 + .../rxjs/src/operator/mergeAll.ts | 1 + .../rxjs/src/operator/mergeMap.ts | 1 + .../rxjs/src/operator/mergeMapTo.ts | 1 + .../rxjs/src/operator/mergeScan.ts | 1 + .../node_modules/rxjs/src/operator/min.ts | 1 + .../rxjs/src/operator/multicast.ts | 1 + .../rxjs/src/operator/observeOn.ts | 1 + .../rxjs/src/operator/onErrorResumeNext.ts | 1 + .../rxjs/src/operator/pairwise.ts | 1 + .../rxjs/src/operator/partition.ts | 1 + .../node_modules/rxjs/src/operator/pluck.ts | 1 + .../node_modules/rxjs/src/operator/publish.ts | 1 + .../rxjs/src/operator/publishBehavior.ts | 1 + .../rxjs/src/operator/publishLast.ts | 1 + .../rxjs/src/operator/publishReplay.ts | 1 + .../node_modules/rxjs/src/operator/race.ts | 1 + .../node_modules/rxjs/src/operator/reduce.ts | 1 + .../node_modules/rxjs/src/operator/repeat.ts | 1 + .../rxjs/src/operator/repeatWhen.ts | 1 + .../node_modules/rxjs/src/operator/retry.ts | 1 + .../rxjs/src/operator/retryWhen.ts | 1 + .../node_modules/rxjs/src/operator/sample.ts | 1 + .../rxjs/src/operator/sampleTime.ts | 1 + .../node_modules/rxjs/src/operator/scan.ts | 1 + .../rxjs/src/operator/sequenceEqual.ts | 1 + .../node_modules/rxjs/src/operator/share.ts | 1 + .../rxjs/src/operator/shareReplay.ts | 1 + .../node_modules/rxjs/src/operator/single.ts | 1 + .../node_modules/rxjs/src/operator/skip.ts | 1 + .../rxjs/src/operator/skipLast.ts | 1 + .../rxjs/src/operator/skipUntil.ts | 1 + .../rxjs/src/operator/skipWhile.ts | 1 + .../rxjs/src/operator/startWith.ts | 1 + .../rxjs/src/operator/subscribeOn.ts | 1 + .../node_modules/rxjs/src/operator/switch.ts | 1 + .../rxjs/src/operator/switchMap.ts | 1 + .../rxjs/src/operator/switchMapTo.ts | 1 + .../node_modules/rxjs/src/operator/take.ts | 1 + .../rxjs/src/operator/takeLast.ts | 1 + .../rxjs/src/operator/takeUntil.ts | 1 + .../rxjs/src/operator/takeWhile.ts | 1 + .../rxjs/src/operator/throttle.ts | 1 + .../rxjs/src/operator/throttleTime.ts | 1 + .../rxjs/src/operator/timeInterval.ts | 1 + .../node_modules/rxjs/src/operator/timeout.ts | 1 + .../rxjs/src/operator/timeoutWith.ts | 1 + .../rxjs/src/operator/timestamp.ts | 1 + .../node_modules/rxjs/src/operator/toArray.ts | 1 + .../rxjs/src/operator/toPromise.ts | 1 + .../node_modules/rxjs/src/operator/window.ts | 1 + .../rxjs/src/operator/windowCount.ts | 1 + .../rxjs/src/operator/windowTime.ts | 1 + .../rxjs/src/operator/windowToggle.ts | 1 + .../rxjs/src/operator/windowWhen.ts | 1 + .../rxjs/src/operator/withLatestFrom.ts | 1 + .../node_modules/rxjs/src/operator/zip.ts | 1 + .../node_modules/rxjs/src/operator/zipAll.ts | 1 + .../node_modules/rxjs/src/operators/audit.ts | 1 + .../rxjs/src/operators/auditTime.ts | 1 + .../node_modules/rxjs/src/operators/buffer.ts | 1 + .../rxjs/src/operators/bufferCount.ts | 1 + .../rxjs/src/operators/bufferTime.ts | 1 + .../rxjs/src/operators/bufferToggle.ts | 1 + .../rxjs/src/operators/bufferWhen.ts | 1 + .../rxjs/src/operators/catchError.ts | 1 + .../rxjs/src/operators/combineAll.ts | 1 + .../rxjs/src/operators/combineLatest.ts | 1 + .../node_modules/rxjs/src/operators/concat.ts | 1 + .../rxjs/src/operators/concatAll.ts | 1 + .../rxjs/src/operators/concatMap.ts | 1 + .../rxjs/src/operators/concatMapTo.ts | 1 + .../node_modules/rxjs/src/operators/count.ts | 1 + .../rxjs/src/operators/debounce.ts | 1 + .../rxjs/src/operators/debounceTime.ts | 1 + .../rxjs/src/operators/defaultIfEmpty.ts | 1 + .../node_modules/rxjs/src/operators/delay.ts | 1 + .../rxjs/src/operators/delayWhen.ts | 1 + .../rxjs/src/operators/dematerialize.ts | 1 + .../rxjs/src/operators/distinct.ts | 1 + .../src/operators/distinctUntilChanged.ts | 1 + .../src/operators/distinctUntilKeyChanged.ts | 1 + .../rxjs/src/operators/elementAt.ts | 1 + .../node_modules/rxjs/src/operators/every.ts | 1 + .../rxjs/src/operators/exhaust.ts | 1 + .../rxjs/src/operators/exhaustMap.ts | 1 + .../node_modules/rxjs/src/operators/expand.ts | 1 + .../node_modules/rxjs/src/operators/filter.ts | 1 + .../rxjs/src/operators/finalize.ts | 1 + .../node_modules/rxjs/src/operators/find.ts | 1 + .../rxjs/src/operators/findIndex.ts | 1 + .../node_modules/rxjs/src/operators/first.ts | 1 + .../rxjs/src/operators/groupBy.ts | 1 + .../rxjs/src/operators/ignoreElements.ts | 1 + .../node_modules/rxjs/src/operators/index.ts | 106 + .../rxjs/src/operators/isEmpty.ts | 1 + .../node_modules/rxjs/src/operators/last.ts | 1 + .../node_modules/rxjs/src/operators/map.ts | 1 + .../node_modules/rxjs/src/operators/mapTo.ts | 1 + .../rxjs/src/operators/materialize.ts | 1 + .../node_modules/rxjs/src/operators/max.ts | 1 + .../node_modules/rxjs/src/operators/merge.ts | 1 + .../rxjs/src/operators/mergeAll.ts | 1 + .../rxjs/src/operators/mergeMap.ts | 1 + .../rxjs/src/operators/mergeMapTo.ts | 1 + .../rxjs/src/operators/mergeScan.ts | 1 + .../node_modules/rxjs/src/operators/min.ts | 1 + .../rxjs/src/operators/multicast.ts | 1 + .../rxjs/src/operators/observeOn.ts | 1 + .../rxjs/src/operators/onErrorResumeNext.ts | 1 + .../rxjs/src/operators/package.json | 8 + .../rxjs/src/operators/pairwise.ts | 1 + .../rxjs/src/operators/partition.ts | 1 + .../node_modules/rxjs/src/operators/pluck.ts | 1 + .../rxjs/src/operators/publish.ts | 1 + .../rxjs/src/operators/publishBehavior.ts | 1 + .../rxjs/src/operators/publishLast.ts | 1 + .../rxjs/src/operators/publishReplay.ts | 1 + .../node_modules/rxjs/src/operators/race.ts | 1 + .../node_modules/rxjs/src/operators/reduce.ts | 1 + .../rxjs/src/operators/refCount.ts | 1 + .../node_modules/rxjs/src/operators/repeat.ts | 1 + .../rxjs/src/operators/repeatWhen.ts | 1 + .../node_modules/rxjs/src/operators/retry.ts | 1 + .../rxjs/src/operators/retryWhen.ts | 1 + .../node_modules/rxjs/src/operators/sample.ts | 1 + .../rxjs/src/operators/sampleTime.ts | 1 + .../node_modules/rxjs/src/operators/scan.ts | 1 + .../rxjs/src/operators/sequenceEqual.ts | 1 + .../node_modules/rxjs/src/operators/share.ts | 1 + .../rxjs/src/operators/shareReplay.ts | 1 + .../node_modules/rxjs/src/operators/single.ts | 1 + .../node_modules/rxjs/src/operators/skip.ts | 1 + .../rxjs/src/operators/skipLast.ts | 1 + .../rxjs/src/operators/skipUntil.ts | 1 + .../rxjs/src/operators/skipWhile.ts | 1 + .../rxjs/src/operators/startWith.ts | 1 + .../rxjs/src/operators/subscribeOn.ts | 1 + .../rxjs/src/operators/switchAll.ts | 1 + .../rxjs/src/operators/switchMap.ts | 1 + .../rxjs/src/operators/switchMapTo.ts | 1 + .../node_modules/rxjs/src/operators/take.ts | 1 + .../rxjs/src/operators/takeLast.ts | 1 + .../rxjs/src/operators/takeUntil.ts | 1 + .../rxjs/src/operators/takeWhile.ts | 1 + .../node_modules/rxjs/src/operators/tap.ts | 1 + .../rxjs/src/operators/throttle.ts | 1 + .../rxjs/src/operators/throttleTime.ts | 1 + .../rxjs/src/operators/throwIfEmpty.ts | 1 + .../rxjs/src/operators/timeInterval.ts | 1 + .../rxjs/src/operators/timeout.ts | 1 + .../rxjs/src/operators/timeoutWith.ts | 1 + .../rxjs/src/operators/timestamp.ts | 1 + .../rxjs/src/operators/toArray.ts | 1 + .../node_modules/rxjs/src/operators/window.ts | 1 + .../rxjs/src/operators/windowCount.ts | 1 + .../rxjs/src/operators/windowTime.ts | 1 + .../rxjs/src/operators/windowToggle.ts | 1 + .../rxjs/src/operators/windowWhen.ts | 1 + .../rxjs/src/operators/withLatestFrom.ts | 1 + .../node_modules/rxjs/src/operators/zip.ts | 1 + .../node_modules/rxjs/src/operators/zipAll.ts | 1 + .../rxjs/src/scheduler/animationFrame.ts | 1 + .../node_modules/rxjs/src/scheduler/asap.ts | 1 + .../node_modules/rxjs/src/scheduler/async.ts | 1 + .../node_modules/rxjs/src/scheduler/queue.ts | 1 + .../node_modules/rxjs/src/symbol/iterator.ts | 1 + .../rxjs/src/symbol/observable.ts | 1 + .../rxjs/src/symbol/rxSubscriber.ts | 1 + .../node_modules/rxjs/src/testing/index.ts | 1 + .../rxjs/src/testing/package.json | 8 + .../node_modules/rxjs/src/tsconfig.json | 32 + .../rxjs/src/util/ArgumentOutOfRangeError.ts | 1 + .../node_modules/rxjs/src/util/EmptyError.ts | 1 + .../node_modules/rxjs/src/util/Immediate.ts | 1 + .../rxjs/src/util/ObjectUnsubscribedError.ts | 1 + .../rxjs/src/util/TimeoutError.ts | 1 + .../rxjs/src/util/UnsubscriptionError.ts | 1 + .../node_modules/rxjs/src/util/applyMixins.ts | 1 + .../node_modules/rxjs/src/util/errorObject.ts | 1 + .../rxjs/src/util/hostReportError.ts | 1 + .../node_modules/rxjs/src/util/identity.ts | 1 + .../node_modules/rxjs/src/util/isArray.ts | 1 + .../node_modules/rxjs/src/util/isArrayLike.ts | 1 + .../node_modules/rxjs/src/util/isDate.ts | 1 + .../node_modules/rxjs/src/util/isFunction.ts | 1 + .../node_modules/rxjs/src/util/isIterable.ts | 1 + .../node_modules/rxjs/src/util/isNumeric.ts | 1 + .../node_modules/rxjs/src/util/isObject.ts | 1 + .../rxjs/src/util/isObservable.ts | 1 + .../node_modules/rxjs/src/util/isPromise.ts | 1 + .../node_modules/rxjs/src/util/isScheduler.ts | 1 + .../node_modules/rxjs/src/util/noop.ts | 1 + .../node_modules/rxjs/src/util/not.ts | 1 + .../node_modules/rxjs/src/util/pipe.ts | 1 + .../node_modules/rxjs/src/util/root.ts | 1 + .../node_modules/rxjs/src/util/subscribeTo.ts | 1 + .../rxjs/src/util/subscribeToArray.ts | 1 + .../rxjs/src/util/subscribeToIterable.ts | 1 + .../rxjs/src/util/subscribeToObservable.ts | 1 + .../rxjs/src/util/subscribeToPromise.ts | 1 + .../rxjs/src/util/subscribeToResult.ts | 1 + .../rxjs/src/util/toSubscriber.ts | 1 + .../node_modules/rxjs/src/util/tryCatch.ts | 1 + .../node_modules/rxjs/src/webSocket/index.ts | 2 + .../rxjs/src/webSocket/package.json | 8 + .../node_modules/rxjs/symbol/iterator.d.ts | 1 + .../node_modules/rxjs/symbol/iterator.js | 7 + .../node_modules/rxjs/symbol/iterator.js.map | 1 + .../node_modules/rxjs/symbol/observable.d.ts | 1 + .../node_modules/rxjs/symbol/observable.js | 7 + .../rxjs/symbol/observable.js.map | 1 + .../rxjs/symbol/rxSubscriber.d.ts | 1 + .../node_modules/rxjs/symbol/rxSubscriber.js | 7 + .../rxjs/symbol/rxSubscriber.js.map | 1 + .../node_modules/rxjs/testing/index.d.ts | 1 + .../node_modules/rxjs/testing/index.js | 5 + .../node_modules/rxjs/testing/index.js.map | 1 + .../node_modules/rxjs/testing/package.json | 8 + .../rxjs/util/ArgumentOutOfRangeError.d.ts | 1 + .../rxjs/util/ArgumentOutOfRangeError.js | 7 + .../rxjs/util/ArgumentOutOfRangeError.js.map | 1 + .../node_modules/rxjs/util/EmptyError.d.ts | 1 + .../node_modules/rxjs/util/EmptyError.js | 7 + .../node_modules/rxjs/util/EmptyError.js.map | 1 + .../node_modules/rxjs/util/Immediate.d.ts | 1 + .../node_modules/rxjs/util/Immediate.js | 7 + .../node_modules/rxjs/util/Immediate.js.map | 1 + .../rxjs/util/ObjectUnsubscribedError.d.ts | 1 + .../rxjs/util/ObjectUnsubscribedError.js | 7 + .../rxjs/util/ObjectUnsubscribedError.js.map | 1 + .../node_modules/rxjs/util/TimeoutError.d.ts | 1 + .../node_modules/rxjs/util/TimeoutError.js | 7 + .../rxjs/util/TimeoutError.js.map | 1 + .../rxjs/util/UnsubscriptionError.d.ts | 1 + .../rxjs/util/UnsubscriptionError.js | 7 + .../rxjs/util/UnsubscriptionError.js.map | 1 + .../node_modules/rxjs/util/applyMixins.d.ts | 1 + .../node_modules/rxjs/util/applyMixins.js | 7 + .../node_modules/rxjs/util/applyMixins.js.map | 1 + .../node_modules/rxjs/util/errorObject.d.ts | 1 + .../node_modules/rxjs/util/errorObject.js | 7 + .../node_modules/rxjs/util/errorObject.js.map | 1 + .../rxjs/util/hostReportError.d.ts | 1 + .../node_modules/rxjs/util/hostReportError.js | 7 + .../rxjs/util/hostReportError.js.map | 1 + .../node_modules/rxjs/util/identity.d.ts | 1 + .../node_modules/rxjs/util/identity.js | 7 + .../node_modules/rxjs/util/identity.js.map | 1 + .../node_modules/rxjs/util/isArray.d.ts | 1 + .../node_modules/rxjs/util/isArray.js | 7 + .../node_modules/rxjs/util/isArray.js.map | 1 + .../node_modules/rxjs/util/isArrayLike.d.ts | 1 + .../node_modules/rxjs/util/isArrayLike.js | 7 + .../node_modules/rxjs/util/isArrayLike.js.map | 1 + .../node_modules/rxjs/util/isDate.d.ts | 1 + .../node_modules/rxjs/util/isDate.js | 7 + .../node_modules/rxjs/util/isDate.js.map | 1 + .../node_modules/rxjs/util/isFunction.d.ts | 1 + .../node_modules/rxjs/util/isFunction.js | 7 + .../node_modules/rxjs/util/isFunction.js.map | 1 + .../node_modules/rxjs/util/isIterable.d.ts | 1 + .../node_modules/rxjs/util/isIterable.js | 7 + .../node_modules/rxjs/util/isIterable.js.map | 1 + .../node_modules/rxjs/util/isNumeric.d.ts | 1 + .../node_modules/rxjs/util/isNumeric.js | 7 + .../node_modules/rxjs/util/isNumeric.js.map | 1 + .../node_modules/rxjs/util/isObject.d.ts | 1 + .../node_modules/rxjs/util/isObject.js | 7 + .../node_modules/rxjs/util/isObject.js.map | 1 + .../node_modules/rxjs/util/isObservable.d.ts | 1 + .../node_modules/rxjs/util/isObservable.js | 7 + .../rxjs/util/isObservable.js.map | 1 + .../node_modules/rxjs/util/isPromise.d.ts | 1 + .../node_modules/rxjs/util/isPromise.js | 7 + .../node_modules/rxjs/util/isPromise.js.map | 1 + .../node_modules/rxjs/util/isScheduler.d.ts | 1 + .../node_modules/rxjs/util/isScheduler.js | 7 + .../node_modules/rxjs/util/isScheduler.js.map | 1 + .../node_modules/rxjs/util/noop.d.ts | 1 + .../node_modules/rxjs/util/noop.js | 7 + .../node_modules/rxjs/util/noop.js.map | 1 + .../node_modules/rxjs/util/not.d.ts | 1 + tic-tac-toe-app/node_modules/rxjs/util/not.js | 7 + .../node_modules/rxjs/util/not.js.map | 1 + .../node_modules/rxjs/util/pipe.d.ts | 1 + .../node_modules/rxjs/util/pipe.js | 7 + .../node_modules/rxjs/util/pipe.js.map | 1 + .../node_modules/rxjs/util/root.d.ts | 1 + .../node_modules/rxjs/util/root.js | 7 + .../node_modules/rxjs/util/root.js.map | 1 + .../node_modules/rxjs/util/subscribeTo.d.ts | 1 + .../node_modules/rxjs/util/subscribeTo.js | 7 + .../node_modules/rxjs/util/subscribeTo.js.map | 1 + .../rxjs/util/subscribeToArray.d.ts | 1 + .../rxjs/util/subscribeToArray.js | 7 + .../rxjs/util/subscribeToArray.js.map | 1 + .../rxjs/util/subscribeToIterable.d.ts | 1 + .../rxjs/util/subscribeToIterable.js | 7 + .../rxjs/util/subscribeToIterable.js.map | 1 + .../rxjs/util/subscribeToObservable.d.ts | 1 + .../rxjs/util/subscribeToObservable.js | 7 + .../rxjs/util/subscribeToObservable.js.map | 1 + .../rxjs/util/subscribeToPromise.d.ts | 1 + .../rxjs/util/subscribeToPromise.js | 7 + .../rxjs/util/subscribeToPromise.js.map | 1 + .../rxjs/util/subscribeToResult.d.ts | 1 + .../rxjs/util/subscribeToResult.js | 7 + .../rxjs/util/subscribeToResult.js.map | 1 + .../node_modules/rxjs/util/toSubscriber.d.ts | 1 + .../node_modules/rxjs/util/toSubscriber.js | 7 + .../rxjs/util/toSubscriber.js.map | 1 + .../node_modules/rxjs/util/tryCatch.d.ts | 1 + .../node_modules/rxjs/util/tryCatch.js | 7 + .../node_modules/rxjs/util/tryCatch.js.map | 1 + .../node_modules/rxjs/webSocket/index.d.ts | 2 + .../node_modules/rxjs/webSocket/index.js | 7 + .../node_modules/rxjs/webSocket/index.js.map | 1 + .../node_modules/rxjs/webSocket/package.json | 8 + .../node_modules/safer-buffer/LICENSE | 21 + .../safer-buffer/Porting-Buffer.md | 268 + .../node_modules/safer-buffer/Readme.md | 156 + .../node_modules/safer-buffer/dangerous.js | 58 + .../node_modules/safer-buffer/package.json | 60 + .../node_modules/safer-buffer/safer.js | 77 + .../node_modules/safer-buffer/tests.js | 406 + .../node_modules/semver/CHANGELOG.md | 70 + tic-tac-toe-app/node_modules/semver/LICENSE | 15 + tic-tac-toe-app/node_modules/semver/README.md | 443 + .../node_modules/semver/bin/semver.js | 174 + .../node_modules/semver/package.json | 61 + tic-tac-toe-app/node_modules/semver/range.bnf | 16 + tic-tac-toe-app/node_modules/semver/semver.js | 1596 ++ .../node_modules/serve-handler/LICENSE | 21 + .../node_modules/serve-handler/README.md | 336 + .../node_modules/mime-db/HISTORY.md | 368 + .../node_modules/mime-db/LICENSE | 22 + .../node_modules/mime-db/README.md | 94 + .../node_modules/mime-db/db.json | 7088 ++++++++ .../node_modules/mime-db/index.js | 11 + .../node_modules/mime-db/package.json | 100 + .../node_modules/mime-types/HISTORY.md | 260 + .../node_modules/mime-types/LICENSE | 23 + .../node_modules/mime-types/README.md | 108 + .../node_modules/mime-types/index.js | 188 + .../node_modules/mime-types/package.json | 86 + .../node_modules/serve-handler/package.json | 109 + .../serve-handler/src/directory.js | 16 + .../node_modules/serve-handler/src/error.js | 10 + .../serve-handler/src/glob-slash.js | 9 + .../node_modules/serve-handler/src/index.js | 758 + tic-tac-toe-app/node_modules/serve/LICENSE | 21 + tic-tac-toe-app/node_modules/serve/README.md | 84 + .../node_modules/serve/bin/serve.js | 449 + .../node_modules/serve/package.json | 83 + .../node_modules/side-channel/.eslintrc | 11 + .../side-channel/.github/FUNDING.yml | 12 + .../side-channel/.github/workflows/rebase.yml | 15 + .../node_modules/side-channel/.travis.yml | 8 + .../node_modules/side-channel/CHANGELOG.md | 36 + .../node_modules/side-channel/LICENSE | 21 + .../node_modules/side-channel/README.md | 2 + .../node_modules/side-channel/index.js | 107 + .../node_modules/side-channel/package.json | 91 + .../node_modules/side-channel/test/index.js | 69 + .../node_modules/signal-exit/CHANGELOG.md | 35 + .../node_modules/signal-exit/LICENSE.txt | 16 + .../node_modules/signal-exit/README.md | 39 + .../node_modules/signal-exit/index.js | 163 + .../node_modules/signal-exit/package.json | 68 + .../node_modules/signal-exit/signals.js | 53 + .../node_modules/slice-ansi/index.js | 59 + .../node_modules/slice-ansi/license | 9 + .../node_modules/slice-ansi/package.json | 83 + .../node_modules/slice-ansi/readme.md | 64 + .../node_modules/spdx-correct/LICENSE | 202 + .../node_modules/spdx-correct/README.md | 14 + .../node_modules/spdx-correct/index.js | 343 + .../node_modules/spdx-correct/package.json | 88 + .../node_modules/spdx-exceptions/README.md | 36 + .../node_modules/spdx-exceptions/index.json | 40 + .../node_modules/spdx-exceptions/package.json | 55 + .../spdx-expression-parse/AUTHORS | 4 + .../spdx-expression-parse/LICENSE | 22 + .../spdx-expression-parse/README.md | 91 + .../spdx-expression-parse/index.js | 8 + .../spdx-expression-parse/package.json | 97 + .../spdx-expression-parse/parse.js | 138 + .../spdx-expression-parse/scan.js | 131 + .../node_modules/spdx-license-ids/README.md | 52 + .../spdx-license-ids/deprecated.json | 24 + .../node_modules/spdx-license-ids/index.json | 370 + .../spdx-license-ids/package.json | 75 + .../node_modules/sprintf-js/.npmignore | 1 + .../node_modules/sprintf-js/LICENSE | 24 + .../node_modules/sprintf-js/README.md | 88 + .../node_modules/sprintf-js/bower.json | 14 + .../node_modules/sprintf-js/demo/angular.html | 20 + .../sprintf-js/dist/angular-sprintf.min.js | 4 + .../dist/angular-sprintf.min.js.map | 1 + .../sprintf-js/dist/angular-sprintf.min.map | 1 + .../sprintf-js/dist/sprintf.min.js | 4 + .../sprintf-js/dist/sprintf.min.js.map | 1 + .../sprintf-js/dist/sprintf.min.map | 1 + .../node_modules/sprintf-js/gruntfile.js | 36 + .../node_modules/sprintf-js/package.json | 54 + .../sprintf-js/src/angular-sprintf.js | 18 + .../node_modules/sprintf-js/src/sprintf.js | 208 + .../node_modules/sprintf-js/test/test.js | 82 + .../node_modules/string-width/index.js | 36 + .../node_modules/string-width/license | 9 + .../node_modules/string-width/package.json | 89 + .../node_modules/string-width/readme.md | 42 + .../string.prototype.matchall/.eslintignore | 1 + .../string.prototype.matchall/.eslintrc | 52 + .../.github/FUNDING.yml | 12 + .../.github/workflows/rebase.yml | 15 + .../string.prototype.matchall/.travis.yml | 12 + .../string.prototype.matchall/CHANGELOG.md | 64 + .../string.prototype.matchall/LICENSE | 22 + .../string.prototype.matchall/README.md | 76 + .../string.prototype.matchall/auto.js | 3 + .../helpers/MatchAllIterator.js | 44 + .../helpers/RegExpStringIterator.js | 110 + .../helpers/hidden.js | 5 + .../implementation.js | 56 + .../string.prototype.matchall/index.js | 18 + .../string.prototype.matchall/package.json | 92 + .../polyfill-regexp-matchall.js | 11 + .../string.prototype.matchall/polyfill.js | 14 + .../regexp-matchall.js | 78 + .../string.prototype.matchall/shim.js | 49 + .../string.prototype.matchall/test/index.js | 13 + .../string.prototype.matchall/test/shimmed.js | 77 + .../string.prototype.matchall/test/tests.js | 247 + .../string.prototype.trimend/.editorconfig | 20 + .../string.prototype.trimend/.eslintrc | 15 + .../.github/workflows/rebase.yml | 15 + .../string.prototype.trimend/.travis.yml | 8 + .../string.prototype.trimend/CHANGELOG.md | 44 + .../string.prototype.trimend/LICENSE | 21 + .../string.prototype.trimend/README.md | 47 + .../string.prototype.trimend/auto.js | 3 + .../implementation.js | 12 + .../string.prototype.trimend/index.js | 18 + .../string.prototype.trimend/package.json | 103 + .../string.prototype.trimend/polyfill.js | 15 + .../string.prototype.trimend/shim.js | 14 + .../string.prototype.trimend/test/index.js | 17 + .../string.prototype.trimend/test/shimmed.js | 37 + .../string.prototype.trimend/test/tests.js | 26 + .../string.prototype.trimleft/.editorconfig | 20 + .../string.prototype.trimleft/.eslintrc | 15 + .../.github/workflows/rebase.yml | 15 + .../string.prototype.trimleft/.travis.yml | 12 + .../string.prototype.trimleft/CHANGELOG.md | 37 + .../string.prototype.trimleft/LICENSE | 22 + .../string.prototype.trimleft/README.md | 47 + .../string.prototype.trimleft/auto.js | 3 + .../implementation.js | 3 + .../string.prototype.trimleft/index.js | 18 + .../string.prototype.trimleft/package.json | 107 + .../string.prototype.trimleft/polyfill.js | 14 + .../string.prototype.trimleft/shim.js | 14 + .../string.prototype.trimleft/test/index.js | 18 + .../string.prototype.trimleft/test/shimmed.js | 37 + .../string.prototype.trimleft/test/tests.js | 26 + .../string.prototype.trimstart/.editorconfig | 20 + .../string.prototype.trimstart/.eslintrc | 15 + .../.github/workflows/rebase.yml | 15 + .../string.prototype.trimstart/.travis.yml | 12 + .../string.prototype.trimstart/CHANGELOG.md | 44 + .../string.prototype.trimstart/LICENSE | 21 + .../string.prototype.trimstart/README.md | 47 + .../string.prototype.trimstart/auto.js | 3 + .../implementation.js | 12 + .../string.prototype.trimstart/index.js | 18 + .../string.prototype.trimstart/package.json | 103 + .../string.prototype.trimstart/polyfill.js | 15 + .../string.prototype.trimstart/shim.js | 14 + .../string.prototype.trimstart/test/index.js | 18 + .../test/shimmed.js | 37 + .../string.prototype.trimstart/test/tests.js | 26 + .../node_modules/strip-bom/index.js | 14 + .../node_modules/strip-bom/license | 21 + .../node_modules/strip-bom/package.json | 72 + .../node_modules/strip-bom/readme.md | 36 + .../node_modules/strip-json-comments/index.js | 70 + .../node_modules/strip-json-comments/license | 21 + .../strip-json-comments/package.json | 74 + .../strip-json-comments/readme.md | 64 + tic-tac-toe-app/node_modules/table/LICENSE | 24 + tic-tac-toe-app/node_modules/table/README.md | 735 + .../node_modules/table/dist/alignString.js | 108 + .../table/dist/alignString.js.flow | 96 + .../table/dist/alignString.js.map | 1 + .../node_modules/table/dist/alignTableData.js | 35 + .../table/dist/alignTableData.js.flow | 21 + .../table/dist/alignTableData.js.map | 1 + .../table/dist/calculateCellHeight.js | 38 + .../table/dist/calculateCellHeight.js.flow | 24 + .../table/dist/calculateCellHeight.js.map | 1 + .../table/dist/calculateCellWidthIndex.js | 28 + .../dist/calculateCellWidthIndex.js.flow | 17 + .../table/dist/calculateCellWidthIndex.js.map | 1 + .../dist/calculateMaximumColumnWidthIndex.js | 37 + .../calculateMaximumColumnWidthIndex.js.flow | 27 + .../calculateMaximumColumnWidthIndex.js.map | 1 + .../table/dist/calculateRowHeightIndex.js | 48 + .../dist/calculateRowHeightIndex.js.flow | 35 + .../table/dist/calculateRowHeightIndex.js.map | 1 + .../node_modules/table/dist/createStream.js | 132 + .../table/dist/createStream.js.flow | 127 + .../table/dist/createStream.js.map | 1 + .../node_modules/table/dist/drawBorder.js | 110 + .../table/dist/drawBorder.js.flow | 101 + .../node_modules/table/dist/drawBorder.js.map | 1 + .../node_modules/table/dist/drawRow.js | 26 + .../node_modules/table/dist/drawRow.js.flow | 15 + .../node_modules/table/dist/drawRow.js.map | 1 + .../node_modules/table/dist/drawTable.js | 59 + .../node_modules/table/dist/drawTable.js.flow | 53 + .../node_modules/table/dist/drawTable.js.map | 1 + .../table/dist/getBorderCharacters.js | 119 + .../table/dist/getBorderCharacters.js.flow | 120 + .../table/dist/getBorderCharacters.js.map | 1 + .../node_modules/table/dist/index.js | 32 + .../node_modules/table/dist/index.js.flow | 9 + .../node_modules/table/dist/index.js.map | 1 + .../node_modules/table/dist/makeConfig.js | 94 + .../table/dist/makeConfig.js.flow | 76 + .../node_modules/table/dist/makeConfig.js.map | 1 + .../table/dist/makeStreamConfig.js | 101 + .../table/dist/makeStreamConfig.js.flow | 83 + .../table/dist/makeStreamConfig.js.map | 1 + .../table/dist/mapDataUsingRowHeightIndex.js | 44 + .../dist/mapDataUsingRowHeightIndex.js.flow | 34 + .../dist/mapDataUsingRowHeightIndex.js.map | 1 + .../node_modules/table/dist/padTableData.js | 24 + .../table/dist/padTableData.js.flow | 14 + .../table/dist/padTableData.js.map | 1 + .../table/dist/schemas/config.json | 114 + .../table/dist/schemas/streamConfig.json | 114 + .../table/dist/stringifyTableData.js | 22 + .../table/dist/stringifyTableData.js.flow | 11 + .../table/dist/stringifyTableData.js.map | 1 + .../node_modules/table/dist/table.js | 110 + .../node_modules/table/dist/table.js.flow | 96 + .../node_modules/table/dist/table.js.map | 1 + .../table/dist/truncateTableData.js | 30 + .../table/dist/truncateTableData.js.flow | 17 + .../table/dist/truncateTableData.js.map | 1 + .../node_modules/table/dist/validateConfig.js | 752 + .../table/dist/validateConfig.js.flow | 34 + .../table/dist/validateConfig.js.map | 1 + .../table/dist/validateStreamConfig.js | 739 + .../table/dist/validateTableData.js | 96 + .../table/dist/validateTableData.js.flow | 44 + .../table/dist/validateTableData.js.map | 1 + .../node_modules/table/dist/wrapCell.js | 48 + .../node_modules/table/dist/wrapCell.js.flow | 35 + .../node_modules/table/dist/wrapCell.js.map | 1 + .../node_modules/table/dist/wrapString.js | 40 + .../table/dist/wrapString.js.flow | 29 + .../node_modules/table/dist/wrapString.js.map | 1 + .../node_modules/table/dist/wrapWord.js | 47 + .../node_modules/table/dist/wrapWord.js.flow | 39 + .../node_modules/table/dist/wrapWord.js.map | 1 + .../table/node_modules/ajv/.tonic_example.js | 20 + .../table/node_modules/ajv/LICENSE | 22 + .../table/node_modules/ajv/README.md | 1452 ++ .../table/node_modules/ajv/dist/ajv.bundle.js | 7165 ++++++++ .../table/node_modules/ajv/dist/ajv.min.js | 3 + .../node_modules/ajv/dist/ajv.min.js.map | 1 + .../table/node_modules/ajv/lib/ajv.d.ts | 395 + .../table/node_modules/ajv/lib/ajv.js | 506 + .../table/node_modules/ajv/lib/cache.js | 26 + .../node_modules/ajv/lib/compile/async.js | 90 + .../node_modules/ajv/lib/compile/equal.js | 5 + .../ajv/lib/compile/error_classes.js | 34 + .../node_modules/ajv/lib/compile/formats.js | 142 + .../node_modules/ajv/lib/compile/index.js | 387 + .../node_modules/ajv/lib/compile/resolve.js | 270 + .../node_modules/ajv/lib/compile/rules.js | 66 + .../ajv/lib/compile/schema_obj.js | 9 + .../ajv/lib/compile/ucs2length.js | 20 + .../node_modules/ajv/lib/compile/util.js | 274 + .../table/node_modules/ajv/lib/data.js | 49 + .../node_modules/ajv/lib/definition_schema.js | 37 + .../table/node_modules/ajv/lib/dot/_limit.jst | 104 + .../node_modules/ajv/lib/dot/_limitItems.jst | 10 + .../node_modules/ajv/lib/dot/_limitLength.jst | 10 + .../ajv/lib/dot/_limitProperties.jst | 10 + .../table/node_modules/ajv/lib/dot/allOf.jst | 34 + .../table/node_modules/ajv/lib/dot/anyOf.jst | 48 + .../table/node_modules/ajv/lib/dot/coerce.def | 61 + .../node_modules/ajv/lib/dot/comment.jst | 9 + .../table/node_modules/ajv/lib/dot/const.jst | 11 + .../node_modules/ajv/lib/dot/contains.jst | 57 + .../table/node_modules/ajv/lib/dot/custom.jst | 191 + .../node_modules/ajv/lib/dot/defaults.def | 47 + .../node_modules/ajv/lib/dot/definitions.def | 201 + .../node_modules/ajv/lib/dot/dependencies.jst | 80 + .../table/node_modules/ajv/lib/dot/enum.jst | 30 + .../table/node_modules/ajv/lib/dot/errors.def | 194 + .../table/node_modules/ajv/lib/dot/format.jst | 106 + .../table/node_modules/ajv/lib/dot/if.jst | 75 + .../table/node_modules/ajv/lib/dot/items.jst | 100 + .../node_modules/ajv/lib/dot/missing.def | 39 + .../node_modules/ajv/lib/dot/multipleOf.jst | 20 + .../table/node_modules/ajv/lib/dot/not.jst | 43 + .../table/node_modules/ajv/lib/dot/oneOf.jst | 54 + .../node_modules/ajv/lib/dot/pattern.jst | 14 + .../node_modules/ajv/lib/dot/properties.jst | 244 + .../ajv/lib/dot/propertyNames.jst | 54 + .../table/node_modules/ajv/lib/dot/ref.jst | 85 + .../node_modules/ajv/lib/dot/required.jst | 108 + .../node_modules/ajv/lib/dot/uniqueItems.jst | 62 + .../node_modules/ajv/lib/dot/validate.jst | 282 + .../node_modules/ajv/lib/dotjs/README.md | 3 + .../node_modules/ajv/lib/dotjs/_limit.js | 157 + .../node_modules/ajv/lib/dotjs/_limitItems.js | 77 + .../ajv/lib/dotjs/_limitLength.js | 82 + .../ajv/lib/dotjs/_limitProperties.js | 77 + .../table/node_modules/ajv/lib/dotjs/allOf.js | 43 + .../table/node_modules/ajv/lib/dotjs/anyOf.js | 74 + .../node_modules/ajv/lib/dotjs/comment.js | 14 + .../table/node_modules/ajv/lib/dotjs/const.js | 56 + .../node_modules/ajv/lib/dotjs/contains.js | 82 + .../node_modules/ajv/lib/dotjs/custom.js | 228 + .../ajv/lib/dotjs/dependencies.js | 168 + .../table/node_modules/ajv/lib/dotjs/enum.js | 66 + .../node_modules/ajv/lib/dotjs/format.js | 150 + .../table/node_modules/ajv/lib/dotjs/if.js | 104 + .../table/node_modules/ajv/lib/dotjs/index.js | 33 + .../table/node_modules/ajv/lib/dotjs/items.js | 141 + .../node_modules/ajv/lib/dotjs/multipleOf.js | 77 + .../table/node_modules/ajv/lib/dotjs/not.js | 84 + .../table/node_modules/ajv/lib/dotjs/oneOf.js | 73 + .../node_modules/ajv/lib/dotjs/pattern.js | 75 + .../node_modules/ajv/lib/dotjs/properties.js | 330 + .../ajv/lib/dotjs/propertyNames.js | 82 + .../table/node_modules/ajv/lib/dotjs/ref.js | 124 + .../node_modules/ajv/lib/dotjs/required.js | 270 + .../node_modules/ajv/lib/dotjs/uniqueItems.js | 86 + .../node_modules/ajv/lib/dotjs/validate.js | 494 + .../table/node_modules/ajv/lib/keyword.js | 146 + .../table/node_modules/ajv/lib/refs/data.json | 17 + .../ajv/lib/refs/json-schema-draft-04.json | 149 + .../ajv/lib/refs/json-schema-draft-06.json | 154 + .../ajv/lib/refs/json-schema-draft-07.json | 168 + .../ajv/lib/refs/json-schema-secure.json | 94 + .../table/node_modules/ajv/package.json | 129 + .../node_modules/ajv/scripts/.eslintrc.yml | 3 + .../table/node_modules/ajv/scripts/bundle.js | 61 + .../node_modules/ajv/scripts/compile-dots.js | 73 + .../table/node_modules/ajv/scripts/info | 10 + .../node_modules/ajv/scripts/prepare-tests | 12 + .../ajv/scripts/publish-built-version | 32 + .../node_modules/ajv/scripts/travis-gh-pages | 23 + .../table/node_modules/ansi-regex/index.js | 14 + .../table/node_modules/ansi-regex/license | 9 + .../node_modules/ansi-regex/package.json | 85 + .../table/node_modules/ansi-regex/readme.md | 87 + .../node_modules/emoji-regex/LICENSE-MIT.txt | 20 + .../table/node_modules/emoji-regex/README.md | 73 + .../node_modules/emoji-regex/es2015/index.js | 6 + .../node_modules/emoji-regex/es2015/text.js | 6 + .../table/node_modules/emoji-regex/index.d.ts | 5 + .../table/node_modules/emoji-regex/index.js | 6 + .../node_modules/emoji-regex/package.json | 78 + .../table/node_modules/emoji-regex/text.js | 6 + .../node_modules/fast-deep-equal/LICENSE | 21 + .../node_modules/fast-deep-equal/README.md | 96 + .../fast-deep-equal/es6/index.d.ts | 2 + .../node_modules/fast-deep-equal/es6/index.js | 72 + .../fast-deep-equal/es6/react.d.ts | 2 + .../node_modules/fast-deep-equal/es6/react.js | 79 + .../node_modules/fast-deep-equal/index.d.ts | 4 + .../node_modules/fast-deep-equal/index.js | 46 + .../node_modules/fast-deep-equal/package.json | 88 + .../node_modules/fast-deep-equal/react.d.ts | 2 + .../node_modules/fast-deep-equal/react.js | 53 + .../table/node_modules/string-width/index.js | 39 + .../table/node_modules/string-width/license | 9 + .../node_modules/string-width/package.json | 88 + .../table/node_modules/string-width/readme.md | 45 + .../table/node_modules/strip-ansi/index.d.ts | 15 + .../table/node_modules/strip-ansi/index.js | 7 + .../table/node_modules/strip-ansi/license | 9 + .../node_modules/strip-ansi/package.json | 86 + .../table/node_modules/strip-ansi/readme.md | 61 + .../node_modules/table/package.json | 118 + .../node_modules/term-size/index.js | 70 + .../node_modules/term-size/license | 21 + .../node_modules/term-size/package.json | 75 + .../node_modules/term-size/readme.md | 41 + .../term-size/vendor/macos/term-size | Bin 0 -> 8760 bytes .../term-size/vendor/windows/term-size.exe | Bin 0 -> 17408 bytes .../node_modules/text-table/.travis.yml | 4 + .../node_modules/text-table/LICENSE | 18 + .../node_modules/text-table/example/align.js | 8 + .../node_modules/text-table/example/center.js | 8 + .../text-table/example/dotalign.js | 9 + .../text-table/example/doubledot.js | 11 + .../node_modules/text-table/example/table.js | 6 + .../node_modules/text-table/index.js | 86 + .../node_modules/text-table/package.json | 73 + .../node_modules/text-table/readme.markdown | 134 + .../node_modules/text-table/test/align.js | 18 + .../text-table/test/ansi-colors.js | 32 + .../node_modules/text-table/test/center.js | 18 + .../node_modules/text-table/test/dotalign.js | 20 + .../node_modules/text-table/test/doubledot.js | 24 + .../node_modules/text-table/test/table.js | 14 + .../node_modules/through/.travis.yml | 5 + .../node_modules/through/LICENSE.APACHE2 | 15 + .../node_modules/through/LICENSE.MIT | 24 + tic-tac-toe-app/node_modules/through/index.js | 108 + .../node_modules/through/package.json | 68 + .../node_modules/through/readme.markdown | 64 + .../node_modules/through/test/async.js | 28 + .../node_modules/through/test/auto-destroy.js | 30 + .../node_modules/through/test/buffering.js | 71 + .../node_modules/through/test/end.js | 45 + .../node_modules/through/test/index.js | 133 + tic-tac-toe-app/node_modules/tmp/LICENSE | 21 + tic-tac-toe-app/node_modules/tmp/README.md | 314 + tic-tac-toe-app/node_modules/tmp/lib/tmp.js | 611 + tic-tac-toe-app/node_modules/tmp/package.json | 70 + .../node_modules/type-check/LICENSE | 22 + .../node_modules/type-check/README.md | 210 + .../node_modules/type-check/lib/check.js | 126 + .../node_modules/type-check/lib/index.js | 16 + .../node_modules/type-check/lib/parse-type.js | 196 + .../node_modules/type-check/package.json | 71 + .../node_modules/type-fest/index.d.ts | 20 + .../node_modules/type-fest/license | 9 + .../node_modules/type-fest/package.json | 83 + .../node_modules/type-fest/readme.md | 635 + .../node_modules/type-fest/source/basic.d.ts | 67 + .../node_modules/type-fest/source/except.d.ts | 22 + .../type-fest/source/literal-union.d.ts | 33 + .../type-fest/source/merge-exclusive.d.ts | 39 + .../node_modules/type-fest/source/merge.d.ts | 22 + .../type-fest/source/mutable.d.ts | 22 + .../node_modules/type-fest/source/opaque.d.ts | 40 + .../type-fest/source/package-json.d.ts | 501 + .../type-fest/source/partial-deep.d.ts | 72 + .../type-fest/source/promisable.d.ts | 23 + .../type-fest/source/readonly-deep.d.ts | 59 + .../source/require-at-least-one.d.ts | 32 + .../type-fest/source/require-exactly-one.d.ts | 36 + .../type-fest/source/set-optional.d.ts | 32 + .../type-fest/source/set-required.d.ts | 32 + .../node_modules/update-check/.editorconfig | 37 + .../node_modules/update-check/.yarnrc | 1 + .../node_modules/update-check/LICENSE | 21 + .../node_modules/update-check/README.md | 79 + .../node_modules/update-check/index.js | 201 + .../node_modules/update-check/package.json | 71 + tic-tac-toe-app/node_modules/uri-js/README.md | 199 + .../node_modules/uri-js/bower.json | 47 + .../node_modules/uri-js/dist/es5/uri.all.d.ts | 59 + .../node_modules/uri-js/dist/es5/uri.all.js | 1389 ++ .../uri-js/dist/es5/uri.all.js.map | 1 + .../uri-js/dist/es5/uri.all.min.d.ts | 59 + .../uri-js/dist/es5/uri.all.min.js | 3 + .../uri-js/dist/es5/uri.all.min.js.map | 1 + .../uri-js/dist/esnext/index.d.ts | 1 + .../node_modules/uri-js/dist/esnext/index.js | 13 + .../uri-js/dist/esnext/index.js.map | 1 + .../uri-js/dist/esnext/regexps-iri.d.ts | 3 + .../uri-js/dist/esnext/regexps-iri.js | 3 + .../uri-js/dist/esnext/regexps-iri.js.map | 1 + .../uri-js/dist/esnext/regexps-uri.d.ts | 4 + .../uri-js/dist/esnext/regexps-uri.js | 42 + .../uri-js/dist/esnext/regexps-uri.js.map | 1 + .../uri-js/dist/esnext/schemes/http.d.ts | 3 + .../uri-js/dist/esnext/schemes/http.js | 27 + .../uri-js/dist/esnext/schemes/http.js.map | 1 + .../uri-js/dist/esnext/schemes/https.d.ts | 3 + .../uri-js/dist/esnext/schemes/https.js | 9 + .../uri-js/dist/esnext/schemes/https.js.map | 1 + .../uri-js/dist/esnext/schemes/mailto.d.ts | 12 + .../uri-js/dist/esnext/schemes/mailto.js | 148 + .../uri-js/dist/esnext/schemes/mailto.js.map | 1 + .../uri-js/dist/esnext/schemes/urn-uuid.d.ts | 7 + .../uri-js/dist/esnext/schemes/urn-uuid.js | 23 + .../dist/esnext/schemes/urn-uuid.js.map | 1 + .../uri-js/dist/esnext/schemes/urn.d.ts | 10 + .../uri-js/dist/esnext/schemes/urn.js | 49 + .../uri-js/dist/esnext/schemes/urn.js.map | 1 + .../node_modules/uri-js/dist/esnext/uri.d.ts | 59 + .../node_modules/uri-js/dist/esnext/uri.js | 480 + .../uri-js/dist/esnext/uri.js.map | 1 + .../node_modules/uri-js/dist/esnext/util.d.ts | 6 + .../node_modules/uri-js/dist/esnext/util.js | 36 + .../uri-js/dist/esnext/util.js.map | 1 + .../node_modules/uri-js/package.json | 95 + .../node_modules/uri-js/rollup.config.js | 32 + .../node_modules/uri-js/src/index.ts | 18 + .../node_modules/uri-js/src/punycode.d.ts | 24 + .../node_modules/uri-js/src/regexps-iri.ts | 4 + .../node_modules/uri-js/src/regexps-uri.ts | 89 + .../node_modules/uri-js/src/schemes/http.ts | 36 + .../node_modules/uri-js/src/schemes/https.ts | 11 + .../node_modules/uri-js/src/schemes/mailto.ts | 182 + .../uri-js/src/schemes/urn-uuid.ts | 36 + .../node_modules/uri-js/src/schemes/urn.ts | 69 + .../node_modules/uri-js/src/uri.ts | 556 + .../node_modules/uri-js/src/util.ts | 40 + .../node_modules/uri-js/tests/qunit.css | 118 + .../node_modules/uri-js/tests/qunit.js | 1042 ++ .../uri-js/tests/test-es5-min.html | 17 + .../node_modules/uri-js/tests/test-es5.html | 17 + .../node_modules/uri-js/tests/tests.js | 774 + .../node_modules/uri-js/tsconfig.json | 20 + tic-tac-toe-app/node_modules/uri-js/yarn.lock | 1902 ++ .../validate-npm-package-license/LICENSE | 202 + .../validate-npm-package-license/README.md | 113 + .../validate-npm-package-license/index.js | 86 + .../validate-npm-package-license/package.json | 67 + .../node_modules/which/CHANGELOG.md | 152 + tic-tac-toe-app/node_modules/which/LICENSE | 15 + tic-tac-toe-app/node_modules/which/README.md | 51 + tic-tac-toe-app/node_modules/which/bin/which | 52 + .../node_modules/which/package.json | 66 + tic-tac-toe-app/node_modules/which/which.js | 135 + .../node_modules/word-wrap/LICENSE | 21 + .../node_modules/word-wrap/README.md | 182 + .../node_modules/word-wrap/index.d.ts | 50 + .../node_modules/word-wrap/index.js | 46 + .../node_modules/word-wrap/package.json | 137 + tic-tac-toe-app/node_modules/write/LICENSE | 21 + tic-tac-toe-app/node_modules/write/README.md | 178 + tic-tac-toe-app/node_modules/write/index.js | 160 + .../node_modules/write/package.json | 111 + tic-tac-toe-app/node_modules/xregexp/LICENSE | 21 + .../node_modules/xregexp/README.md | 241 + .../node_modules/xregexp/lib/addons/build.js | 260 + .../xregexp/lib/addons/matchrecursive.js | 229 + .../xregexp/lib/addons/unicode-base.js | 292 + .../xregexp/lib/addons/unicode-blocks.js | 39 + .../xregexp/lib/addons/unicode-categories.js | 39 + .../xregexp/lib/addons/unicode-properties.js | 76 + .../xregexp/lib/addons/unicode-scripts.js | 38 + .../node_modules/xregexp/lib/index.js | 38 + .../node_modules/xregexp/lib/xregexp.js | 2046 +++ .../node_modules/xregexp/package.json | 87 + .../node_modules/xregexp/src/addons/build.js | 234 + .../xregexp/src/addons/matchrecursive.js | 197 + .../xregexp/src/addons/unicode-base.js | 256 + .../xregexp/src/addons/unicode-blocks.js | 27 + .../xregexp/src/addons/unicode-categories.js | 27 + .../xregexp/src/addons/unicode-properties.js | 66 + .../xregexp/src/addons/unicode-scripts.js | 26 + .../node_modules/xregexp/src/index.js | 19 + .../node_modules/xregexp/src/xregexp.js | 1881 ++ .../xregexp/tools/output/blocks.js | 1170 ++ .../xregexp/tools/output/categories.js | 217 + .../xregexp/tools/output/properties.js | 41 + .../xregexp/tools/output/scripts.js | 622 + .../node_modules/xregexp/xregexp-all.js | 7470 ++++++++ tic-tac-toe-app/node_modules/yallist/LICENSE | 15 + .../node_modules/yallist/README.md | 204 + .../node_modules/yallist/iterator.js | 7 + .../node_modules/yallist/package.json | 62 + .../node_modules/yallist/yallist.js | 370 + tic-tac-toe-app/package-lock.json | 2266 +++ tic-tac-toe-app/package.json | 28 + tic-tac-toe-app/styles.css | 21 + 8443 files changed, 511342 insertions(+) create mode 100755 tic-tac-toe-app/App.js create mode 100755 tic-tac-toe-app/README.md create mode 100644 tic-tac-toe-app/components/Scoreboard.jsx create mode 100644 tic-tac-toe-app/components/board.jsx create mode 100644 tic-tac-toe-app/components/players.jsx create mode 100644 tic-tac-toe-app/contexts/ScoreContext.jsx create mode 100644 tic-tac-toe-app/game.js create mode 100755 tic-tac-toe-app/index.html create mode 100644 tic-tac-toe-app/node_modules/@types/color-name/LICENSE create mode 100644 tic-tac-toe-app/node_modules/@types/color-name/README.md create mode 100644 tic-tac-toe-app/node_modules/@types/color-name/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/@types/color-name/package.json create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/.circleci/config.yml create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/.yarnrc create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/LICENSE create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/README.md create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-env.js create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-static.js create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config.js create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/package.json create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment-env.js create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment.js create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/test/user.js create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/user/index.js create mode 100644 tic-tac-toe-app/node_modules/@zeit/schemas/yarn.lock create mode 100644 tic-tac-toe-app/node_modules/accepts/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/accepts/LICENSE create mode 100644 tic-tac-toe-app/node_modules/accepts/README.md create mode 100644 tic-tac-toe-app/node_modules/accepts/index.js create mode 100644 tic-tac-toe-app/node_modules/accepts/package.json create mode 100644 tic-tac-toe-app/node_modules/acorn/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/acorn/LICENSE create mode 100644 tic-tac-toe-app/node_modules/acorn/README.md create mode 100755 tic-tac-toe-app/node_modules/acorn/bin/acorn create mode 100644 tic-tac-toe-app/node_modules/acorn/dist/acorn.d.ts create mode 100644 tic-tac-toe-app/node_modules/acorn/dist/acorn.js create mode 100644 tic-tac-toe-app/node_modules/acorn/dist/acorn.js.map create mode 100644 tic-tac-toe-app/node_modules/acorn/dist/acorn.mjs create mode 100644 tic-tac-toe-app/node_modules/acorn/dist/acorn.mjs.map create mode 100644 tic-tac-toe-app/node_modules/acorn/dist/bin.js create mode 100644 tic-tac-toe-app/node_modules/acorn/package.json create mode 100644 tic-tac-toe-app/node_modules/ajv/.tonic_example.js create mode 100644 tic-tac-toe-app/node_modules/ajv/LICENSE create mode 100644 tic-tac-toe-app/node_modules/ajv/README.md create mode 100644 tic-tac-toe-app/node_modules/ajv/dist/ajv.bundle.js create mode 100644 tic-tac-toe-app/node_modules/ajv/dist/ajv.min.js create mode 100644 tic-tac-toe-app/node_modules/ajv/dist/ajv.min.js.map create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/ajv.d.ts create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/ajv.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/cache.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/async.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/equal.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/error_classes.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/formats.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/index.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/resolve.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/rules.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/schema_obj.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/ucs2length.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/compile/util.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/data.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/_limit.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/_limitItems.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/_limitLength.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/_limitProperties.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/allOf.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/anyOf.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/coerce.def create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/comment.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/const.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/contains.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/custom.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/defaults.def create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/definitions.def create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/dependencies.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/enum.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/errors.def create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/format.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/if.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/items.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/missing.def create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/multipleOf.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/not.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/oneOf.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/pattern.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/properties.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/propertyNames.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/ref.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/required.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/uniqueItems.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dot/validate.jst create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/README.md create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/_limit.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/_limitItems.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/_limitLength.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/_limitProperties.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/allOf.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/anyOf.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/comment.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/const.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/contains.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/custom.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/dependencies.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/enum.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/format.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/if.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/index.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/items.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/multipleOf.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/not.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/oneOf.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/pattern.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/properties.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/propertyNames.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/ref.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/required.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/uniqueItems.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/dotjs/validate.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/keyword.js create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/refs/data.json create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/refs/json-schema-draft-04.json create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/refs/json-schema-draft-06.json create mode 100644 tic-tac-toe-app/node_modules/ajv/lib/refs/json-schema-draft-07.json create mode 100644 tic-tac-toe-app/node_modules/ajv/package.json create mode 100644 tic-tac-toe-app/node_modules/ajv/scripts/.eslintrc.yml create mode 100644 tic-tac-toe-app/node_modules/ajv/scripts/bundle.js create mode 100644 tic-tac-toe-app/node_modules/ajv/scripts/compile-dots.js create mode 100755 tic-tac-toe-app/node_modules/ajv/scripts/info create mode 100755 tic-tac-toe-app/node_modules/ajv/scripts/prepare-tests create mode 100755 tic-tac-toe-app/node_modules/ajv/scripts/publish-built-version create mode 100755 tic-tac-toe-app/node_modules/ajv/scripts/travis-gh-pages create mode 100644 tic-tac-toe-app/node_modules/ansi-align/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/ansi-align/LICENSE create mode 100644 tic-tac-toe-app/node_modules/ansi-align/README.md create mode 100644 tic-tac-toe-app/node_modules/ansi-align/index.js create mode 100644 tic-tac-toe-app/node_modules/ansi-align/package.json create mode 100644 tic-tac-toe-app/node_modules/ansi-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/ansi-regex/license create mode 100644 tic-tac-toe-app/node_modules/ansi-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/ansi-regex/readme.md create mode 100644 tic-tac-toe-app/node_modules/arch/LICENSE create mode 100644 tic-tac-toe-app/node_modules/arch/README.md create mode 100644 tic-tac-toe-app/node_modules/arch/browser.js create mode 100644 tic-tac-toe-app/node_modules/arch/index.js create mode 100644 tic-tac-toe-app/node_modules/arch/package.json create mode 100644 tic-tac-toe-app/node_modules/arg/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/arg/LICENSE.md create mode 100644 tic-tac-toe-app/node_modules/arg/README.md create mode 100644 tic-tac-toe-app/node_modules/arg/index.js create mode 100644 tic-tac-toe-app/node_modules/arg/package.json create mode 100644 tic-tac-toe-app/node_modules/arg/test.js create mode 100644 tic-tac-toe-app/node_modules/arg/yarn.lock create mode 100644 tic-tac-toe-app/node_modules/aria-query/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/aria-query/LICENSE create mode 100644 tic-tac-toe-app/node_modules/aria-query/README.md create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/ariaPropsMap.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/domMap.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/elementRoleMap.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/commandRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/compositeRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/inputRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/landmarkRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/rangeRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/roletypeRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/sectionRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/sectionheadRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/selectRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/structureRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/widgetRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/abstract/windowRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/ariaAbstractRoles.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/ariaDpubRoles.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/ariaLiteralRoles.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docAbstractRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docAcknowledgmentsRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docAfterwordRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docAppendixRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docBacklinkRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docBiblioentryRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docBibliographyRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docBibliorefRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docChapterRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docColophonRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docConclusionRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docCoverRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docCreditRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docCreditsRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docDedicationRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docEndnoteRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docEndnotesRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docEpigraphRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docEpilogueRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docErrataRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docExampleRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docFootnoteRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docForewordRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docGlossaryRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docGlossrefRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docIndexRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docIntroductionRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docNoterefRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docNoticeRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docPagebreakRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docPagelistRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docPartRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docPrefaceRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docPrologueRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docPullquoteRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docQnaRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docSubtitleRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docTipRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/dpub/docTocRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/alertRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/alertdialogRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/applicationRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/articleRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/bannerRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/buttonRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/cellRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/checkboxRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/columnheaderRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/comboboxRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/complementaryRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/contentinfoRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/definitionRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/dialogRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/directoryRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/documentRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/feedRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/figureRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/formRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/gridRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/gridcellRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/groupRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/headingRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/imgRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/linkRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/listRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/listboxRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/listitemRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/logRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/mainRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/marqueeRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/mathRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/menuRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/menubarRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/menuitemRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/menuitemcheckboxRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/menuitemradioRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/navigationRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/noneRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/noteRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/optionRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/presentationRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/progressbarRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/radioRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/radiogroupRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/regionRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/rowRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/rowgroupRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/rowheaderRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/scrollbarRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/searchRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/searchboxRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/separatorRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/sliderRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/spinbuttonRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/statusRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/switchRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/tabRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/tableRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/tablistRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/tabpanelRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/termRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/textboxRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/timerRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/toolbarRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/tooltipRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/treeRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/treegridRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/etc/roles/literal/treeitemRole.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/roleElementMap.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/lib/rolesMap.js create mode 100644 tic-tac-toe-app/node_modules/aria-query/package.json create mode 100644 tic-tac-toe-app/node_modules/array-includes/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/array-includes/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/array-includes/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/array-includes/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/array-includes/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/array-includes/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/array-includes/LICENSE create mode 100644 tic-tac-toe-app/node_modules/array-includes/README.md create mode 100644 tic-tac-toe-app/node_modules/array-includes/auto.js create mode 100644 tic-tac-toe-app/node_modules/array-includes/implementation.js create mode 100644 tic-tac-toe-app/node_modules/array-includes/index.js create mode 100644 tic-tac-toe-app/node_modules/array-includes/package.json create mode 100644 tic-tac-toe-app/node_modules/array-includes/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/array-includes/shim.js create mode 100644 tic-tac-toe-app/node_modules/array-includes/test.html create mode 100644 tic-tac-toe-app/node_modules/array-includes/test/index.js create mode 100644 tic-tac-toe-app/node_modules/array-includes/test/shimmed.js create mode 100644 tic-tac-toe-app/node_modules/array-includes/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/.nycrc create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/LICENSE create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/README.md create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/auto.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/implementation.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/index.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/package.json create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/shim.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/test/index.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/test/shimmed.js create mode 100644 tic-tac-toe-app/node_modules/array.prototype.flat/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/ast-types-flow/README.md create mode 100644 tic-tac-toe-app/node_modules/ast-types-flow/lib/types.js create mode 100644 tic-tac-toe-app/node_modules/ast-types-flow/package.json create mode 100644 tic-tac-toe-app/node_modules/astral-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/astral-regex/license create mode 100644 tic-tac-toe-app/node_modules/astral-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/astral-regex/readme.md create mode 100755 tic-tac-toe-app/node_modules/axobject-query/CHANGELOG.md create mode 100755 tic-tac-toe-app/node_modules/axobject-query/LICENSE create mode 100755 tic-tac-toe-app/node_modules/axobject-query/README.md create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/AXObjectElementMap.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/AXObjectRoleMap.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/AXObjectsMap.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/elementAXObjectMap.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/AbbrRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/AlertDialogRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/AlertRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/AnnotationRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ApplicationRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ArticleRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/AudioRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/BannerRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/BlockquoteRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/BusyIndicatorRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ButtonRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/CanvasRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/CaptionRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/CellRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/CheckBoxRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ColorWellRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ColumnHeaderRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ColumnRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ComboBoxRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ComplementaryRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ContentInfoRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DateRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DateTimeRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DefinitionRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DescriptionListDetailRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DescriptionListRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DescriptionListTermRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DetailsRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DialogRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DirectoryRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DisclosureTriangleRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DivRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/DocumentRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/EmbeddedObjectRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/FeedRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/FigcaptionRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/FigureRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/FooterRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/FormRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/GridRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/GroupRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/HeadingRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/IframePresentationalRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/IframeRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/IgnoredRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ImageMapLinkRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ImageMapRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ImageRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/InlineTextBoxRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/InputTimeRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/LabelRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/LegendRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/LineBreakRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/LinkRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ListBoxOptionRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ListBoxRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ListItemRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ListMarkerRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ListRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/LogRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MainRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MarkRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MarqueeRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MathRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuBarRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuButtonRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuItemCheckBoxRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuItemRadioRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuItemRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuListOptionRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuListPopupRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MenuRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/MeterRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/NavigationRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/NoneRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/NoteRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/OutlineRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ParagraphRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/PopUpButtonRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/PreRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/PresentationalRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ProgressIndicatorRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RadioButtonRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RadioGroupRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RegionRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RootWebAreaRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RowHeaderRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RowRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RubyRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/RulerRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SVGRootRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ScrollAreaRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ScrollBarRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SeamlessWebAreaRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SearchBoxRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SearchRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SliderRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SliderThumbRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SpinButtonPartRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SpinButtonRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SplitterRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/StaticTextRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/StatusRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/SwitchRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TabGroupRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TabListRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TabPanelRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TabRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TableHeaderContainerRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TableRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TermRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TextFieldRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TimeRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TimerRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ToggleButtonRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/ToolbarRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TreeGridRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TreeItemRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/TreeRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/UserInterfaceTooltipRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/VideoRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/WebAreaRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/etc/objects/WindowRole.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/lib/index.js create mode 100755 tic-tac-toe-app/node_modules/axobject-query/package.json create mode 100644 tic-tac-toe-app/node_modules/balanced-match/.npmignore create mode 100644 tic-tac-toe-app/node_modules/balanced-match/LICENSE.md create mode 100644 tic-tac-toe-app/node_modules/balanced-match/README.md create mode 100644 tic-tac-toe-app/node_modules/balanced-match/index.js create mode 100644 tic-tac-toe-app/node_modules/balanced-match/package.json create mode 100644 tic-tac-toe-app/node_modules/boxen/index.js create mode 100644 tic-tac-toe-app/node_modules/boxen/license create mode 100644 tic-tac-toe-app/node_modules/boxen/package.json create mode 100644 tic-tac-toe-app/node_modules/boxen/readme.md create mode 100644 tic-tac-toe-app/node_modules/brace-expansion/LICENSE create mode 100644 tic-tac-toe-app/node_modules/brace-expansion/README.md create mode 100644 tic-tac-toe-app/node_modules/brace-expansion/index.js create mode 100644 tic-tac-toe-app/node_modules/brace-expansion/package.json create mode 100644 tic-tac-toe-app/node_modules/bytes/History.md create mode 100644 tic-tac-toe-app/node_modules/bytes/LICENSE create mode 100644 tic-tac-toe-app/node_modules/bytes/Readme.md create mode 100644 tic-tac-toe-app/node_modules/bytes/index.js create mode 100644 tic-tac-toe-app/node_modules/bytes/package.json create mode 100644 tic-tac-toe-app/node_modules/camelcase/index.js create mode 100644 tic-tac-toe-app/node_modules/camelcase/license create mode 100644 tic-tac-toe-app/node_modules/camelcase/package.json create mode 100644 tic-tac-toe-app/node_modules/camelcase/readme.md create mode 100644 tic-tac-toe-app/node_modules/chalk/index.js create mode 100644 tic-tac-toe-app/node_modules/chalk/index.js.flow create mode 100644 tic-tac-toe-app/node_modules/chalk/license create mode 100644 tic-tac-toe-app/node_modules/chalk/package.json create mode 100644 tic-tac-toe-app/node_modules/chalk/readme.md create mode 100644 tic-tac-toe-app/node_modules/chalk/templates.js create mode 100644 tic-tac-toe-app/node_modules/chalk/types/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/chardet/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/chardet/LICENSE create mode 100644 tic-tac-toe-app/node_modules/chardet/README.md create mode 100644 tic-tac-toe-app/node_modules/chardet/encoding/iso2022.js create mode 100644 tic-tac-toe-app/node_modules/chardet/encoding/mbcs.js create mode 100644 tic-tac-toe-app/node_modules/chardet/encoding/sbcs.js create mode 100644 tic-tac-toe-app/node_modules/chardet/encoding/unicode.js create mode 100644 tic-tac-toe-app/node_modules/chardet/encoding/utf8.js create mode 100644 tic-tac-toe-app/node_modules/chardet/index.js create mode 100644 tic-tac-toe-app/node_modules/chardet/match.js create mode 100644 tic-tac-toe-app/node_modules/chardet/package.json create mode 100644 tic-tac-toe-app/node_modules/cli-cursor/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/cli-cursor/index.js create mode 100644 tic-tac-toe-app/node_modules/cli-cursor/license create mode 100644 tic-tac-toe-app/node_modules/cli-cursor/package.json create mode 100644 tic-tac-toe-app/node_modules/cli-cursor/readme.md create mode 100644 tic-tac-toe-app/node_modules/cli-width/.nyc_output/00ef1b3d-3687-482b-8d03-de2f76b58f54.json create mode 100644 tic-tac-toe-app/node_modules/cli-width/.nyc_output/processinfo/00ef1b3d-3687-482b-8d03-de2f76b58f54.json create mode 100644 tic-tac-toe-app/node_modules/cli-width/.nyc_output/processinfo/index.json create mode 100644 tic-tac-toe-app/node_modules/cli-width/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/cli-width/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/cli-width/LICENSE create mode 100644 tic-tac-toe-app/node_modules/cli-width/README.md create mode 100644 tic-tac-toe-app/node_modules/cli-width/index.js create mode 100644 tic-tac-toe-app/node_modules/cli-width/package.json create mode 100644 tic-tac-toe-app/node_modules/clipboardy/fallbacks/.DS_Store create mode 100755 tic-tac-toe-app/node_modules/clipboardy/fallbacks/linux/xsel create mode 100644 tic-tac-toe-app/node_modules/clipboardy/fallbacks/windows/.DS_Store create mode 100755 tic-tac-toe-app/node_modules/clipboardy/fallbacks/windows/clipboard_i686.exe create mode 100755 tic-tac-toe-app/node_modules/clipboardy/fallbacks/windows/clipboard_x86_64.exe create mode 100644 tic-tac-toe-app/node_modules/clipboardy/index.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/lib/linux.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/lib/macos.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/lib/termux.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/lib/windows.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/license create mode 100644 tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/index.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/errname.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/stdio.js create mode 100644 tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/license create mode 100644 tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/package.json create mode 100644 tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/readme.md create mode 100644 tic-tac-toe-app/node_modules/clipboardy/package.json create mode 100644 tic-tac-toe-app/node_modules/clipboardy/readme.md create mode 100644 tic-tac-toe-app/node_modules/color-name/.eslintrc.json create mode 100644 tic-tac-toe-app/node_modules/color-name/.npmignore create mode 100644 tic-tac-toe-app/node_modules/color-name/LICENSE create mode 100644 tic-tac-toe-app/node_modules/color-name/README.md create mode 100644 tic-tac-toe-app/node_modules/color-name/index.js create mode 100644 tic-tac-toe-app/node_modules/color-name/package.json create mode 100644 tic-tac-toe-app/node_modules/color-name/test.js create mode 100644 tic-tac-toe-app/node_modules/commander/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/commander/LICENSE create mode 100644 tic-tac-toe-app/node_modules/commander/Readme.md create mode 100644 tic-tac-toe-app/node_modules/commander/index.js create mode 100644 tic-tac-toe-app/node_modules/commander/package.json create mode 100644 tic-tac-toe-app/node_modules/commander/typings/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/compressible/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/compressible/LICENSE create mode 100644 tic-tac-toe-app/node_modules/compressible/README.md create mode 100644 tic-tac-toe-app/node_modules/compressible/index.js create mode 100644 tic-tac-toe-app/node_modules/compressible/package.json create mode 100644 tic-tac-toe-app/node_modules/compression/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/compression/LICENSE create mode 100644 tic-tac-toe-app/node_modules/compression/README.md create mode 100644 tic-tac-toe-app/node_modules/compression/index.js create mode 100644 tic-tac-toe-app/node_modules/compression/package.json create mode 100644 tic-tac-toe-app/node_modules/concat-map/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/concat-map/LICENSE create mode 100644 tic-tac-toe-app/node_modules/concat-map/README.markdown create mode 100644 tic-tac-toe-app/node_modules/concat-map/example/map.js create mode 100644 tic-tac-toe-app/node_modules/concat-map/index.js create mode 100644 tic-tac-toe-app/node_modules/concat-map/package.json create mode 100644 tic-tac-toe-app/node_modules/concat-map/test/map.js create mode 100644 tic-tac-toe-app/node_modules/confusing-browser-globals/LICENSE create mode 100644 tic-tac-toe-app/node_modules/confusing-browser-globals/README.md create mode 100644 tic-tac-toe-app/node_modules/confusing-browser-globals/index.js create mode 100644 tic-tac-toe-app/node_modules/confusing-browser-globals/package.json create mode 100644 tic-tac-toe-app/node_modules/contains-path/LICENSE create mode 100644 tic-tac-toe-app/node_modules/contains-path/README.md create mode 100644 tic-tac-toe-app/node_modules/contains-path/index.js create mode 100644 tic-tac-toe-app/node_modules/contains-path/package.json create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/README.md create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/aggregate-error.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/is-view.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/concat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/flat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/is-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/is-template-object.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/last-item.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/splice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/concat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/splice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/as-indexed-pairs.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/drop.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/take.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/to-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/clear-immediate.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/composite-key.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/composite-symbol.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/data-view/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/date/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/date/now.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/date/to-iso-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/date/to-json.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/date/to-primitive.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/date/to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/function/bind.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/function/has-instance.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/function/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/function/name.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/bind.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator-method.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/global-this.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/bind.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-point-at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-points.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/concat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/ends-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/flags.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/repeat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/replace-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/splice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/starts-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-left.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/instance/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/is-iterable.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/as-indexed-pairs.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/drop.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/take.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/iterator/to-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/json/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/json/stringify.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/json/to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/find-key.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/group-by.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/key-by.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/key-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/map-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/map-values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/merge.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/update-or-insert.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/update.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/map/upsert.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/acosh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/asinh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/atanh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/cbrt.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/clamp.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/clz32.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/cosh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/deg-per-rad.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/degrees.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/expm1.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/fround.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/fscale.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/hypot.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/iaddh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/imul.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/imulh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/isubh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/log10.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/log1p.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/log2.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/rad-per-deg.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/radians.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/scale.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/seeded-prng.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/sign.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/signbit.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/sinh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/tanh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/trunc.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/math/umulh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/epsilon.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/from-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/is-finite.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/is-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/is-nan.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/is-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/max-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/min-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-float.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-int.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/to-fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/to-precision.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-precision.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/assign.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/create.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/define-getter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/define-properties.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/define-property.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/define-setter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/freeze.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/from-entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptors.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-names.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-symbols.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/get-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/is-extensible.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/is-frozen.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/is-sealed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/is.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-getter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-setter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/prevent-extensions.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/seal.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/set-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/object/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/observable/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/parse-float.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/parse-int.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/promise/all-settled.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/promise/any.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/promise/finally.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/promise/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/promise/try.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/queue-microtask.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/apply.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/construct.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-property.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-property.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-property-descriptor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-own-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/is-extensible.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/own-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/prevent-extensions.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/flags.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/replace.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/search.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/split.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/sticky.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/test.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/regexp/to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set-immediate.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set-interval.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set-timeout.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/add-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/difference.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/intersection.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/is-disjoint-from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/is-subset-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/is-superset-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/symmetric-difference.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/set/union.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/anchor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/big.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/blink.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/bold.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/code-point-at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/code-points.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/ends-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/fontcolor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/fontsize.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/from-code-point.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/italics.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/link.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/raw.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/repeat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/replace-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/replace.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/search.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/small.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/split.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/starts-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/strike.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/sub.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/sup.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-left.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/trim.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/anchor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/big.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/blink.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/bold.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-point-at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-points.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/ends-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontcolor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontsize.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/italics.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/link.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/repeat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/replace-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/small.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/starts-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/strike.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sub.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sup.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-left.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-dispose.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/description.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/dispose.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/for.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/has-instance.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/is-concat-spreadable.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/key-for.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/observable.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/pattern-match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/search.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/species.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/split.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-primitive.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/symbol/unscopables.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float32-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float64-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int16-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int32-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int8-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/set.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/subarray.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-locale-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint16-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint32-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-clamped-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/url-search-params/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/url/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/url/to-json.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/upsert.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/add-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/README.md create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.is-view.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.concat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.is-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.species.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.splice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.data-view.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.now.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-iso-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-json.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-primitive.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.bind.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.has-instance.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.name.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.global-this.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.stringify.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.acosh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.asinh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.atanh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cbrt.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.clz32.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cosh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.expm1.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.fround.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.hypot.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.imul.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log10.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log1p.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log2.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sign.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sinh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.tanh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.trunc.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.epsilon.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-finite.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-nan.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.max-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.min-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-float.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-int.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-precision.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.assign.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.create.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-getter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-properties.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-property.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-setter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.freeze.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.from-entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-names.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-extensible.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-frozen.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-sealed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-getter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-setter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.prevent-extensions.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.seal.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.set-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-float.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-int.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.all-settled.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.finally.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.apply.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.construct.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.define-property.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.delete-property.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-own-property-descriptor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.has.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.is-extensible.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.own-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.prevent-extensions.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set-prototype-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.exec.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.flags.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.sticky.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.test.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.set.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.anchor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.big.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.blink.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.bold.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.code-point-at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.ends-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontcolor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontsize.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.from-code-point.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.italics.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.link.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.raw.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.repeat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.replace.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.search.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.small.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.split.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.starts-with.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.strike.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sub.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sup.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-end.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-start.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.async-iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.description.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.has-instance.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.replace.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.search.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.species.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.split.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-primitive.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.unscopables.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float32-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float64-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int16-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int32-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int8-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.set.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.subarray.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-locale-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint16-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint32-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-clamped-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-set.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.aggregate-error.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.is-template-object.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-item.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.as-indexed-pairs.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.drop.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.take.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.to-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-key.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-symbol.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.global-this.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.as-indexed-pairs.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.drop.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.take.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.to-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find-key.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.group-by.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-by.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.merge.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update-or-insert.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.upsert.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.clamp.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.deg-per-rad.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.degrees.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.fscale.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.iaddh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.imulh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.isubh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.rad-per-deg.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.radians.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.scale.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.seeded-prng.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.signbit.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.umulh.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.number.from-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.observable.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.all-settled.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.any.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.try.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.define-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.delete-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata-keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-own-metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.metadata.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.add-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.difference.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.intersection.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-disjoint-from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-subset-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-superset-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.symmetric-difference.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.union.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.at.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.code-points.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.replace-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.dispose.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.observable.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.replace-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.upsert.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.add-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.delete-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.immediate.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.queue-microtask.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.timers.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.url-search-params.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.to-json.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/package.json create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/README.md create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/is-view.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/concat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/is-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/splice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/concat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/copy-within.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat-map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/keys.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/slice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/splice.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/clear-immediate.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/data-view/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/function/bind.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/function/has-instance.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/function/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/function/name.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/bind.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/json/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/json/stringify.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/json/to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/map/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/epsilon.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-finite.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-nan.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/max-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/min-safe-integer.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-float.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-int.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-precision.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-fixed.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-precision.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/parse-float.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/queue-microtask.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/constructor.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/flags.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/replace.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/search.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/split.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/sticky.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/test.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/set-interval.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/async-iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/description.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/for.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/has-instance.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/is-concat-spreadable.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/iterator.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/key-for.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match-all.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/replace.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/search.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/species.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/split.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-primitive.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-string-tag.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/unscopables.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/entries.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/every.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/fill.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/filter.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find-index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/float64-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/for-each.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/from.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/includes.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int16-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int32-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/join.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/last-index-of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/map.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/of.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce-right.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reverse.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/set.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/some.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/sort.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-locale-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-string.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint16-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-clamped-array.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/values.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/url/index.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/url/to-json.js create mode 100644 tic-tac-toe-app/node_modules/core-js-pure/stable/weak-map/index.js create mode 100644 tic-tac-toe-app/node_modules/damerau-levenshtein/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/damerau-levenshtein/LICENSE create mode 100644 tic-tac-toe-app/node_modules/damerau-levenshtein/README.md create mode 100644 tic-tac-toe-app/node_modules/damerau-levenshtein/index.js create mode 100644 tic-tac-toe-app/node_modules/damerau-levenshtein/package.json create mode 100755 tic-tac-toe-app/node_modules/damerau-levenshtein/scripts/update-changelog.sh create mode 100644 tic-tac-toe-app/node_modules/damerau-levenshtein/test/test.js create mode 100644 tic-tac-toe-app/node_modules/debug/.coveralls.yml create mode 100644 tic-tac-toe-app/node_modules/debug/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/debug/.npmignore create mode 100644 tic-tac-toe-app/node_modules/debug/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/debug/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/debug/LICENSE create mode 100644 tic-tac-toe-app/node_modules/debug/Makefile create mode 100644 tic-tac-toe-app/node_modules/debug/README.md create mode 100644 tic-tac-toe-app/node_modules/debug/component.json create mode 100644 tic-tac-toe-app/node_modules/debug/karma.conf.js create mode 100644 tic-tac-toe-app/node_modules/debug/node.js create mode 100644 tic-tac-toe-app/node_modules/debug/package.json create mode 100644 tic-tac-toe-app/node_modules/debug/src/browser.js create mode 100644 tic-tac-toe-app/node_modules/debug/src/debug.js create mode 100644 tic-tac-toe-app/node_modules/debug/src/index.js create mode 100644 tic-tac-toe-app/node_modules/debug/src/inspector-log.js create mode 100644 tic-tac-toe-app/node_modules/debug/src/node.js create mode 100644 tic-tac-toe-app/node_modules/deep-extend/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/deep-extend/LICENSE create mode 100644 tic-tac-toe-app/node_modules/deep-extend/README.md create mode 100644 tic-tac-toe-app/node_modules/deep-extend/index.js create mode 100644 tic-tac-toe-app/node_modules/deep-extend/lib/deep-extend.js create mode 100644 tic-tac-toe-app/node_modules/deep-extend/package.json create mode 100644 tic-tac-toe-app/node_modules/deep-is/.npmignore create mode 100644 tic-tac-toe-app/node_modules/deep-is/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/deep-is/LICENSE create mode 100644 tic-tac-toe-app/node_modules/deep-is/README.markdown create mode 100644 tic-tac-toe-app/node_modules/deep-is/example/cmp.js create mode 100644 tic-tac-toe-app/node_modules/deep-is/index.js create mode 100644 tic-tac-toe-app/node_modules/deep-is/package.json create mode 100644 tic-tac-toe-app/node_modules/deep-is/test/NaN.js create mode 100644 tic-tac-toe-app/node_modules/deep-is/test/cmp.js create mode 100644 tic-tac-toe-app/node_modules/deep-is/test/neg-vs-pos-0.js create mode 100644 tic-tac-toe-app/node_modules/define-properties/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/define-properties/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/define-properties/.jscs.json create mode 100644 tic-tac-toe-app/node_modules/define-properties/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/define-properties/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/define-properties/LICENSE create mode 100644 tic-tac-toe-app/node_modules/define-properties/README.md create mode 100644 tic-tac-toe-app/node_modules/define-properties/index.js create mode 100644 tic-tac-toe-app/node_modules/define-properties/package.json create mode 100644 tic-tac-toe-app/node_modules/define-properties/test/index.js create mode 100644 tic-tac-toe-app/node_modules/doctrine/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/doctrine/LICENSE create mode 100644 tic-tac-toe-app/node_modules/doctrine/LICENSE.closure-compiler create mode 100644 tic-tac-toe-app/node_modules/doctrine/LICENSE.esprima create mode 100644 tic-tac-toe-app/node_modules/doctrine/README.md create mode 100644 tic-tac-toe-app/node_modules/doctrine/lib/doctrine.js create mode 100644 tic-tac-toe-app/node_modules/doctrine/lib/typed.js create mode 100644 tic-tac-toe-app/node_modules/doctrine/lib/utility.js create mode 100644 tic-tac-toe-app/node_modules/doctrine/package.json create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/README.md create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/es2015/index.js create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/es2015/text.js create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/emoji-regex/text.js create mode 100644 tic-tac-toe-app/node_modules/error-ex/LICENSE create mode 100644 tic-tac-toe-app/node_modules/error-ex/README.md create mode 100644 tic-tac-toe-app/node_modules/error-ex/index.js create mode 100644 tic-tac-toe-app/node_modules/error-ex/package.json create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.eslintignore create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.gitattributes create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.nycrc create mode 100644 tic-tac-toe-app/node_modules/es-abstract/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/AbstractEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/AbstractRelationalComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/AdvanceStringIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ArrayCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ArraySetLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ArraySpeciesCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/Call.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CanonicalNumericIndexString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CompletePropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataPropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CreateHTML.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CreateIterResultObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CreateListFromArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/CreateMethodProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/DateFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/Day.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/DayFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/DayWithinYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/DaysInYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/DefinePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/DeletePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/EnumerableOwnNames.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/FromPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/Get.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/GetIterator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/GetMethod.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/GetOwnPropertyKeys.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/GetSubstitution.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/GetV.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/HasOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/HasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/HourFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/InLeapYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/InstanceofOperator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/Invoke.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsAccessorDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsArray.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsCallable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsConcatSpreadable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsDataDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsExtensible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsGenericDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsPromise.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IsRegExp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IteratorClose.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IteratorComplete.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IteratorNext.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IteratorStep.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/IteratorValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/MakeDate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/MakeDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/MakeTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/MinFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/MonthFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ObjectCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasInstance.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/RegExpExec.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/RequireObjectCoercible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/SameValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/SameValueZero.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/SecFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/Set.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/SetFunctionName.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/SetIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/SpeciesConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/StrictEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/SymbolDescriptiveString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/TestIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/TimeClip.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/TimeFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/TimeWithinDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToBoolean.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToDateString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToInt16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToInt32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToInt8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToUint16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToUint32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8Clamp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/Type.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/ValidateAndApplyPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/WeekDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/YearFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/modulo.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/msFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/thisBooleanValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/thisNumberValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/thisStringValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2015/thisTimeValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/AbstractEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/AbstractRelationalComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/AdvanceStringIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ArrayCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ArraySetLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ArraySpeciesCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/Call.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CanonicalNumericIndexString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CompletePropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataPropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CreateHTML.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CreateIterResultObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CreateListFromArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/CreateMethodProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/DateFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/Day.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/DayFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/DayWithinYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/DaysInYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/DefinePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/DeletePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/EnumerableOwnNames.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/FromPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/Get.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/GetIterator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/GetMethod.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/GetOwnPropertyKeys.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/GetSubstitution.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/GetV.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/HasOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/HasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/HourFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/InLeapYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/InstanceofOperator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/Invoke.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsAccessorDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsArray.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsCallable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsConcatSpreadable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsDataDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsExtensible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsGenericDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsPromise.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IsRegExp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IterableToArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IteratorClose.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IteratorComplete.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IteratorNext.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IteratorStep.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/IteratorValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/MakeDate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/MakeDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/MakeTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/MinFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/MonthFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ObjectCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasInstance.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/RegExpExec.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/RequireObjectCoercible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SameValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SameValueNonNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SameValueZero.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SecFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/Set.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SetFunctionName.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SetIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SpeciesConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/StrictEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/SymbolDescriptiveString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/TestIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/TimeClip.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/TimeFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/TimeWithinDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToBoolean.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToDateString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToInt16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToInt32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToInt8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToUint16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToUint32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8Clamp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/Type.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/ValidateAndApplyPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/WeekDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/YearFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/modulo.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/msFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/thisBooleanValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/thisNumberValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/thisStringValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2016/thisTimeValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/AbstractEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/AbstractRelationalComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/AdvanceStringIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ArrayCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ArraySetLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ArraySpeciesCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/Call.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CanonicalNumericIndexString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CompletePropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataPropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CreateHTML.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CreateIterResultObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CreateListFromArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/CreateMethodProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/DateFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/Day.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/DayFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/DayWithinYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/DaysInYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/DefinePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/DeletePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/EnumerableOwnProperties.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/FromPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/Get.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/GetIterator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/GetMethod.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/GetOwnPropertyKeys.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/GetSubstitution.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/GetV.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/HasOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/HasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/HourFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/InLeapYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/InstanceofOperator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/Invoke.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsAccessorDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsArray.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsCallable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsConcatSpreadable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsDataDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsExtensible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsGenericDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsPromise.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IsRegExp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IterableToList.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IteratorClose.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IteratorComplete.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IteratorNext.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IteratorStep.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/IteratorValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/MakeDate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/MakeDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/MakeTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/MinFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/MonthFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ObjectCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasInstance.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/RegExpExec.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/RequireObjectCoercible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SameValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SameValueNonNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SameValueZero.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SecFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/Set.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SetFunctionName.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SetIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SpeciesConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/StrictEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/SymbolDescriptiveString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/TestIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/TimeClip.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/TimeFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/TimeWithinDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToBoolean.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToDateString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToInt16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToInt32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToInt8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToUint16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToUint32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8Clamp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/Type.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/ValidateAndApplyPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/WeekDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/YearFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/modulo.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/msFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/thisBooleanValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/thisNumberValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/thisStringValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2017/thisTimeValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/AbstractEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/AbstractRelationalComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/AdvanceStringIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ArrayCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ArraySetLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ArraySpeciesCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/Call.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CanonicalNumericIndexString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CompletePropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CopyDataProperties.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataPropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CreateHTML.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CreateIterResultObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CreateListFromArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/CreateMethodProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/DateFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/DateString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/Day.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/DayFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/DayWithinYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/DaysInYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/DefinePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/DeletePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/FromPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/Get.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/GetIterator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/GetMethod.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/GetOwnPropertyKeys.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/GetSubstitution.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/GetV.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/HasOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/HasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/HourFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/InLeapYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/InstanceofOperator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/Invoke.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsAccessorDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsArray.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsCallable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsConcatSpreadable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsDataDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsExtensible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsGenericDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsPromise.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsRegExp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IsStringPrefix.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IterableToList.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IteratorClose.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IteratorComplete.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IteratorNext.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IteratorStep.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/IteratorValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/MakeDate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/MakeDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/MakeTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/MinFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/MonthFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/NumberToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ObjectCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasInstance.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/PromiseResolve.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/RegExpExec.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/RequireObjectCoercible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SameValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SameValueNonNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SameValueZero.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SecFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/Set.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SetFunctionName.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SetIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SpeciesConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/StrictEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/SymbolDescriptiveString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/TestIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/TimeClip.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/TimeFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/TimeString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/TimeWithinDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToBoolean.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToDateString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToInt16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToInt32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToInt8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToUint16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToUint32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8Clamp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/Type.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/ValidateAndApplyPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/WeekDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/YearFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/modulo.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/msFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/thisBooleanValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/thisNumberValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/thisStringValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/thisSymbolValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2018/thisTimeValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/AbstractEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/AbstractRelationalComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/AddEntriesFromIterable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/AdvanceStringIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ArrayCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ArraySetLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ArraySpeciesCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/Call.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CanonicalNumericIndexString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CompletePropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CopyDataProperties.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataPropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CreateHTML.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CreateIterResultObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CreateListFromArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/CreateMethodProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/DateFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/DateString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/Day.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/DayFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/DayWithinYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/DaysInYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/DefinePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/DeletePropertyOrThrow.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/FlattenIntoArray.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/FromPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/Get.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/GetIterator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/GetMethod.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/GetOwnPropertyKeys.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/GetSubstitution.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/GetV.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/HasOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/HasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/HourFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/InLeapYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/InstanceofOperator.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/Invoke.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsAccessorDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsArray.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsCallable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsConcatSpreadable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsDataDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsExtensible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsGenericDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsPromise.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsRegExp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IsStringPrefix.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IterableToList.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IteratorClose.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IteratorComplete.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IteratorNext.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IteratorStep.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/IteratorValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/MakeDate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/MakeDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/MakeTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/MinFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/MonthFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/NumberToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ObjectCreate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasInstance.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/PromiseResolve.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/RegExpExec.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/RequireObjectCoercible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SameValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SameValueNonNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SameValueZero.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SecFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/Set.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SetFunctionName.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SetIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SpeciesConstructor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/StrictEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/SymbolDescriptiveString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/TestIntegrityLevel.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/TimeClip.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/TimeFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/TimeString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/TimeWithinDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToBoolean.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToDateString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToIndex.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToInt16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToInt32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToInt8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToLength.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyKey.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToUint16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToUint32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8Clamp.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/TrimString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/Type.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/ValidateAndApplyPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/WeekDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/YearFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/modulo.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/msFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/thisBooleanValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/thisNumberValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/thisStringValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/thisSymbolValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/2019/thisTimeValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/AbstractEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/AbstractRelationalComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/CheckObjectCoercible.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/DateFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/Day.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/DayFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/DayWithinYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/DaysInYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/FromPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/HourFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/InLeapYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/IsAccessorDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/IsCallable.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/IsDataDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/IsGenericDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/IsPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/MakeDate.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/MakeDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/MakeTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/MinFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/MonthFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/SameValue.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/SecFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/StrictEqualityComparison.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/TimeClip.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/TimeFromYear.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/TimeWithinDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToBoolean.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToInt32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToNumber.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToObject.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToString.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToUint16.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/ToUint32.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/Type.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/WeekDay.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/YearFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/modulo.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/5/msFromTime.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/es-abstract/GetIntrinsic.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/LICENSE create mode 100644 tic-tac-toe-app/node_modules/es-abstract/README.md create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es2015.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es2016.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es2017.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es2018.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es2019.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es5.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es6.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/es7.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/DefineOwnProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/OwnPropertyKeys.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/assertRecord.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/assign.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/callBind.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/callBound.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/every.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/forEach.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/getInferredName.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/getIteratorMethod.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/getProto.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/getSymbolDescription.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/isFinite.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/isNaN.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/isPrefixOf.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/isPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/isPropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/isSamePropertyDescriptor.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/maxSafeInteger.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/mod.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/padTimeComponent.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/regexTester.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/setProto.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/sign.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/helpers/timeConstants.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/index.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/operations/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/es-abstract/operations/2015.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/operations/2016.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/operations/2017.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/operations/2018.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/operations/2019.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/package.json create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/GetIntrinsic.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/diffOps.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es2015.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es2016.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es2017.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es2018.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es2019.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es5.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es6.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/es7.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/helpers/OwnPropertyKeys.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/helpers/assertRecord.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/helpers/defineProperty.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/helpers/getSymbolDescription.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/helpers/runManifestTest.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/helpers/values.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/index.js create mode 100644 tic-tac-toe-app/node_modules/es-abstract/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/LICENSE create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/Makefile create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/README.md create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/es2015.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/es5.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/es6.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/helpers/isPrimitive.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/index.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/package.json create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/test/es2015.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/test/es5.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/test/es6.js create mode 100644 tic-tac-toe-app/node_modules/es-to-primitive/test/index.js create mode 100644 tic-tac-toe-app/node_modules/escape-string-regexp/index.js create mode 100644 tic-tac-toe-app/node_modules/escape-string-regexp/license create mode 100644 tic-tac-toe-app/node_modules/escape-string-regexp/package.json create mode 100644 tic-tac-toe-app/node_modules/escape-string-regexp/readme.md create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.babelrc create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/LICENSE.md create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/legacy.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/best-practices.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/errors.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/es6.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/imports.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/node.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/strict.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/style.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/variables.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/requires.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/test-base.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb-base/whitespace.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/.babelrc create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/LICENSE.md create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/base.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/hooks.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/legacy.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-a11y.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-hooks.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/test/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/test/requires.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-base.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-react-order.js create mode 100644 tic-tac-toe-app/node_modules/eslint-config-airbnb/whitespace.js create mode 100644 tic-tac-toe-app/node_modules/eslint-import-resolver-node/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-import-resolver-node/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-import-resolver-node/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-import-resolver-node/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-import-resolver-node/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/.eslintrc.yml create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/ModuleCache.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/declaredScope.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/hash.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/ignore.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/module-require.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/moduleVisitor.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/parse.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/resolve.js create mode 100644 tic-tac-toe-app/node_modules/eslint-module-utils/unambiguous.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/CONTRIBUTING.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/RELEASE.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/SECURITY.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/electron.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/errors.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/react-native.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/react.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/recommended.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/stage-0.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/typescript.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/config/warnings.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/default.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/export.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/exports-last.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/extensions.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/first.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/group-exports.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/named.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/namespace.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-amd.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-cycle.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-default-export.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-default.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-export.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-namespace.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-self-import.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/order.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/unambiguous.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/ExportMap.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/importType.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/staticRequire.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/docsUrl.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/importDeclaration.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/default.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/export.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/exports-last.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/extensions.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/first.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/group-exports.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/imports-first.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/max-dependencies.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/named.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/namespace.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/newline-after-import.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-absolute-path.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-amd.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-anonymous-default-export.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-commonjs.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-cycle.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-default-export.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-deprecated.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-duplicates.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-dynamic-require.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-extraneous-dependencies.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-internal-modules.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-mutable-exports.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default-member.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-default.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-export.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-namespace.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-nodejs-modules.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-relative-parent-imports.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-restricted-paths.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-self-import.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unassigned-import.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unresolved.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unused-modules.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-useless-path-segments.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-webpack-loader-syntax.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/order.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/prefer-default-export.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/unambiguous.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.BSD create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.closure-compiler create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.esprima create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/doctrine.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/typed.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/utility.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-import/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.babelrc create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintignore create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintrc create mode 100755 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.watchmanconfig create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/LICENSE.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/IdentifierMock.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/JSXAttributeMock.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/JSXElementMock.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/JSXExpressionContainerMock.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/JSXSpreadAttributeMock.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/JSXTextMock.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/LiteralMock.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__mocks__/genInteractives.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/__util__/parserOptionsMapper.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/__util__/ruleOptionsMapperFactory.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/index-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/accessible-emoji-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/alt-text-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/anchor-has-content-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/anchor-is-valid-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/aria-activedescendant-has-tabindex-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/aria-props-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/aria-proptypes-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/aria-role-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/aria-unsupported-elements-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/click-events-have-key-events-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/control-has-associated-label-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/heading-has-content-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/html-has-lang-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/iframe-has-title-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/img-redundant-alt-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/interactive-supports-focus-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/label-has-associated-control-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/label-has-for-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/lang-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/media-has-caption-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/mouse-events-have-key-events-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-access-key-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-autofocus-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-distracting-elements-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-interactive-element-to-noninteractive-role-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-noninteractive-element-interactions-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-noninteractive-element-to-interactive-role-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-noninteractive-tabindex-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-onchange-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-redundant-roles-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/no-static-element-interactions-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/role-has-required-aria-props-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/role-supports-aria-props-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/scope-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/rules/tabindex-no-positive-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/attributesComparator-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/getComputedRole-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/getExplicitRole-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/getImplicitRole-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/getSuggestion-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/getTabIndex-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/hasAccessibleChild-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/implicitRoles/input-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/implicitRoles/menu-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/implicitRoles/menuitem-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isAbstractRole-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isDOMElement-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isDisabledElement-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isInteractiveElement-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isInteractiveRole-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isNonInteractiveElement-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isNonInteractiveRole-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isNonLiteralProperty-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/isSemanticRoleElement-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/mayContainChildComponent-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/mayHaveAccessibleLabel-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/parserOptionsMapper-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/__tests__/src/util/schemas-test.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/accessible-emoji.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/alt-text.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/anchor-has-content.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/anchor-is-valid.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/aria-activedescendant-has-tabindex.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/aria-props.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/aria-proptypes.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/aria-role.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/aria-unsupported-elements.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/click-events-have-key-events.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/control-has-associated-label.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/heading-has-content.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/html-has-lang.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/iframe-has-title.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/img-redundant-alt.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/interactive-supports-focus.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/label-has-associated-control.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/label-has-for.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/lang.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/media-has-caption.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/mouse-events-have-key-events.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-access-key.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-autofocus.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-distracting-elements.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-interactive-element-to-noninteractive-role.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-noninteractive-element-interactions.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-noninteractive-element-to-interactive-role.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-noninteractive-tabindex.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-onchange.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-redundant-roles.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/no-static-element-interactions.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/role-has-required-aria-props.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/role-supports-aria-props.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/scope.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/docs/rules/tabindex-no-positive.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/accessible-emoji.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/alt-text.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/anchor-has-content.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/anchor-is-valid.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/aria-activedescendant-has-tabindex.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/aria-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/aria-proptypes.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/aria-role.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/aria-unsupported-elements.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/click-events-have-key-events.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/control-has-associated-label.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/heading-has-content.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/html-has-lang.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/iframe-has-title.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/img-redundant-alt.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/interactive-supports-focus.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/label-has-associated-control.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/label-has-for.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/lang.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/media-has-caption.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/mouse-events-have-key-events.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-access-key.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-autofocus.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-distracting-elements.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-interactive-element-to-noninteractive-role.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-noninteractive-element-interactions.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-noninteractive-element-to-interactive-role.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-noninteractive-tabindex.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-onchange.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-redundant-roles.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/no-static-element-interactions.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/role-has-required-aria-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/role-supports-aria-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/scope.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/rules/tabindex-no-positive.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/attributes/ISO.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/attributesComparator.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/getComputedRole.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/getExplicitRole.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/getImplicitRole.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/getSuggestion.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/getTabIndex.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/hasAccessibleChild.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/a.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/area.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/article.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/aside.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/body.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/button.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/datalist.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/details.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/dialog.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/dl.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/form.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/h1.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/h2.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/h3.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/h4.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/h5.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/h6.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/hr.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/img.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/input.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/li.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/link.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/menu.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/menuitem.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/meter.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/nav.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/ol.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/option.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/output.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/progress.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/section.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/select.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/tbody.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/textarea.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/tfoot.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/thead.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/implicitRoles/ul.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isAbstractRole.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isDOMElement.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isDisabledElement.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isHiddenFromScreenReader.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isInteractiveElement.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isInteractiveRole.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isNonInteractiveElement.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isNonInteractiveRole.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isNonLiteralProperty.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isPresentationRole.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/isSemanticRoleElement.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/mayContainChildComponent.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/mayHaveAccessibleLabel.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/lib/util/schemas.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/es2015/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/es2015/text.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex/text.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/scripts/addRuleToIndex.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/scripts/boilerplate/doc.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/scripts/boilerplate/rule.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/scripts/boilerplate/test.js create mode 100755 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/scripts/create-rule.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/scripts/create-rule.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react-hooks/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react-hooks/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react-hooks/build-info.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.development.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react-hooks/cjs/eslint-plugin-react-hooks.production.min.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react-hooks/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react-hooks/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/boolean-prop-naming.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/button-has-type.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/default-props-match-prop-types.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/destructuring-assignment.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/display-name.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/forbid-component-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/forbid-dom-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/forbid-elements.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/forbid-foreign-prop-types.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/forbid-prop-types.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/function-component-definition.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-boolean-value.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-child-element-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-closing-bracket-location.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-closing-tag-location.js create mode 100755 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-curly-brace-presence.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-curly-newline.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-curly-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-equals-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-filename-extension.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-first-prop-new-line.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-fragments.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-handler-names.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-indent-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-indent.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-key.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-max-depth.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-max-props-per-line.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-bind.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-comment-textnodes.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-duplicate-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-literals.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-script-url.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-target-blank.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-undef.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-no-useless-fragment.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-one-expression-per-line.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-pascal-case.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-multi-spaces.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-props-no-spreading.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-sort-default-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-sort-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-space-before-closing.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-tag-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-uses-react.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-uses-vars.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/jsx-wrap-multilines.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-access-state-in-setstate.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-adjacent-inline-elements.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-array-index-key.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-children-prop.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-danger-with-children.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-danger.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-deprecated.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-did-mount-set-state.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-did-update-set-state.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-direct-mutation-state.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-find-dom-node.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-is-mounted.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-multi-comp.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-redundant-should-component-update.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-render-return-value.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-set-state.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-string-refs.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-this-in-sfc.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-typos.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-unescaped-entities.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-unknown-property.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-unsafe.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-unused-prop-types.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-unused-state.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/no-will-update-set-state.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/prefer-es6-class.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/prefer-read-only-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/prefer-stateless-function.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/prop-types.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/react-in-jsx-scope.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/require-default-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/require-optimization.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/require-render-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/self-closing-comp.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/sort-comp.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/sort-prop-types.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/state-in-constructor.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/static-property-placement.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/style-prop-object.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/types.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/Components.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/annotations.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/ast.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/defaultProps.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/docsUrl.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/error.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/getTokenBeforeClosingBracket.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/jsx.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/linkComponents.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/log.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/makeNoMethodSetStateRule.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/pragma.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/propTypes.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/propTypesSort.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/propWrapper.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/props.js create mode 100755 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/usedPropTypes.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/variable.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/lib/util/version.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/LICENSE.closure-compiler create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/LICENSE.esprima create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/lib/doctrine.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/lib/typed.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/lib/utility.js create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/node_modules/doctrine/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-plugin-react/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-utils/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-utils/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-utils/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-utils/index.js.map create mode 100644 tic-tac-toe-app/node_modules/eslint-utils/index.mjs create mode 100644 tic-tac-toe-app/node_modules/eslint-utils/index.mjs.map create mode 100644 tic-tac-toe-app/node_modules/eslint-utils/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint-visitor-keys/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint-visitor-keys/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint-visitor-keys/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint-visitor-keys/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint-visitor-keys/lib/visitor-keys.json create mode 100644 tic-tac-toe-app/node_modules/eslint-visitor-keys/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint/README.md create mode 100755 tic-tac-toe-app/node_modules/eslint/bin/eslint.js create mode 100644 tic-tac-toe-app/node_modules/eslint/conf/category-list.json create mode 100644 tic-tac-toe-app/node_modules/eslint/conf/config-schema.js create mode 100644 tic-tac-toe-app/node_modules/eslint/conf/default-cli-options.js create mode 100644 tic-tac-toe-app/node_modules/eslint/conf/environments.js create mode 100644 tic-tac-toe-app/node_modules/eslint/conf/eslint-all.js create mode 100644 tic-tac-toe-app/node_modules/eslint/conf/eslint-recommended.js create mode 100644 tic-tac-toe-app/node_modules/eslint/conf/replacements.json create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/api.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/cli-engine.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/config-array-factory.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/config-array/config-array.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/config-array/config-dependency.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/config-array/extracted-config.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/config-array/ignore-pattern.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/config-array/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/config-array/override-tester.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/file-enumerator.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/checkstyle.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/codeframe.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/compact.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/html-template-message.html create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/html-template-page.html create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/html-template-result.html create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/html.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/jslint-xml.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/json-with-metadata.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/json.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/junit.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/stylish.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/table.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/tap.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/unix.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/formatters/visualstudio.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/hash.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/lint-result-cache.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/load-rules.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli-engine/xml-escape.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/cli.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/init/autoconfig.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/init/config-file.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/init/config-initializer.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/init/config-rule.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/init/npm-utils.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/init/source-code-utils.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/apply-disable-directives.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/code-path-analysis/code-path-analyzer.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/code-path-analysis/code-path-segment.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/code-path-analysis/code-path-state.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/code-path-analysis/code-path.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/code-path-analysis/debug-helpers.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/code-path-analysis/fork-context.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/code-path-analysis/id-generator.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/config-comment-parser.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/interpolate.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/linter.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/node-event-generator.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/report-translator.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/rule-fixer.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/rules.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/safe-emitter.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/source-code-fixer.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/linter/timing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/options.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rule-tester/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rule-tester/rule-tester.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/accessor-pairs.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/array-bracket-newline.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/array-bracket-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/array-callback-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/array-element-newline.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/arrow-body-style.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/arrow-parens.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/arrow-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/block-scoped-var.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/block-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/brace-style.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/callback-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/camelcase.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/capitalized-comments.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/class-methods-use-this.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/comma-dangle.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/comma-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/comma-style.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/complexity.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/computed-property-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/consistent-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/consistent-this.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/constructor-super.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/curly.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/default-case.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/default-param-last.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/dot-location.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/dot-notation.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/eol-last.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/eqeqeq.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/for-direction.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/func-call-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/func-name-matching.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/func-names.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/func-style.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/function-call-argument-newline.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/function-paren-newline.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/generator-star-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/getter-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/global-require.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/grouped-accessor-pairs.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/guard-for-in.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/handle-callback-err.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/id-blacklist.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/id-length.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/id-match.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/implicit-arrow-linebreak.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/indent-legacy.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/indent.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/init-declarations.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/jsx-quotes.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/key-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/keyword-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/line-comment-position.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/linebreak-style.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/lines-around-comment.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/lines-around-directive.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/lines-between-class-members.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-classes-per-file.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-depth.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-len.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-lines-per-function.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-lines.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-nested-callbacks.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-params.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-statements-per-line.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/max-statements.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/multiline-comment-style.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/multiline-ternary.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/new-cap.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/new-parens.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/newline-after-var.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/newline-before-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/newline-per-chained-call.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-alert.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-array-constructor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-async-promise-executor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-await-in-loop.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-bitwise.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-buffer-constructor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-caller.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-case-declarations.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-catch-shadow.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-class-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-compare-neg-zero.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-cond-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-confusing-arrow.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-console.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-const-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-constant-condition.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-constructor-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-continue.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-control-regex.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-debugger.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-delete-var.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-div-regex.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-dupe-args.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-dupe-class-members.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-dupe-else-if.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-dupe-keys.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-duplicate-case.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-duplicate-imports.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-else-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-empty-character-class.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-empty-function.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-empty-pattern.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-empty.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-eq-null.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-eval.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-ex-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-extend-native.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-extra-bind.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-extra-boolean-cast.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-extra-label.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-extra-parens.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-extra-semi.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-fallthrough.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-floating-decimal.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-func-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-global-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-implicit-coercion.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-implicit-globals.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-implied-eval.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-import-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-inline-comments.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-inner-declarations.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-invalid-regexp.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-invalid-this.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-irregular-whitespace.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-iterator.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-label-var.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-labels.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-lone-blocks.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-lonely-if.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-loop-func.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-magic-numbers.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-misleading-character-class.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-mixed-operators.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-mixed-requires.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-mixed-spaces-and-tabs.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-multi-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-multi-spaces.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-multi-str.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-multiple-empty-lines.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-native-reassign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-negated-condition.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-negated-in-lhs.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-nested-ternary.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-new-func.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-new-object.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-new-require.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-new-symbol.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-new-wrappers.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-new.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-obj-calls.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-octal-escape.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-octal.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-param-reassign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-path-concat.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-plusplus.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-process-env.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-process-exit.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-proto.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-prototype-builtins.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-redeclare.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-regex-spaces.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-restricted-globals.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-restricted-imports.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-restricted-modules.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-restricted-properties.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-restricted-syntax.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-return-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-return-await.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-script-url.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-self-assign.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-self-compare.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-sequences.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-setter-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-shadow-restricted-names.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-shadow.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-spaced-func.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-sparse-arrays.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-sync.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-tabs.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-template-curly-in-string.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-ternary.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-this-before-super.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-throw-literal.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-trailing-spaces.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-undef-init.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-undef.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-undefined.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-underscore-dangle.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unexpected-multiline.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unneeded-ternary.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unreachable.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unsafe-finally.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unsafe-negation.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unused-expressions.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unused-labels.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-unused-vars.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-use-before-define.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-call.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-catch.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-computed-key.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-concat.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-constructor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-escape.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-rename.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-useless-return.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-var.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-void.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-warning-comments.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-whitespace-before-property.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/no-with.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/nonblock-statement-body-position.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/object-curly-newline.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/object-curly-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/object-property-newline.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/object-shorthand.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/one-var-declaration-per-line.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/one-var.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/operator-assignment.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/operator-linebreak.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/padded-blocks.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/padding-line-between-statements.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-arrow-callback.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-const.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-destructuring.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-named-capture-group.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-numeric-literals.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-object-spread.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-reflect.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-regex-literals.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-rest-params.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-spread.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/prefer-template.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/quote-props.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/quotes.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/radix.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/require-atomic-updates.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/require-await.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/require-jsdoc.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/require-unicode-regexp.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/require-yield.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/rest-spread-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/semi-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/semi-style.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/semi.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/sort-imports.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/sort-keys.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/sort-vars.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/space-before-blocks.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/space-before-function-paren.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/space-in-parens.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/space-infix-ops.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/space-unary-ops.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/spaced-comment.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/strict.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/switch-colon-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/symbol-description.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/template-curly-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/template-tag-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/unicode-bom.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/use-isnan.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/ast-utils.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/fix-tracker.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/keywords.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/lazy-loading-rule-map.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/patterns/letters.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/unicode/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/unicode/is-combining-character.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/unicode/is-emoji-modifier.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/unicode/is-regional-indicator-symbol.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/utils/unicode/is-surrogate-pair.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/valid-jsdoc.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/valid-typeof.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/vars-on-top.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/wrap-iife.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/wrap-regex.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/yield-star-spacing.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/rules/yoda.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/ajv.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/ast-utils.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/config-ops.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/config-validator.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/logging.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/naming.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/relative-module-resolver.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/runtime-info.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/traverser.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/shared/types.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/source-code.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/backward-token-comment-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/backward-token-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/cursors.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/decorative-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/filter-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/forward-token-comment-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/forward-token-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/limit-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/padded-token-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/skip-cursor.js create mode 100644 tic-tac-toe-app/node_modules/eslint/lib/source-code/token-store/utils.js create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/all-files-ignored.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/extend-config-missing.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/failed-to-read-json.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/file-not-found.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/no-config-found.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/plugin-missing.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/print-config-with-directory-path.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/messages/whitespace-found.txt create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/.tonic_example.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/dist/ajv.bundle.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/dist/ajv.min.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/dist/ajv.min.js.map create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/ajv.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/ajv.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/cache.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/async.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/equal.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/error_classes.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/formats.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/resolve.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/rules.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/schema_obj.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/ucs2length.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/compile/util.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/data.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/definition_schema.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/_limit.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/_limitItems.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/_limitLength.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/_limitProperties.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/allOf.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/anyOf.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/coerce.def create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/comment.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/const.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/contains.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/custom.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/defaults.def create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/definitions.def create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/dependencies.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/enum.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/errors.def create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/format.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/if.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/items.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/missing.def create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/multipleOf.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/not.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/oneOf.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/pattern.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/properties.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/propertyNames.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/ref.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/required.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/uniqueItems.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dot/validate.jst create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/_limit.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitItems.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitLength.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/_limitProperties.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/allOf.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/anyOf.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/comment.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/const.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/contains.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/custom.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/dependencies.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/enum.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/format.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/if.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/items.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/multipleOf.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/not.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/oneOf.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/pattern.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/properties.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/propertyNames.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/ref.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/required.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/uniqueItems.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/dotjs/validate.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/keyword.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/refs/data.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-04.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-06.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-draft-07.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/lib/refs/json-schema-secure.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/scripts/.eslintrc.yml create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/scripts/bundle.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/scripts/compile-dots.js create mode 100755 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/scripts/info create mode 100755 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/scripts/prepare-tests create mode 100755 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/scripts/publish-built-version create mode 100755 tic-tac-toe-app/node_modules/eslint/node_modules/ajv/scripts/travis-gh-pages create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ansi-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ansi-regex/license create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ansi-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ansi-regex/readme.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/lib/enoent.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/lib/parse.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/lib/util/escape.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/lib/util/readShebang.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/lib/util/resolveCommand.js create mode 120000 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/.bin/semver create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/semver/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/semver/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/semver/README.md create mode 100755 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/semver/bin/semver create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/semver/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/semver/range.bnf create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/node_modules/semver/semver.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/cross-spawn/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/dist/debug.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/src/browser.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/src/common.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/src/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/debug/src/node.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/LICENSE create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/README.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/es6/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/es6/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/es6/react.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/es6/react.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/react.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/fast-deep-equal/react.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ms/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ms/license.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ms/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/ms/readme.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-ansi/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-ansi/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-ansi/license create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-ansi/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-ansi/readme.md create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-json-comments/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-json-comments/index.js create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-json-comments/license create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-json-comments/package.json create mode 100644 tic-tac-toe-app/node_modules/eslint/node_modules/strip-json-comments/readme.md create mode 100644 tic-tac-toe-app/node_modules/eslint/package.json create mode 100644 tic-tac-toe-app/node_modules/espree/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/espree/LICENSE create mode 100644 tic-tac-toe-app/node_modules/espree/README.md create mode 100644 tic-tac-toe-app/node_modules/espree/espree.js create mode 100644 tic-tac-toe-app/node_modules/espree/lib/ast-node-types.js create mode 100644 tic-tac-toe-app/node_modules/espree/lib/espree.js create mode 100644 tic-tac-toe-app/node_modules/espree/lib/features.js create mode 100644 tic-tac-toe-app/node_modules/espree/lib/options.js create mode 100644 tic-tac-toe-app/node_modules/espree/lib/token-translator.js create mode 100644 tic-tac-toe-app/node_modules/espree/lib/visitor-keys.js create mode 100644 tic-tac-toe-app/node_modules/espree/package.json create mode 100644 tic-tac-toe-app/node_modules/esrecurse/.babelrc create mode 100644 tic-tac-toe-app/node_modules/esrecurse/README.md create mode 100644 tic-tac-toe-app/node_modules/esrecurse/esrecurse.js create mode 100644 tic-tac-toe-app/node_modules/esrecurse/gulpfile.babel.js create mode 100755 tic-tac-toe-app/node_modules/esrecurse/package.json create mode 100644 tic-tac-toe-app/node_modules/estraverse/.jshintrc create mode 100644 tic-tac-toe-app/node_modules/estraverse/LICENSE.BSD create mode 100644 tic-tac-toe-app/node_modules/estraverse/README.md create mode 100644 tic-tac-toe-app/node_modules/estraverse/estraverse.js create mode 100644 tic-tac-toe-app/node_modules/estraverse/gulpfile.js create mode 100644 tic-tac-toe-app/node_modules/estraverse/package.json create mode 100644 tic-tac-toe-app/node_modules/external-editor/LICENSE create mode 100644 tic-tac-toe-app/node_modules/external-editor/README.md create mode 100644 tic-tac-toe-app/node_modules/external-editor/example_async.js create mode 100644 tic-tac-toe-app/node_modules/external-editor/example_sync.js create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/CreateFileError.d.ts create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/CreateFileError.js create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/LaunchEditorError.d.ts create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/LaunchEditorError.js create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/ReadFileError.d.ts create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/ReadFileError.js create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/RemoveFileError.d.ts create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/errors/RemoveFileError.js create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/external-editor/main/index.js create mode 100644 tic-tac-toe-app/node_modules/external-editor/package.json create mode 100644 tic-tac-toe-app/node_modules/fast-deep-equal/LICENSE create mode 100644 tic-tac-toe-app/node_modules/fast-deep-equal/README.md create mode 100644 tic-tac-toe-app/node_modules/fast-deep-equal/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/fast-deep-equal/index.js create mode 100644 tic-tac-toe-app/node_modules/fast-deep-equal/package.json create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/.eslintrc.yml create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/LICENSE create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/README.md create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/benchmark/index.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/benchmark/test.json create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/example/key_cmp.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/example/nested.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/example/str.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/example/value_cmp.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/index.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/package.json create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/test/cmp.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/test/nested.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/test/str.js create mode 100644 tic-tac-toe-app/node_modules/fast-json-stable-stringify/test/to-json.js create mode 100644 tic-tac-toe-app/node_modules/fast-levenshtein/LICENSE.md create mode 100644 tic-tac-toe-app/node_modules/fast-levenshtein/README.md create mode 100644 tic-tac-toe-app/node_modules/fast-levenshtein/levenshtein.js create mode 100644 tic-tac-toe-app/node_modules/fast-levenshtein/package.json create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/.npmignore create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/LICENSE create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/README.md create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/node_modules/punycode/LICENSE-MIT.txt create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/node_modules/punycode/README.md create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/node_modules/punycode/package.json create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/node_modules/punycode/punycode.js create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/package.json create mode 100644 tic-tac-toe-app/node_modules/fast-url-parser/src/urlparser.js create mode 100644 tic-tac-toe-app/node_modules/figures/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/figures/index.js create mode 100644 tic-tac-toe-app/node_modules/figures/license create mode 100644 tic-tac-toe-app/node_modules/figures/package.json create mode 100644 tic-tac-toe-app/node_modules/figures/readme.md create mode 100644 tic-tac-toe-app/node_modules/file-entry-cache/LICENSE create mode 100644 tic-tac-toe-app/node_modules/file-entry-cache/README.md create mode 100644 tic-tac-toe-app/node_modules/file-entry-cache/cache.js create mode 100644 tic-tac-toe-app/node_modules/file-entry-cache/changelog.md create mode 100644 tic-tac-toe-app/node_modules/file-entry-cache/package.json create mode 100644 tic-tac-toe-app/node_modules/find-up/index.js create mode 100644 tic-tac-toe-app/node_modules/find-up/license create mode 100644 tic-tac-toe-app/node_modules/find-up/package.json create mode 100644 tic-tac-toe-app/node_modules/find-up/readme.md create mode 100644 tic-tac-toe-app/node_modules/flat-cache/LICENSE create mode 100644 tic-tac-toe-app/node_modules/flat-cache/README.md create mode 100644 tic-tac-toe-app/node_modules/flat-cache/cache.js create mode 100644 tic-tac-toe-app/node_modules/flat-cache/changelog.md create mode 100644 tic-tac-toe-app/node_modules/flat-cache/del.js create mode 100644 tic-tac-toe-app/node_modules/flat-cache/package.json create mode 100644 tic-tac-toe-app/node_modules/flat-cache/utils.js create mode 100644 tic-tac-toe-app/node_modules/flatted/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/flatted/LICENSE create mode 100644 tic-tac-toe-app/node_modules/flatted/README.md create mode 100644 tic-tac-toe-app/node_modules/flatted/SPECS.md create mode 100644 tic-tac-toe-app/node_modules/flatted/cjs/index.js create mode 100644 tic-tac-toe-app/node_modules/flatted/esm/index.js create mode 100644 tic-tac-toe-app/node_modules/flatted/index.js create mode 100644 tic-tac-toe-app/node_modules/flatted/min.js create mode 100644 tic-tac-toe-app/node_modules/flatted/package.json create mode 100644 tic-tac-toe-app/node_modules/flatted/types.d.ts create mode 100644 tic-tac-toe-app/node_modules/fs.realpath/LICENSE create mode 100644 tic-tac-toe-app/node_modules/fs.realpath/README.md create mode 100644 tic-tac-toe-app/node_modules/fs.realpath/index.js create mode 100644 tic-tac-toe-app/node_modules/fs.realpath/old.js create mode 100644 tic-tac-toe-app/node_modules/fs.realpath/package.json create mode 100644 tic-tac-toe-app/node_modules/function-bind/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/function-bind/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/function-bind/.jscs.json create mode 100644 tic-tac-toe-app/node_modules/function-bind/.npmignore create mode 100644 tic-tac-toe-app/node_modules/function-bind/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/function-bind/LICENSE create mode 100644 tic-tac-toe-app/node_modules/function-bind/README.md create mode 100644 tic-tac-toe-app/node_modules/function-bind/implementation.js create mode 100644 tic-tac-toe-app/node_modules/function-bind/index.js create mode 100644 tic-tac-toe-app/node_modules/function-bind/package.json create mode 100644 tic-tac-toe-app/node_modules/function-bind/test/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/function-bind/test/index.js create mode 100644 tic-tac-toe-app/node_modules/functional-red-black-tree/.npmignore create mode 100644 tic-tac-toe-app/node_modules/functional-red-black-tree/LICENSE create mode 100644 tic-tac-toe-app/node_modules/functional-red-black-tree/README.md create mode 100644 tic-tac-toe-app/node_modules/functional-red-black-tree/bench/test.js create mode 100644 tic-tac-toe-app/node_modules/functional-red-black-tree/package.json create mode 100644 tic-tac-toe-app/node_modules/functional-red-black-tree/rbtree.js create mode 100644 tic-tac-toe-app/node_modules/functional-red-black-tree/test/test.js create mode 100644 tic-tac-toe-app/node_modules/get-stream/buffer-stream.js create mode 100644 tic-tac-toe-app/node_modules/get-stream/index.js create mode 100644 tic-tac-toe-app/node_modules/get-stream/license create mode 100644 tic-tac-toe-app/node_modules/get-stream/package.json create mode 100644 tic-tac-toe-app/node_modules/get-stream/readme.md create mode 100644 tic-tac-toe-app/node_modules/glob-parent/LICENSE create mode 100644 tic-tac-toe-app/node_modules/glob-parent/README.md create mode 100644 tic-tac-toe-app/node_modules/glob-parent/index.js create mode 100644 tic-tac-toe-app/node_modules/glob-parent/package.json create mode 100644 tic-tac-toe-app/node_modules/glob/LICENSE create mode 100644 tic-tac-toe-app/node_modules/glob/README.md create mode 100644 tic-tac-toe-app/node_modules/glob/changelog.md create mode 100644 tic-tac-toe-app/node_modules/glob/common.js create mode 100644 tic-tac-toe-app/node_modules/glob/glob.js create mode 100644 tic-tac-toe-app/node_modules/glob/package.json create mode 100644 tic-tac-toe-app/node_modules/glob/sync.js create mode 100644 tic-tac-toe-app/node_modules/graceful-fs/LICENSE create mode 100644 tic-tac-toe-app/node_modules/graceful-fs/README.md create mode 100644 tic-tac-toe-app/node_modules/graceful-fs/clone.js create mode 100644 tic-tac-toe-app/node_modules/graceful-fs/graceful-fs.js create mode 100644 tic-tac-toe-app/node_modules/graceful-fs/legacy-streams.js create mode 100644 tic-tac-toe-app/node_modules/graceful-fs/package.json create mode 100644 tic-tac-toe-app/node_modules/graceful-fs/polyfills.js create mode 100644 tic-tac-toe-app/node_modules/has-flag/index.js create mode 100644 tic-tac-toe-app/node_modules/has-flag/license create mode 100644 tic-tac-toe-app/node_modules/has-flag/package.json create mode 100644 tic-tac-toe-app/node_modules/has-flag/readme.md create mode 100644 tic-tac-toe-app/node_modules/has-symbols/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/has-symbols/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/has-symbols/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/has-symbols/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/has-symbols/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/has-symbols/LICENSE create mode 100644 tic-tac-toe-app/node_modules/has-symbols/README.md create mode 100644 tic-tac-toe-app/node_modules/has-symbols/index.js create mode 100644 tic-tac-toe-app/node_modules/has-symbols/package.json create mode 100644 tic-tac-toe-app/node_modules/has-symbols/shams.js create mode 100644 tic-tac-toe-app/node_modules/has-symbols/test/index.js create mode 100644 tic-tac-toe-app/node_modules/has-symbols/test/shams/core-js.js create mode 100644 tic-tac-toe-app/node_modules/has-symbols/test/shams/get-own-property-symbols.js create mode 100644 tic-tac-toe-app/node_modules/has-symbols/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/has/LICENSE-MIT create mode 100644 tic-tac-toe-app/node_modules/has/README.md create mode 100644 tic-tac-toe-app/node_modules/has/package.json create mode 100644 tic-tac-toe-app/node_modules/has/src/index.js create mode 100644 tic-tac-toe-app/node_modules/has/test/index.js create mode 100644 tic-tac-toe-app/node_modules/hosted-git-info/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/hosted-git-info/LICENSE create mode 100644 tic-tac-toe-app/node_modules/hosted-git-info/README.md create mode 100644 tic-tac-toe-app/node_modules/hosted-git-info/git-host-info.js create mode 100644 tic-tac-toe-app/node_modules/hosted-git-info/git-host.js create mode 100644 tic-tac-toe-app/node_modules/hosted-git-info/index.js create mode 100644 tic-tac-toe-app/node_modules/hosted-git-info/package.json create mode 100644 tic-tac-toe-app/node_modules/ignore/CHANGELOG.md create mode 100755 tic-tac-toe-app/node_modules/ignore/LICENSE-MIT create mode 100755 tic-tac-toe-app/node_modules/ignore/README.md create mode 100644 tic-tac-toe-app/node_modules/ignore/index.d.ts create mode 100755 tic-tac-toe-app/node_modules/ignore/index.js create mode 100644 tic-tac-toe-app/node_modules/ignore/legacy.js create mode 100644 tic-tac-toe-app/node_modules/ignore/package.json create mode 100644 tic-tac-toe-app/node_modules/import-fresh/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/import-fresh/index.js create mode 100644 tic-tac-toe-app/node_modules/import-fresh/license create mode 100644 tic-tac-toe-app/node_modules/import-fresh/package.json create mode 100644 tic-tac-toe-app/node_modules/import-fresh/readme.md create mode 100644 tic-tac-toe-app/node_modules/inflight/LICENSE create mode 100644 tic-tac-toe-app/node_modules/inflight/README.md create mode 100644 tic-tac-toe-app/node_modules/inflight/inflight.js create mode 100644 tic-tac-toe-app/node_modules/inflight/package.json create mode 100644 tic-tac-toe-app/node_modules/inherits/LICENSE create mode 100644 tic-tac-toe-app/node_modules/inherits/README.md create mode 100644 tic-tac-toe-app/node_modules/inherits/inherits.js create mode 100644 tic-tac-toe-app/node_modules/inherits/inherits_browser.js create mode 100644 tic-tac-toe-app/node_modules/inherits/package.json create mode 100644 tic-tac-toe-app/node_modules/ini/LICENSE create mode 100644 tic-tac-toe-app/node_modules/ini/README.md create mode 100644 tic-tac-toe-app/node_modules/ini/ini.js create mode 100644 tic-tac-toe-app/node_modules/ini/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/LICENSE create mode 100644 tic-tac-toe-app/node_modules/inquirer/README.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/inquirer.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/objects/choice.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/objects/choices.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/objects/separator.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/base.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/checkbox.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/confirm.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/editor.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/expand.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/input.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/list.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/number.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/password.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/prompts/rawlist.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/ui/baseUI.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/ui/bottom-bar.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/ui/prompt.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/utils/events.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/utils/paginator.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/utils/readline.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/utils/screen-manager.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/lib/utils/utils.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-regex/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-regex/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-regex/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-styles/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-styles/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-styles/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-styles/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-styles/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/chalk/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/chalk/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/chalk/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/chalk/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/chalk/source/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/chalk/source/templates.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/chalk/source/util.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-convert/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-convert/LICENSE create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-convert/README.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-convert/conversions.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-convert/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-convert/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-convert/route.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-name/LICENSE create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-name/README.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-name/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/color-name/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/has-flag/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/has-flag/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/has-flag/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/has-flag/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/has-flag/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/is-fullwidth-code-point/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/is-fullwidth-code-point/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/is-fullwidth-code-point/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/is-fullwidth-code-point/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/is-fullwidth-code-point/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/string-width/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/string-width/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/string-width/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/string-width/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/string-width/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/strip-ansi/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/strip-ansi/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/strip-ansi/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/strip-ansi/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/strip-ansi/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/supports-color/browser.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/supports-color/index.js create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/supports-color/license create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/supports-color/package.json create mode 100644 tic-tac-toe-app/node_modules/inquirer/node_modules/supports-color/readme.md create mode 100644 tic-tac-toe-app/node_modules/inquirer/package.json create mode 100644 tic-tac-toe-app/node_modules/internal-slot/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/internal-slot/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/internal-slot/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/internal-slot/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/internal-slot/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/internal-slot/LICENSE create mode 100644 tic-tac-toe-app/node_modules/internal-slot/README.md create mode 100644 tic-tac-toe-app/node_modules/internal-slot/index.js create mode 100644 tic-tac-toe-app/node_modules/internal-slot/package.json create mode 100644 tic-tac-toe-app/node_modules/internal-slot/test/index.js create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/.istanbul.yml create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/.npmignore create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/LICENSE create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/README.md create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/index.js create mode 100644 tic-tac-toe-app/node_modules/is-arrayish/package.json create mode 100644 tic-tac-toe-app/node_modules/is-callable/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/is-callable/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/is-callable/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/is-callable/.github/main.workflow create mode 100644 tic-tac-toe-app/node_modules/is-callable/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/is-callable/.istanbul.yml create mode 100644 tic-tac-toe-app/node_modules/is-callable/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/is-callable/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/is-callable/LICENSE create mode 100644 tic-tac-toe-app/node_modules/is-callable/README.md create mode 100644 tic-tac-toe-app/node_modules/is-callable/index.js create mode 100644 tic-tac-toe-app/node_modules/is-callable/package.json create mode 100644 tic-tac-toe-app/node_modules/is-callable/test/index.js create mode 100644 tic-tac-toe-app/node_modules/is-date-object/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/is-date-object/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/is-date-object/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/is-date-object/.jscs.json create mode 100644 tic-tac-toe-app/node_modules/is-date-object/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/is-date-object/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/is-date-object/LICENSE create mode 100644 tic-tac-toe-app/node_modules/is-date-object/README.md create mode 100644 tic-tac-toe-app/node_modules/is-date-object/index.js create mode 100644 tic-tac-toe-app/node_modules/is-date-object/package.json create mode 100644 tic-tac-toe-app/node_modules/is-date-object/test/index.js create mode 100644 tic-tac-toe-app/node_modules/is-extglob/LICENSE create mode 100644 tic-tac-toe-app/node_modules/is-extglob/README.md create mode 100644 tic-tac-toe-app/node_modules/is-extglob/index.js create mode 100644 tic-tac-toe-app/node_modules/is-extglob/package.json create mode 100644 tic-tac-toe-app/node_modules/is-fullwidth-code-point/index.js create mode 100644 tic-tac-toe-app/node_modules/is-fullwidth-code-point/license create mode 100644 tic-tac-toe-app/node_modules/is-fullwidth-code-point/package.json create mode 100644 tic-tac-toe-app/node_modules/is-fullwidth-code-point/readme.md create mode 100644 tic-tac-toe-app/node_modules/is-glob/LICENSE create mode 100644 tic-tac-toe-app/node_modules/is-glob/README.md create mode 100644 tic-tac-toe-app/node_modules/is-glob/index.js create mode 100644 tic-tac-toe-app/node_modules/is-glob/package.json create mode 100644 tic-tac-toe-app/node_modules/is-stream/index.js create mode 100644 tic-tac-toe-app/node_modules/is-stream/license create mode 100644 tic-tac-toe-app/node_modules/is-stream/package.json create mode 100644 tic-tac-toe-app/node_modules/is-stream/readme.md create mode 100644 tic-tac-toe-app/node_modules/is-string/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/is-string/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/is-string/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/is-string/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/is-string/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/is-string/LICENSE create mode 100644 tic-tac-toe-app/node_modules/is-string/README.md create mode 100644 tic-tac-toe-app/node_modules/is-string/index.js create mode 100644 tic-tac-toe-app/node_modules/is-string/package.json create mode 100644 tic-tac-toe-app/node_modules/is-string/test/index.js create mode 100644 tic-tac-toe-app/node_modules/is-symbol/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/is-symbol/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/is-symbol/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/is-symbol/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/is-symbol/.nvmrc create mode 100644 tic-tac-toe-app/node_modules/is-symbol/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/is-symbol/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/is-symbol/LICENSE create mode 100644 tic-tac-toe-app/node_modules/is-symbol/Makefile create mode 100644 tic-tac-toe-app/node_modules/is-symbol/README.md create mode 100644 tic-tac-toe-app/node_modules/is-symbol/index.js create mode 100644 tic-tac-toe-app/node_modules/is-symbol/package.json create mode 100644 tic-tac-toe-app/node_modules/is-symbol/test/index.js create mode 100644 tic-tac-toe-app/node_modules/isarray/.npmignore create mode 100644 tic-tac-toe-app/node_modules/isarray/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/isarray/Makefile create mode 100644 tic-tac-toe-app/node_modules/isarray/README.md create mode 100644 tic-tac-toe-app/node_modules/isarray/component.json create mode 100644 tic-tac-toe-app/node_modules/isarray/index.js create mode 100644 tic-tac-toe-app/node_modules/isarray/package.json create mode 100644 tic-tac-toe-app/node_modules/isarray/test.js create mode 100644 tic-tac-toe-app/node_modules/isexe/.npmignore create mode 100644 tic-tac-toe-app/node_modules/isexe/LICENSE create mode 100644 tic-tac-toe-app/node_modules/isexe/README.md create mode 100644 tic-tac-toe-app/node_modules/isexe/index.js create mode 100644 tic-tac-toe-app/node_modules/isexe/mode.js create mode 100644 tic-tac-toe-app/node_modules/isexe/package.json create mode 100644 tic-tac-toe-app/node_modules/isexe/test/basic.js create mode 100644 tic-tac-toe-app/node_modules/isexe/windows.js create mode 100644 tic-tac-toe-app/node_modules/js-tokens/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/js-tokens/LICENSE create mode 100644 tic-tac-toe-app/node_modules/js-tokens/README.md create mode 100644 tic-tac-toe-app/node_modules/js-tokens/index.js create mode 100644 tic-tac-toe-app/node_modules/js-tokens/package.json create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/.eslintrc.yml create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/LICENSE create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/README.md create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/index.js create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/package.json create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/spec/.eslintrc.yml create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/spec/fixtures/schema.js create mode 100644 tic-tac-toe-app/node_modules/json-schema-traverse/spec/index.spec.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/.npmignore create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/LICENSE create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/example/key_cmp.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/example/nested.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/example/str.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/example/value_cmp.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/index.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/package.json create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/readme.markdown create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/test/cmp.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/test/nested.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/test/replacer.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/test/space.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/test/str.js create mode 100644 tic-tac-toe-app/node_modules/json-stable-stringify-without-jsonify/test/to-json.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/.babelrc create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/.eslintignore create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/LICENSE.md create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/README.md create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/helper.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/elementType-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/eventHandlers-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/getProp-parser-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/getProp-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/getPropLiteralValue-babelparser-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/getPropLiteralValue-flowparser-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/getPropValue-babelparser-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/getPropValue-flowparser-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/hasProp-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/index-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/__tests__/src/propName-test.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/elementType.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/eventHandlers.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/eventHandlersByType.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/getLiteralPropValue.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/getProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/getPropValue.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/hasAnyProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/hasEveryProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/hasProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/elementType.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/eventHandlers.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/getProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/getPropValue.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/hasProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/propName.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/JSXElement.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/Literal.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/ArrayExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/BinaryExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/BindExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/CallExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/ConditionalExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/FunctionExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/Identifier.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/LogicalExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/MemberExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/NewExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/ObjectExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/OptionalMemberExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/SpreadElement.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/TaggedTemplateExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/TemplateLiteral.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/ThisExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/TypeCastExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/UnaryExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/UpdateExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/expressions/index.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/lib/values/index.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/package.json create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/propName.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/elementType.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/eventHandlers.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/getProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/getPropValue.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/hasProp.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/index.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/propName.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/JSXElement.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/Literal.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/ArrayExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/BinaryExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/BindExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/CallExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/ConditionalExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/FunctionExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/Identifier.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/LogicalExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/MemberExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/NewExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/ObjectExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/OptionalMemberExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/SpreadElement.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/TaggedTemplateExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/TemplateLiteral.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/ThisExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/TypeCastExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/UnaryExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/UpdateExpression.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/expressions/index.js create mode 100644 tic-tac-toe-app/node_modules/jsx-ast-utils/src/values/index.js create mode 100644 tic-tac-toe-app/node_modules/levn/LICENSE create mode 100644 tic-tac-toe-app/node_modules/levn/README.md create mode 100644 tic-tac-toe-app/node_modules/levn/lib/cast.js create mode 100644 tic-tac-toe-app/node_modules/levn/lib/coerce.js create mode 100644 tic-tac-toe-app/node_modules/levn/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/levn/lib/parse-string.js create mode 100644 tic-tac-toe-app/node_modules/levn/lib/parse.js create mode 100644 tic-tac-toe-app/node_modules/levn/package.json create mode 100644 tic-tac-toe-app/node_modules/load-json-file/index.js create mode 100644 tic-tac-toe-app/node_modules/load-json-file/license create mode 100644 tic-tac-toe-app/node_modules/load-json-file/package.json create mode 100644 tic-tac-toe-app/node_modules/load-json-file/readme.md create mode 100644 tic-tac-toe-app/node_modules/locate-path/index.js create mode 100644 tic-tac-toe-app/node_modules/locate-path/license create mode 100644 tic-tac-toe-app/node_modules/locate-path/package.json create mode 100644 tic-tac-toe-app/node_modules/locate-path/readme.md create mode 100644 tic-tac-toe-app/node_modules/lru-cache/LICENSE create mode 100644 tic-tac-toe-app/node_modules/lru-cache/README.md create mode 100644 tic-tac-toe-app/node_modules/lru-cache/index.js create mode 100644 tic-tac-toe-app/node_modules/lru-cache/package.json create mode 100644 tic-tac-toe-app/node_modules/mime-types/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/mime-types/LICENSE create mode 100644 tic-tac-toe-app/node_modules/mime-types/README.md create mode 100644 tic-tac-toe-app/node_modules/mime-types/index.js create mode 100644 tic-tac-toe-app/node_modules/mime-types/package.json create mode 100644 tic-tac-toe-app/node_modules/mimic-fn/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/mimic-fn/index.js create mode 100644 tic-tac-toe-app/node_modules/mimic-fn/license create mode 100644 tic-tac-toe-app/node_modules/mimic-fn/package.json create mode 100644 tic-tac-toe-app/node_modules/mimic-fn/readme.md create mode 100644 tic-tac-toe-app/node_modules/minimist/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/minimist/LICENSE create mode 100644 tic-tac-toe-app/node_modules/minimist/example/parse.js create mode 100644 tic-tac-toe-app/node_modules/minimist/index.js create mode 100644 tic-tac-toe-app/node_modules/minimist/package.json create mode 100644 tic-tac-toe-app/node_modules/minimist/readme.markdown create mode 100644 tic-tac-toe-app/node_modules/minimist/test/all_bool.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/bool.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/dash.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/default_bool.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/dotted.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/kv_short.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/long.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/num.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/parse.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/parse_modified.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/proto.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/short.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/stop_early.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/unknown.js create mode 100644 tic-tac-toe-app/node_modules/minimist/test/whitespace.js create mode 100644 tic-tac-toe-app/node_modules/mkdirp/LICENSE create mode 100755 tic-tac-toe-app/node_modules/mkdirp/bin/cmd.js create mode 100644 tic-tac-toe-app/node_modules/mkdirp/bin/usage.txt create mode 100644 tic-tac-toe-app/node_modules/mkdirp/index.js create mode 100644 tic-tac-toe-app/node_modules/mkdirp/package.json create mode 100644 tic-tac-toe-app/node_modules/mkdirp/readme.markdown create mode 100644 tic-tac-toe-app/node_modules/mute-stream/LICENSE create mode 100644 tic-tac-toe-app/node_modules/mute-stream/README.md create mode 100644 tic-tac-toe-app/node_modules/mute-stream/mute.js create mode 100644 tic-tac-toe-app/node_modules/mute-stream/package.json create mode 100644 tic-tac-toe-app/node_modules/natural-compare/README.md create mode 100644 tic-tac-toe-app/node_modules/natural-compare/index.js create mode 100644 tic-tac-toe-app/node_modules/natural-compare/package.json create mode 100644 tic-tac-toe-app/node_modules/negotiator/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/negotiator/LICENSE create mode 100644 tic-tac-toe-app/node_modules/negotiator/README.md create mode 100644 tic-tac-toe-app/node_modules/negotiator/index.js create mode 100644 tic-tac-toe-app/node_modules/negotiator/lib/charset.js create mode 100644 tic-tac-toe-app/node_modules/negotiator/lib/encoding.js create mode 100644 tic-tac-toe-app/node_modules/negotiator/lib/language.js create mode 100644 tic-tac-toe-app/node_modules/negotiator/lib/mediaType.js create mode 100644 tic-tac-toe-app/node_modules/negotiator/package.json create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/AUTHORS create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/LICENSE create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/README.md create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/lib/extract_description.js create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/lib/fixer.js create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/lib/make_warning.js create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/lib/normalize.js create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/lib/safe_format.js create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/lib/typos.json create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/lib/warning_messages.json create mode 120000 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/.bin/semver create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/semver/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/semver/LICENSE create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/semver/README.md create mode 100755 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/semver/bin/semver create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/semver/package.json create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/semver/range.bnf create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/node_modules/semver/semver.js create mode 100644 tic-tac-toe-app/node_modules/normalize-package-data/package.json create mode 100644 tic-tac-toe-app/node_modules/npm-run-path/index.js create mode 100644 tic-tac-toe-app/node_modules/npm-run-path/license create mode 100644 tic-tac-toe-app/node_modules/npm-run-path/package.json create mode 100644 tic-tac-toe-app/node_modules/npm-run-path/readme.md create mode 100644 tic-tac-toe-app/node_modules/object-assign/index.js create mode 100644 tic-tac-toe-app/node_modules/object-assign/license create mode 100644 tic-tac-toe-app/node_modules/object-assign/package.json create mode 100644 tic-tac-toe-app/node_modules/object-assign/readme.md create mode 100644 tic-tac-toe-app/node_modules/object-inspect/.eslintignore create mode 100644 tic-tac-toe-app/node_modules/object-inspect/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/object-inspect/.nycrc create mode 100644 tic-tac-toe-app/node_modules/object-inspect/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/object-inspect/LICENSE create mode 100644 tic-tac-toe-app/node_modules/object-inspect/example/all.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/example/circular.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/example/fn.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/example/inspect.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/index.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/package.json create mode 100644 tic-tac-toe-app/node_modules/object-inspect/readme.markdown create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test-core-js.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/bigint.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/browser/dom.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/circular.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/deep.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/element.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/err.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/fn.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/has.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/holes.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/inspect.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/lowbyte.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/number.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/quoteStyle.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/undef.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/test/values.js create mode 100644 tic-tac-toe-app/node_modules/object-inspect/util.inspect.js create mode 100644 tic-tac-toe-app/node_modules/object-keys/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/object-keys/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/object-keys/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/object-keys/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/object-keys/LICENSE create mode 100644 tic-tac-toe-app/node_modules/object-keys/README.md create mode 100644 tic-tac-toe-app/node_modules/object-keys/implementation.js create mode 100644 tic-tac-toe-app/node_modules/object-keys/index.js create mode 100644 tic-tac-toe-app/node_modules/object-keys/isArguments.js create mode 100644 tic-tac-toe-app/node_modules/object-keys/package.json create mode 100644 tic-tac-toe-app/node_modules/object-keys/test/index.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/object.entries/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/object.entries/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/object.entries/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/object.entries/LICENSE create mode 100644 tic-tac-toe-app/node_modules/object.entries/README.md create mode 100644 tic-tac-toe-app/node_modules/object.entries/auto.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/implementation.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/index.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/package.json create mode 100644 tic-tac-toe-app/node_modules/object.entries/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/shim.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/test/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/object.entries/test/index.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/test/shimmed.js create mode 100644 tic-tac-toe-app/node_modules/object.entries/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/on-headers/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/on-headers/LICENSE create mode 100644 tic-tac-toe-app/node_modules/on-headers/README.md create mode 100644 tic-tac-toe-app/node_modules/on-headers/index.js create mode 100644 tic-tac-toe-app/node_modules/on-headers/package.json create mode 100644 tic-tac-toe-app/node_modules/once/LICENSE create mode 100644 tic-tac-toe-app/node_modules/once/README.md create mode 100644 tic-tac-toe-app/node_modules/once/once.js create mode 100644 tic-tac-toe-app/node_modules/once/package.json create mode 100644 tic-tac-toe-app/node_modules/onetime/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/onetime/index.js create mode 100644 tic-tac-toe-app/node_modules/onetime/license create mode 100644 tic-tac-toe-app/node_modules/onetime/package.json create mode 100644 tic-tac-toe-app/node_modules/onetime/readme.md create mode 100644 tic-tac-toe-app/node_modules/optionator/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/optionator/LICENSE create mode 100644 tic-tac-toe-app/node_modules/optionator/README.md create mode 100644 tic-tac-toe-app/node_modules/optionator/lib/help.js create mode 100644 tic-tac-toe-app/node_modules/optionator/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/optionator/lib/util.js create mode 100644 tic-tac-toe-app/node_modules/optionator/package.json create mode 100644 tic-tac-toe-app/node_modules/p-finally/index.js create mode 100644 tic-tac-toe-app/node_modules/p-finally/license create mode 100644 tic-tac-toe-app/node_modules/p-finally/package.json create mode 100644 tic-tac-toe-app/node_modules/p-finally/readme.md create mode 100644 tic-tac-toe-app/node_modules/p-limit/index.js create mode 100644 tic-tac-toe-app/node_modules/p-limit/license create mode 100644 tic-tac-toe-app/node_modules/p-limit/package.json create mode 100644 tic-tac-toe-app/node_modules/p-limit/readme.md create mode 100644 tic-tac-toe-app/node_modules/p-locate/index.js create mode 100644 tic-tac-toe-app/node_modules/p-locate/license create mode 100644 tic-tac-toe-app/node_modules/p-locate/package.json create mode 100644 tic-tac-toe-app/node_modules/p-locate/readme.md create mode 100644 tic-tac-toe-app/node_modules/parent-module/index.js create mode 100644 tic-tac-toe-app/node_modules/parent-module/license create mode 100644 tic-tac-toe-app/node_modules/parent-module/package.json create mode 100644 tic-tac-toe-app/node_modules/parent-module/readme.md create mode 100644 tic-tac-toe-app/node_modules/path-exists/index.js create mode 100644 tic-tac-toe-app/node_modules/path-exists/license create mode 100644 tic-tac-toe-app/node_modules/path-exists/package.json create mode 100644 tic-tac-toe-app/node_modules/path-exists/readme.md create mode 100644 tic-tac-toe-app/node_modules/path-is-absolute/index.js create mode 100644 tic-tac-toe-app/node_modules/path-is-absolute/license create mode 100644 tic-tac-toe-app/node_modules/path-is-absolute/package.json create mode 100644 tic-tac-toe-app/node_modules/path-is-absolute/readme.md create mode 100644 tic-tac-toe-app/node_modules/path-is-inside/LICENSE.txt create mode 100644 tic-tac-toe-app/node_modules/path-is-inside/lib/path-is-inside.js create mode 100644 tic-tac-toe-app/node_modules/path-is-inside/package.json create mode 100644 tic-tac-toe-app/node_modules/path-key/index.js create mode 100644 tic-tac-toe-app/node_modules/path-key/license create mode 100644 tic-tac-toe-app/node_modules/path-key/package.json create mode 100644 tic-tac-toe-app/node_modules/path-key/readme.md create mode 100644 tic-tac-toe-app/node_modules/path-parse/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/path-parse/LICENSE create mode 100644 tic-tac-toe-app/node_modules/path-parse/README.md create mode 100644 tic-tac-toe-app/node_modules/path-parse/index.js create mode 100644 tic-tac-toe-app/node_modules/path-parse/package.json create mode 100644 tic-tac-toe-app/node_modules/path-parse/test.js create mode 100644 tic-tac-toe-app/node_modules/path-type/index.js create mode 100644 tic-tac-toe-app/node_modules/path-type/license create mode 100644 tic-tac-toe-app/node_modules/path-type/package.json create mode 100644 tic-tac-toe-app/node_modules/path-type/readme.md create mode 100644 tic-tac-toe-app/node_modules/pify/index.js create mode 100644 tic-tac-toe-app/node_modules/pify/license create mode 100644 tic-tac-toe-app/node_modules/pify/package.json create mode 100644 tic-tac-toe-app/node_modules/pify/readme.md create mode 100644 tic-tac-toe-app/node_modules/pkg-dir/index.js create mode 100644 tic-tac-toe-app/node_modules/pkg-dir/license create mode 100644 tic-tac-toe-app/node_modules/pkg-dir/package.json create mode 100644 tic-tac-toe-app/node_modules/pkg-dir/readme.md create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/LICENSE create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/README.md create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/lib/Func.js create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/lib/List.js create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/lib/Num.js create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/lib/Obj.js create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/lib/Str.js create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/prelude-ls/package.json create mode 100644 tic-tac-toe-app/node_modules/prop-types/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/prop-types/LICENSE create mode 100644 tic-tac-toe-app/node_modules/prop-types/README.md create mode 100644 tic-tac-toe-app/node_modules/prop-types/checkPropTypes.js create mode 100644 tic-tac-toe-app/node_modules/prop-types/factory.js create mode 100644 tic-tac-toe-app/node_modules/prop-types/factoryWithThrowingShims.js create mode 100644 tic-tac-toe-app/node_modules/prop-types/factoryWithTypeCheckers.js create mode 100644 tic-tac-toe-app/node_modules/prop-types/index.js create mode 100644 tic-tac-toe-app/node_modules/prop-types/lib/ReactPropTypesSecret.js create mode 100644 tic-tac-toe-app/node_modules/prop-types/package.json create mode 100644 tic-tac-toe-app/node_modules/prop-types/prop-types.js create mode 100644 tic-tac-toe-app/node_modules/prop-types/prop-types.min.js create mode 100644 tic-tac-toe-app/node_modules/pseudomap/LICENSE create mode 100644 tic-tac-toe-app/node_modules/pseudomap/README.md create mode 100644 tic-tac-toe-app/node_modules/pseudomap/map.js create mode 100644 tic-tac-toe-app/node_modules/pseudomap/package.json create mode 100644 tic-tac-toe-app/node_modules/pseudomap/pseudomap.js create mode 100644 tic-tac-toe-app/node_modules/pseudomap/test/basic.js create mode 100644 tic-tac-toe-app/node_modules/punycode/LICENSE-MIT.txt create mode 100644 tic-tac-toe-app/node_modules/punycode/README.md create mode 100644 tic-tac-toe-app/node_modules/punycode/package.json create mode 100644 tic-tac-toe-app/node_modules/punycode/punycode.es6.js create mode 100644 tic-tac-toe-app/node_modules/punycode/punycode.js create mode 100644 tic-tac-toe-app/node_modules/range-parser/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/range-parser/LICENSE create mode 100644 tic-tac-toe-app/node_modules/range-parser/README.md create mode 100644 tic-tac-toe-app/node_modules/range-parser/index.js create mode 100644 tic-tac-toe-app/node_modules/range-parser/package.json create mode 100644 tic-tac-toe-app/node_modules/read-pkg-up/index.js create mode 100644 tic-tac-toe-app/node_modules/read-pkg-up/license create mode 100644 tic-tac-toe-app/node_modules/read-pkg-up/package.json create mode 100644 tic-tac-toe-app/node_modules/read-pkg-up/readme.md create mode 100644 tic-tac-toe-app/node_modules/read-pkg/index.js create mode 100644 tic-tac-toe-app/node_modules/read-pkg/license create mode 100644 tic-tac-toe-app/node_modules/read-pkg/package.json create mode 100644 tic-tac-toe-app/node_modules/read-pkg/readme.md create mode 100644 tic-tac-toe-app/node_modules/regenerator-runtime/LICENSE create mode 100644 tic-tac-toe-app/node_modules/regenerator-runtime/README.md create mode 100644 tic-tac-toe-app/node_modules/regenerator-runtime/package.json create mode 100644 tic-tac-toe-app/node_modules/regenerator-runtime/path.js create mode 100644 tic-tac-toe-app/node_modules/regenerator-runtime/runtime.js create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/LICENSE create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/README.md create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/auto.js create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/implementation.js create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/index.js create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/package.json create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/shim.js create mode 100644 tic-tac-toe-app/node_modules/regexp.prototype.flags/test/index.js create mode 100644 tic-tac-toe-app/node_modules/registry-url/index.js create mode 100644 tic-tac-toe-app/node_modules/registry-url/license create mode 100644 tic-tac-toe-app/node_modules/registry-url/package.json create mode 100644 tic-tac-toe-app/node_modules/registry-url/readme.md create mode 100644 tic-tac-toe-app/node_modules/resolve-from/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve-from/license create mode 100644 tic-tac-toe-app/node_modules/resolve-from/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve-from/readme.md create mode 100644 tic-tac-toe-app/node_modules/resolve/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/resolve/.eslintignore create mode 100644 tic-tac-toe-app/node_modules/resolve/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/resolve/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/resolve/LICENSE create mode 100644 tic-tac-toe-app/node_modules/resolve/appveyor.yml create mode 100644 tic-tac-toe-app/node_modules/resolve/example/async.js create mode 100644 tic-tac-toe-app/node_modules/resolve/example/sync.js create mode 100644 tic-tac-toe-app/node_modules/resolve/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/async.js create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/caller.js create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/core.js create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/core.json create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/is-core.js create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/node-modules-paths.js create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/normalize-options.js create mode 100644 tic-tac-toe-app/node_modules/resolve/lib/sync.js create mode 100644 tic-tac-toe-app/node_modules/resolve/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/readme.markdown create mode 100644 tic-tac-toe-app/node_modules/resolve/test/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/resolve/test/core.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/dotdot.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/dotdot/abc/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/dotdot/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/faulty_basedir.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/filter.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/filter_sync.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/mock.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/mock_sync.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/module_dir.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/module_dir/xmodules/aaa/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/module_dir/ymodules/aaa/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/module_dir/zmodules/bbb/main.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/module_dir/zmodules/bbb/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/node-modules-paths.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/node_path.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/node_path/x/aaa/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/node_path/x/ccc/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/node_path/y/bbb/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/node_path/y/ccc/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/nonstring.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/pathfilter.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/pathfilter/deep_ref/main.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/precedence.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/precedence/aaa.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/precedence/aaa/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/precedence/aaa/main.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/precedence/bbb.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/precedence/bbb/main.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/baz/doom.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/baz/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/baz/quux.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/browser_field/a.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/browser_field/b.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/browser_field/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/cup.coffee create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/dot_main/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/dot_main/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/dot_slash_main/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/dot_slash_main/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/foo.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/incorrect_main/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/incorrect_main/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/invalid_main/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/mug.coffee create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/mug.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/multirepo/lerna.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/multirepo/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/multirepo/packages/package-a/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/multirepo/packages/package-a/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/multirepo/packages/package-b/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/multirepo/packages/package-b/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/nested_symlinks/mylib/async.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/nested_symlinks/mylib/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/nested_symlinks/mylib/sync.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/other_path/lib/other-lib.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/other_path/root.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/quux/foo/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/same_names/foo.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/same_names/foo/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/symlinked/_/node_modules/foo.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/symlinked/_/symlink_target/.gitkeep create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/symlinked/package/bar.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/symlinked/package/package.json create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver/without_basedir/main.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/resolver_sync.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/shadowed_core.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/shadowed_core/node_modules/util/index.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/subdirs.js create mode 100644 tic-tac-toe-app/node_modules/resolve/test/symlinks.js create mode 100644 tic-tac-toe-app/node_modules/restore-cursor/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/restore-cursor/index.js create mode 100644 tic-tac-toe-app/node_modules/restore-cursor/license create mode 100644 tic-tac-toe-app/node_modules/restore-cursor/package.json create mode 100644 tic-tac-toe-app/node_modules/restore-cursor/readme.md create mode 100644 tic-tac-toe-app/node_modules/rimraf/LICENSE create mode 100644 tic-tac-toe-app/node_modules/rimraf/README.md create mode 100755 tic-tac-toe-app/node_modules/rimraf/bin.js create mode 100644 tic-tac-toe-app/node_modules/rimraf/package.json create mode 100644 tic-tac-toe-app/node_modules/rimraf/rimraf.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/AsyncSubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/AsyncSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/AsyncSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/BehaviorSubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/BehaviorSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/BehaviorSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/InnerSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/InnerSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/InnerSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/LICENSE.txt create mode 100644 tic-tac-toe-app/node_modules/rxjs/Notification.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Notification.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Notification.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Observable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Observer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Observer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Observer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Operator.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Operator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Operator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/OuterSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/OuterSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/OuterSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/README.md create mode 100644 tic-tac-toe-app/node_modules/rxjs/ReplaySubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/ReplaySubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/ReplaySubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Rx.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Rx.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Rx.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Scheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Scheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Scheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/SubjectSubscription.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/SubjectSubscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/SubjectSubscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subscription.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/Subscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/LICENSE.txt create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/README.md create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/ajax/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/ajax/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/fetch/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/fetch/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal-compatibility/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal-compatibility/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/AsyncSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/AsyncSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/BehaviorSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/BehaviorSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/InnerSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/InnerSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Notification.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Notification.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Observer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Observer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Operator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Operator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/OuterSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/OuterSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/ReplaySubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/ReplaySubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Rx.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Rx.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Scheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Scheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Subject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Subject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/SubjectSubscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/SubjectSubscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Subscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Subscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Subscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/Subscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/config.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/config.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/SubscribeOnObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/SubscribeOnObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/bindCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/bindCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/bindNodeCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/bindNodeCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/defer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/defer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/AjaxObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/AjaxObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/WebSocketSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/WebSocketSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/ajax.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/ajax.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/fetch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/fetch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/webSocket.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/dom/webSocket.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/empty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/empty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/forkJoin.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/forkJoin.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/from.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/from.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromEvent.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromEvent.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromEventPattern.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromEventPattern.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/fromPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/generate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/generate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/iif.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/iif.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/interval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/interval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/never.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/never.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/of.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/of.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/pairs.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/pairs.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/range.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/range.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/throwError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/throwError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/timer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/timer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/using.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/using.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/observable/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/audit.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/audit.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/auditTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/auditTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/buffer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/buffer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/bufferWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/catchError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/catchError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/combineAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/combineAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concatAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concatAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concatMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concatMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concatMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/concatMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/count.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/count.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/debounce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/debounce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/debounceTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/debounceTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/delay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/delay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/delayWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/delayWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/dematerialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/dematerialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/distinct.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/distinct.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/distinctUntilKeyChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/distinctUntilKeyChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/elementAt.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/elementAt.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/endWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/endWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/every.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/every.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/exhaust.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/exhaust.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/exhaustMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/exhaustMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/expand.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/expand.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/filter.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/filter.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/finalize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/finalize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/find.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/find.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/findIndex.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/findIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/first.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/first.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/groupBy.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/groupBy.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/ignoreElements.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/ignoreElements.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/isEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/isEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/last.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/last.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/map.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/map.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/materialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/materialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/max.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/max.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeScan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/mergeScan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/min.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/min.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/multicast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/multicast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/observeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/observeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/pairwise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/pairwise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/pluck.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/pluck.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publish.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publish.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publishBehavior.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publishBehavior.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publishLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publishLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publishReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/publishReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/reduce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/reduce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/refCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/refCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/repeat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/repeat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/repeatWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/repeatWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/retry.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/retry.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/retryWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/retryWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/sample.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/sample.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/sampleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/sampleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/scan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/scan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/sequenceEqual.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/sequenceEqual.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/share.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/share.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/shareReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/shareReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/single.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/single.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skipLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skipLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skipUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skipUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skipWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/skipWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/startWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/startWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/subscribeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/subscribeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/switchAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/switchAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/switchMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/switchMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/switchMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/switchMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/take.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/take.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/takeLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/takeLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/takeUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/takeUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/takeWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/takeWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/tap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/tap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/throttle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/throttle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/throttleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/throttleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timeInterval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timeInterval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timeout.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timeout.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timestamp.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/timestamp.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/toArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/toArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/window.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/window.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/windowWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/zipAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/operators/zipAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/Action.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/Action.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/VirtualTimeScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/VirtualTimeScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/asap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/asap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/async.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/async.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/queue.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/scheduler/queue.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/symbol/iterator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/symbol/iterator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/symbol/observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/symbol/observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/ColdObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/ColdObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/HotObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/HotObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/SubscriptionLog.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/SubscriptionLog.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/SubscriptionLoggable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/SubscriptionLoggable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/TestMessage.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/TestMessage.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/TestScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/testing/TestScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/types.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/types.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/EmptyError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/EmptyError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/Immediate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/Immediate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/TimeoutError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/TimeoutError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/applyMixins.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/applyMixins.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/canReportError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/canReportError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/errorObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/errorObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/hostReportError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/hostReportError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/identity.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/identity.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isArrayLike.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isDate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isDate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isFunction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isFunction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isNumeric.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isNumeric.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/isScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/noop.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/noop.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/not.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/not.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/pipe.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/pipe.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/root.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/root.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/toSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/toSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/tryCatch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/internal/util/tryCatch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/operators/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/operators/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/path-mapping.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/testing/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/testing/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/webSocket/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm2015/webSocket/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/LICENSE.txt create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/README.md create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/ajax/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/ajax/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/fetch/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/fetch/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal-compatibility/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal-compatibility/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/AsyncSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/AsyncSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/BehaviorSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/BehaviorSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/InnerSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/InnerSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Notification.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Notification.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Observer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Observer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Operator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Operator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/OuterSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/OuterSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/ReplaySubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/ReplaySubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Rx.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Rx.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Scheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Scheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Subject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Subject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/SubjectSubscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/SubjectSubscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Subscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Subscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Subscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/Subscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/config.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/config.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/bindCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/bindCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/defer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/defer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/WebSocketSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/WebSocketSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/ajax.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/ajax.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/fetch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/fetch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/webSocket.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/dom/webSocket.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/empty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/empty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/forkJoin.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/forkJoin.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/from.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/from.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromEvent.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromEvent.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/fromPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/generate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/generate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/iif.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/iif.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/interval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/interval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/never.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/never.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/of.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/of.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/pairs.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/pairs.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/range.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/range.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/throwError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/throwError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/timer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/timer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/using.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/using.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/observable/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/audit.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/audit.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/auditTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/auditTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/buffer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/buffer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/bufferWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/catchError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/catchError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/combineAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/combineAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concatAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concatAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concatMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concatMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concatMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/concatMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/count.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/count.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/debounce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/debounce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/debounceTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/debounceTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/delay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/delay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/delayWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/delayWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/dematerialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/dematerialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/distinct.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/distinct.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/elementAt.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/elementAt.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/endWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/endWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/every.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/every.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/exhaust.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/exhaust.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/exhaustMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/exhaustMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/expand.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/expand.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/filter.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/filter.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/finalize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/finalize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/find.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/find.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/findIndex.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/findIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/first.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/first.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/groupBy.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/groupBy.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/ignoreElements.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/ignoreElements.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/isEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/isEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/last.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/last.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/map.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/map.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/materialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/materialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/max.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/max.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeScan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/mergeScan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/min.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/min.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/multicast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/multicast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/observeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/observeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/pairwise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/pairwise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/pluck.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/pluck.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publish.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publish.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publishBehavior.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publishBehavior.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publishLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publishLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publishReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/publishReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/reduce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/reduce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/refCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/refCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/repeat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/repeat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/repeatWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/repeatWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/retry.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/retry.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/retryWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/retryWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/sample.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/sample.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/sampleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/sampleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/scan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/scan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/share.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/share.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/shareReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/shareReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/single.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/single.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skipLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skipLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skipUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skipUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skipWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/skipWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/startWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/startWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/subscribeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/subscribeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/switchAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/switchAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/switchMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/switchMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/switchMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/switchMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/take.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/take.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/takeLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/takeLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/takeUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/takeUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/takeWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/takeWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/tap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/tap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/throttle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/throttle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/throttleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/throttleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timeInterval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timeInterval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timeout.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timeout.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timeoutWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timeoutWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timestamp.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/timestamp.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/toArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/toArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/window.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/window.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/windowWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/zipAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/operators/zipAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduled.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduled/scheduled.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/Action.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/Action.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/asap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/asap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/async.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/async.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/queue.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/scheduler/queue.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/symbol/iterator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/symbol/iterator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/symbol/observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/symbol/observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/ColdObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/ColdObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/HotObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/HotObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/SubscriptionLog.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/SubscriptionLog.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/SubscriptionLoggable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/SubscriptionLoggable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/TestMessage.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/TestMessage.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/TestScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/testing/TestScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/types.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/types.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/EmptyError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/EmptyError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/Immediate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/Immediate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/TimeoutError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/TimeoutError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/applyMixins.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/applyMixins.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/canReportError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/canReportError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/errorObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/errorObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/hostReportError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/hostReportError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/identity.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/identity.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isArrayLike.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isDate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isDate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isFunction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isFunction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isInteropObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isInteropObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isNumeric.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isNumeric.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/isScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/noop.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/noop.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/not.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/not.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/pipe.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/pipe.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/root.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/root.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToResult.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/subscribeToResult.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/toSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/toSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/tryCatch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/internal/util/tryCatch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/operators/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/operators/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/path-mapping.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/testing/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/testing/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/webSocket/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/_esm5/webSocket/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/bindCallback.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/bindCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/bindCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/bindNodeCallback.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/bindNodeCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/bindNodeCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/combineLatest.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/concat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/defer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/defer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/defer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/dom/ajax.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/dom/ajax.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/dom/ajax.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/dom/webSocket.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/dom/webSocket.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/dom/webSocket.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/empty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/empty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/empty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/forkJoin.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/forkJoin.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/forkJoin.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/from.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/from.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/from.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromEvent.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromEvent.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromEvent.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromEventPattern.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromEventPattern.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromEventPattern.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/fromPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/generate.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/generate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/generate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/if.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/if.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/if.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/interval.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/interval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/interval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/never.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/never.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/never.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/of.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/of.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/of.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/onErrorResumeNext.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/pairs.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/pairs.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/pairs.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/race.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/range.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/range.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/range.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/throw.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/throw.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/throw.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/timer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/timer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/timer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/using.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/using.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/using.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/zip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/observable/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/audit.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/audit.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/audit.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/auditTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/auditTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/auditTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/buffer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/buffer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/buffer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/bufferWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/catch.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/catch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/catch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/combineAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/combineAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/combineAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/combineLatest.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/concatMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/count.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/count.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/count.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/debounce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/debounce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/debounce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/debounceTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/debounceTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/debounceTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/defaultIfEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/defaultIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/defaultIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/delay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/delay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/delay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/delayWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/delayWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/delayWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/dematerialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/dematerialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/dematerialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinct.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinct.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinct.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinctUntilChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinctUntilChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinctUntilChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinctUntilKeyChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinctUntilKeyChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/distinctUntilKeyChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/do.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/do.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/do.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/elementAt.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/elementAt.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/elementAt.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/every.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/every.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/every.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/exhaust.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/exhaust.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/exhaust.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/exhaustMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/exhaustMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/exhaustMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/expand.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/expand.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/expand.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/filter.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/filter.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/filter.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/finally.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/finally.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/finally.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/find.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/find.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/find.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/findIndex.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/findIndex.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/findIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/first.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/first.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/first.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/groupBy.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/groupBy.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/groupBy.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/ignoreElements.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/ignoreElements.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/ignoreElements.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/isEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/isEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/isEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/last.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/last.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/last.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/let.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/let.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/let.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/map.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/map.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/map.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/materialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/materialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/materialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/max.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/max.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/max.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeScan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeScan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/mergeScan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/min.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/min.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/min.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/multicast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/multicast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/multicast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/observeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/observeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/observeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/onErrorResumeNext.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/pairwise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/pairwise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/pairwise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/partition.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/pluck.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/pluck.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/pluck.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publish.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publish.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publish.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishBehavior.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishBehavior.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishBehavior.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/publishReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/race.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/reduce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/reduce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/reduce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/repeat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/repeat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/repeat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/repeatWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/repeatWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/repeatWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/retry.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/retry.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/retry.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/retryWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/retryWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/retryWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sample.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sample.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sample.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sampleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sampleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sampleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/scan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/scan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/scan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sequenceEqual.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sequenceEqual.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/sequenceEqual.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/share.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/share.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/share.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/shareReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/shareReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/shareReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/single.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/single.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/single.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/skipWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/startWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/startWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/startWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/subscribeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/subscribeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/subscribeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switch.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switchMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switchMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switchMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switchMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switchMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/switchMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/take.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/take.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/take.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/takeWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/throttle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/throttle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/throttle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/throttleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/throttleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/throttleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeInterval.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeInterval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeInterval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeout.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeout.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeout.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeoutWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeoutWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timeoutWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timestamp.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timestamp.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/timestamp.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/toArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/toArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/toArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/toPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/toPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/toPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/window.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/window.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/window.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/windowWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/withLatestFrom.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/withLatestFrom.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/withLatestFrom.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/zip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/zipAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/zipAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/add/operator/zipAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/ajax/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/ajax/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/ajax/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/ajax/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/bundles/rxjs.umd.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/bundles/rxjs.umd.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/bundles/rxjs.umd.min.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/bundles/rxjs.umd.min.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/fetch/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/fetch/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/fetch/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/fetch/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/interfaces.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/interfaces.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/interfaces.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal-compatibility/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal-compatibility/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal-compatibility/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal-compatibility/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/AsyncSubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/AsyncSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/AsyncSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/BehaviorSubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/BehaviorSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/BehaviorSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/InnerSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/InnerSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/InnerSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Notification.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Notification.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Notification.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Observable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Observer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Observer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Observer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Operator.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Operator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Operator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/OuterSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/OuterSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/OuterSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/ReplaySubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/ReplaySubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/ReplaySubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Rx.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Rx.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Rx.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Scheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Scheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Scheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/SubjectSubscription.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/SubjectSubscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/SubjectSubscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subscription.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subscription.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/Subscription.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/config.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/config.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/config.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/ConnectableObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/ConnectableObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/ConnectableObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/SubscribeOnObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/SubscribeOnObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/SubscribeOnObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/bindCallback.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/bindCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/bindCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/bindNodeCallback.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/bindNodeCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/bindNodeCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/combineLatest.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/concat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/defer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/defer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/defer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/AjaxObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/AjaxObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/AjaxObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/WebSocketSubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/WebSocketSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/WebSocketSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/ajax.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/ajax.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/ajax.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/fetch.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/fetch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/fetch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/webSocket.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/webSocket.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/dom/webSocket.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/empty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/empty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/empty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/forkJoin.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/forkJoin.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/forkJoin.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/from.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/from.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/from.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromEvent.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromEvent.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromEvent.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromEventPattern.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromEventPattern.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromEventPattern.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromIterable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/fromPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/generate.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/generate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/generate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/iif.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/iif.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/iif.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/interval.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/interval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/interval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/never.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/never.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/never.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/of.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/of.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/of.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/onErrorResumeNext.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/pairs.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/pairs.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/pairs.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/partition.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/race.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/range.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/range.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/range.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/throwError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/throwError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/throwError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/timer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/timer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/timer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/using.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/using.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/using.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/zip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/observable/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/audit.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/audit.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/audit.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/auditTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/auditTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/auditTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/buffer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/buffer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/buffer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/bufferWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/catchError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/catchError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/catchError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/combineAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/combineAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/combineAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/combineLatest.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/concatMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/count.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/count.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/count.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/debounce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/debounce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/debounce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/debounceTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/debounceTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/debounceTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/defaultIfEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/defaultIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/defaultIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/delay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/delay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/delay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/delayWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/delayWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/delayWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/dematerialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/dematerialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/dematerialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinct.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinct.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinct.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinctUntilChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinctUntilChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinctUntilChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinctUntilKeyChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinctUntilKeyChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/distinctUntilKeyChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/elementAt.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/elementAt.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/elementAt.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/endWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/endWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/endWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/every.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/every.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/every.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/exhaust.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/exhaust.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/exhaust.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/exhaustMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/exhaustMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/exhaustMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/expand.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/expand.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/expand.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/filter.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/filter.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/filter.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/finalize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/finalize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/finalize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/find.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/find.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/find.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/findIndex.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/findIndex.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/findIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/first.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/first.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/first.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/groupBy.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/groupBy.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/groupBy.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/ignoreElements.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/ignoreElements.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/ignoreElements.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/isEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/isEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/isEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/last.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/last.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/last.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/map.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/map.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/map.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/materialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/materialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/materialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/max.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/max.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/max.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeScan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeScan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/mergeScan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/min.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/min.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/min.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/multicast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/multicast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/multicast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/observeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/observeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/observeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/onErrorResumeNext.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/pairwise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/pairwise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/pairwise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/partition.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/pluck.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/pluck.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/pluck.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publish.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publish.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publish.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishBehavior.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishBehavior.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishBehavior.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/publishReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/race.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/reduce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/reduce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/reduce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/refCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/refCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/refCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/repeat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/repeat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/repeat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/repeatWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/repeatWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/repeatWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/retry.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/retry.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/retry.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/retryWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/retryWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/retryWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sample.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sample.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sample.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sampleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sampleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sampleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/scan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/scan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/scan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sequenceEqual.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sequenceEqual.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/sequenceEqual.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/share.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/share.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/share.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/shareReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/shareReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/shareReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/single.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/single.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/single.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/skipWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/startWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/startWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/startWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/subscribeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/subscribeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/subscribeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/switchMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/take.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/take.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/take.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/takeWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/tap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/tap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/tap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throttle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throttle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throttle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throttleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throttleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throttleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throwIfEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throwIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/throwIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeInterval.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeInterval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeInterval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeout.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeout.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeout.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeoutWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeoutWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timeoutWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timestamp.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timestamp.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/timestamp.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/toArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/toArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/toArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/window.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/window.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/window.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/windowWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/withLatestFrom.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/withLatestFrom.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/withLatestFrom.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/zip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/zipAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/zipAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/operators/zipAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleIterable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduleObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/schedulePromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/schedulePromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/schedulePromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduled.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduled.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduled/scheduled.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/Action.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/Action.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/Action.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AnimationFrameAction.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AnimationFrameAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AnimationFrameAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AnimationFrameScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsapAction.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsapAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsapAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsapScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsapScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsapScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsyncAction.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsyncAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsyncAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsyncScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsyncScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/AsyncScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/QueueAction.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/QueueAction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/QueueAction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/QueueScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/QueueScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/QueueScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/VirtualTimeScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/animationFrame.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/animationFrame.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/animationFrame.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/asap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/asap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/asap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/async.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/async.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/async.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/queue.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/queue.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/scheduler/queue.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/iterator.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/iterator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/iterator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/observable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/rxSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/rxSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/symbol/rxSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/ColdObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/ColdObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/ColdObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/HotObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/HotObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/HotObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/SubscriptionLog.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/SubscriptionLog.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/SubscriptionLog.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/SubscriptionLoggable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/SubscriptionLoggable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/SubscriptionLoggable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/TestMessage.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/TestMessage.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/TestMessage.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/TestScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/TestScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/testing/TestScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/types.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/types.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/types.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/ArgumentOutOfRangeError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/EmptyError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/EmptyError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/EmptyError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/Immediate.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/Immediate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/Immediate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/ObjectUnsubscribedError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/ObjectUnsubscribedError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/ObjectUnsubscribedError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/TimeoutError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/TimeoutError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/TimeoutError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/UnsubscriptionError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/UnsubscriptionError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/UnsubscriptionError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/applyMixins.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/applyMixins.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/applyMixins.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/canReportError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/canReportError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/canReportError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/errorObject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/errorObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/errorObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/hostReportError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/hostReportError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/hostReportError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/identity.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/identity.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/identity.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isArrayLike.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isArrayLike.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isDate.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isDate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isDate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isFunction.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isFunction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isFunction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isInteropObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isInteropObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isInteropObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isIterable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isNumeric.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isNumeric.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isNumeric.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isObject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/isScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/noop.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/noop.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/noop.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/not.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/not.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/not.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/pipe.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/pipe.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/pipe.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/root.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/root.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/root.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToIterable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToResult.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToResult.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/subscribeToResult.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/toSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/toSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/toSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/tryCatch.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/tryCatch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/internal/util/tryCatch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/migrations/collection.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/migrations/update-6_0_0/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/migrations/update-6_0_0/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ArrayLikeObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ArrayLikeObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ArrayLikeObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ArrayObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ArrayObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ArrayObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/BoundCallbackObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/BoundCallbackObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/BoundCallbackObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/BoundNodeCallbackObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/BoundNodeCallbackObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/BoundNodeCallbackObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ConnectableObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ConnectableObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ConnectableObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/DeferObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/DeferObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/DeferObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/EmptyObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/EmptyObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/EmptyObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ErrorObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ErrorObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ErrorObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ForkJoinObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ForkJoinObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ForkJoinObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromEventObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromEventObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromEventObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromEventPatternObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromEventPatternObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromEventPatternObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/FromObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/GenerateObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/GenerateObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/GenerateObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IfObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IfObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IfObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IntervalObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IntervalObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IntervalObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IteratorObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IteratorObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/IteratorObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/NeverObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/NeverObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/NeverObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/PairsObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/PairsObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/PairsObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/PromiseObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/PromiseObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/PromiseObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/RangeObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/RangeObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/RangeObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ScalarObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ScalarObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/ScalarObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/SubscribeOnObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/SubscribeOnObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/SubscribeOnObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/TimerObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/TimerObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/TimerObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/UsingObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/UsingObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/UsingObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/bindCallback.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/bindCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/bindCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/bindNodeCallback.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/bindNodeCallback.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/bindNodeCallback.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/combineLatest.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/concat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/defer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/defer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/defer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/AjaxObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/AjaxObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/AjaxObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/WebSocketSubject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/WebSocketSubject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/WebSocketSubject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/ajax.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/ajax.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/ajax.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/webSocket.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/webSocket.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/dom/webSocket.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/empty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/empty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/empty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/forkJoin.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/forkJoin.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/forkJoin.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/from.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/from.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/from.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromEvent.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromEvent.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromEvent.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromEventPattern.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromEventPattern.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromEventPattern.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromIterable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/fromPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/generate.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/generate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/generate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/if.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/if.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/if.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/interval.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/interval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/interval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/never.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/never.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/never.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/of.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/of.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/of.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/onErrorResumeNext.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/pairs.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/pairs.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/pairs.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/race.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/range.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/range.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/range.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/throw.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/throw.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/throw.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/timer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/timer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/timer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/using.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/using.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/using.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/zip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/observable/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/audit.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/audit.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/audit.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/auditTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/auditTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/auditTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/buffer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/buffer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/buffer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/bufferWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/catch.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/catch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/catch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/combineAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/combineAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/combineAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/combineLatest.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/concatMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/count.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/count.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/count.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/debounce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/debounce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/debounce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/debounceTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/debounceTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/debounceTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/defaultIfEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/defaultIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/defaultIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/delay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/delay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/delay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/delayWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/delayWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/delayWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/dematerialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/dematerialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/dematerialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinct.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinct.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinct.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinctUntilChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinctUntilChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinctUntilChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinctUntilKeyChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinctUntilKeyChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/distinctUntilKeyChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/do.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/do.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/do.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/elementAt.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/elementAt.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/elementAt.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/every.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/every.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/every.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/exhaust.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/exhaust.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/exhaust.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/exhaustMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/exhaustMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/exhaustMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/expand.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/expand.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/expand.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/filter.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/filter.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/filter.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/finally.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/finally.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/finally.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/find.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/find.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/find.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/findIndex.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/findIndex.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/findIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/first.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/first.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/first.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/groupBy.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/groupBy.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/groupBy.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/ignoreElements.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/ignoreElements.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/ignoreElements.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/isEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/isEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/isEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/last.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/last.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/last.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/let.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/let.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/let.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/map.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/map.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/map.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/materialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/materialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/materialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/max.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/max.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/max.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeScan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeScan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/mergeScan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/min.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/min.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/min.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/multicast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/multicast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/multicast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/observeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/observeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/observeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/onErrorResumeNext.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/pairwise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/pairwise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/pairwise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/partition.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/pluck.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/pluck.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/pluck.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publish.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publish.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publish.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishBehavior.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishBehavior.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishBehavior.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/publishReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/race.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/reduce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/reduce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/reduce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/repeat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/repeat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/repeat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/repeatWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/repeatWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/repeatWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/retry.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/retry.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/retry.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/retryWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/retryWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/retryWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sample.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sample.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sample.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sampleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sampleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sampleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/scan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/scan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/scan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sequenceEqual.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sequenceEqual.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/sequenceEqual.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/share.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/share.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/share.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/shareReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/shareReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/shareReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/single.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/single.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/single.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/skipWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/startWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/startWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/startWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/subscribeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/subscribeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/subscribeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switch.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switchMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switchMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switchMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switchMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switchMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/switchMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/take.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/take.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/take.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/takeWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/throttle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/throttle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/throttle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/throttleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/throttleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/throttleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeInterval.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeInterval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeInterval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeout.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeout.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeout.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeoutWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeoutWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timeoutWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timestamp.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timestamp.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/timestamp.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/toArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/toArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/toArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/toPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/toPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/toPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/window.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/window.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/window.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/windowWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/withLatestFrom.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/withLatestFrom.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/withLatestFrom.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/zip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/zipAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/zipAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operator/zipAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/audit.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/audit.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/audit.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/auditTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/auditTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/auditTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/buffer.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/buffer.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/buffer.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/bufferWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/catchError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/catchError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/catchError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/combineAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/combineAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/combineAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/combineLatest.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/combineLatest.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/combineLatest.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/concatMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/count.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/count.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/count.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/debounce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/debounce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/debounce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/debounceTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/debounceTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/debounceTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/defaultIfEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/defaultIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/defaultIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/delay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/delay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/delay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/delayWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/delayWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/delayWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/dematerialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/dematerialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/dematerialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinct.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinct.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinct.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinctUntilChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinctUntilChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinctUntilChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinctUntilKeyChanged.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinctUntilKeyChanged.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/distinctUntilKeyChanged.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/elementAt.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/elementAt.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/elementAt.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/every.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/every.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/every.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/exhaust.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/exhaust.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/exhaust.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/exhaustMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/exhaustMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/exhaustMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/expand.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/expand.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/expand.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/filter.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/filter.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/filter.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/finalize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/finalize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/finalize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/find.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/find.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/find.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/findIndex.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/findIndex.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/findIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/first.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/first.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/first.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/groupBy.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/groupBy.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/groupBy.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/ignoreElements.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/ignoreElements.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/ignoreElements.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/isEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/isEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/isEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/last.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/last.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/last.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/map.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/map.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/map.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/materialize.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/materialize.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/materialize.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/max.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/max.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/max.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/merge.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/merge.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeScan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeScan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/mergeScan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/min.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/min.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/min.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/multicast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/multicast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/multicast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/observeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/observeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/observeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/onErrorResumeNext.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/onErrorResumeNext.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/onErrorResumeNext.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/pairwise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/pairwise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/pairwise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/partition.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/partition.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/partition.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/pluck.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/pluck.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/pluck.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publish.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publish.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publish.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishBehavior.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishBehavior.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishBehavior.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/publishReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/race.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/race.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/race.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/reduce.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/reduce.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/reduce.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/refCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/refCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/refCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/repeat.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/repeat.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/repeat.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/repeatWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/repeatWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/repeatWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/retry.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/retry.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/retry.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/retryWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/retryWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/retryWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sample.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sample.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sample.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sampleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sampleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sampleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/scan.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/scan.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/scan.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sequenceEqual.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sequenceEqual.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/sequenceEqual.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/share.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/share.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/share.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/shareReplay.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/shareReplay.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/shareReplay.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/single.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/single.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/single.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/skipWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/startWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/startWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/startWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/subscribeOn.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/subscribeOn.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/subscribeOn.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchMap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchMap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchMap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchMapTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchMapTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/switchMapTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/take.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/take.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/take.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeLast.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeLast.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeLast.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeUntil.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeUntil.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeUntil.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeWhile.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeWhile.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/takeWhile.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/tap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/tap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/tap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throttle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throttle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throttle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throttleTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throttleTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throttleTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throwIfEmpty.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throwIfEmpty.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/throwIfEmpty.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeInterval.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeInterval.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeInterval.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeout.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeout.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeout.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeoutWith.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeoutWith.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timeoutWith.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timestamp.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timestamp.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/timestamp.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/toArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/toArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/toArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/window.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/window.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/window.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowCount.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowCount.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowCount.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowTime.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowTime.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowTime.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowToggle.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowToggle.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowToggle.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowWhen.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowWhen.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/windowWhen.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/withLatestFrom.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/withLatestFrom.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/withLatestFrom.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/zip.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/zip.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/zip.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/zipAll.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/zipAll.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/operators/zipAll.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/animationFrame.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/animationFrame.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/animationFrame.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/asap.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/asap.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/asap.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/async.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/async.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/async.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/queue.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/queue.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/scheduler/queue.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/AsyncSubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/BehaviorSubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/InnerSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/LICENSE.txt create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/MiscJSDoc.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Notification.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Observable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Observer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Operator.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/OuterSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/README.md create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/ReplaySubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Rx.global.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Rx.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Scheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Subject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/SubjectSubscription.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Subscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/Subscription.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/bindCallback.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/bindNodeCallback.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/combineLatest.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/concat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/defer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/dom/ajax.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/dom/webSocket.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/empty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/forkJoin.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/from.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/fromEvent.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/fromEventPattern.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/fromPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/generate.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/if.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/interval.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/merge.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/never.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/of.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/onErrorResumeNext.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/pairs.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/race.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/range.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/throw.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/timer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/using.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/observable/zip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/audit.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/auditTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/buffer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/bufferCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/bufferTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/bufferToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/bufferWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/catch.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/combineAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/combineLatest.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/concat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/concatAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/concatMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/concatMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/count.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/debounce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/debounceTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/defaultIfEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/delay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/delayWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/dematerialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/distinct.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/distinctUntilChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/distinctUntilKeyChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/do.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/elementAt.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/every.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/exhaust.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/exhaustMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/expand.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/filter.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/finally.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/find.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/findIndex.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/first.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/groupBy.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/ignoreElements.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/isEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/last.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/let.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/map.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/mapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/materialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/max.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/merge.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/mergeAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/mergeMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/mergeMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/mergeScan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/min.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/multicast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/observeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/onErrorResumeNext.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/pairwise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/partition.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/pluck.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/publish.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/publishBehavior.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/publishLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/publishReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/race.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/reduce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/repeat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/repeatWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/retry.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/retryWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/sample.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/sampleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/scan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/sequenceEqual.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/share.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/shareReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/single.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/skip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/skipLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/skipUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/skipWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/startWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/subscribeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/switch.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/switchMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/switchMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/take.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/takeLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/takeUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/takeWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/throttle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/throttleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/timeInterval.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/timeout.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/timeoutWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/timestamp.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/toArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/toPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/window.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/windowCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/windowTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/windowToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/windowWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/withLatestFrom.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/zip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/add/operator/zipAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/ajax/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/ajax/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/fetch/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/fetch/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/interfaces.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal-compatibility/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal-compatibility/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/AsyncSubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/BehaviorSubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/InnerSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Notification.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Observable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Observer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Operator.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/OuterSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/ReplaySubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Rx.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Scheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Subject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/SubjectSubscription.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Subscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/Subscription.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/config.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/ConnectableObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/SubscribeOnObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/bindCallback.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/bindNodeCallback.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/combineLatest.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/concat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/defer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/dom/AjaxObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/dom/MiscJSDoc.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/dom/WebSocketSubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/dom/ajax.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/dom/fetch.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/dom/webSocket.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/empty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/forkJoin.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/from.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/fromArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/fromEvent.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/fromEventPattern.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/fromIterable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/fromObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/fromPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/generate.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/iif.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/interval.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/merge.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/never.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/of.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/onErrorResumeNext.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/pairs.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/partition.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/race.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/range.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/throwError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/timer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/using.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/observable/zip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/audit.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/auditTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/buffer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/bufferCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/bufferTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/bufferToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/bufferWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/catchError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/combineAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/combineLatest.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/concat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/concatAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/concatMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/concatMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/count.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/debounce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/debounceTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/defaultIfEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/delay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/delayWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/dematerialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/distinct.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/distinctUntilChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/distinctUntilKeyChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/elementAt.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/endWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/every.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/exhaust.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/exhaustMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/expand.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/filter.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/finalize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/find.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/findIndex.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/first.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/groupBy.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/ignoreElements.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/isEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/last.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/map.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/mapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/materialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/max.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/merge.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/mergeAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/mergeMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/mergeMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/mergeScan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/min.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/multicast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/observeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/onErrorResumeNext.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/pairwise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/partition.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/pluck.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/publish.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/publishBehavior.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/publishLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/publishReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/race.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/reduce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/refCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/repeat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/repeatWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/retry.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/retryWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/sample.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/sampleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/scan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/sequenceEqual.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/share.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/shareReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/single.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/skip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/skipLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/skipUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/skipWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/startWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/subscribeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/switchAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/switchMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/switchMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/take.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/takeLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/takeUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/takeWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/tap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/throttle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/throttleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/throwIfEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/timeInterval.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/timeout.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/timeoutWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/timestamp.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/toArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/window.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/windowCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/windowTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/windowToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/windowWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/withLatestFrom.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/zip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/operators/zipAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduled/scheduleArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduled/scheduleIterable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduled/scheduleObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduled/schedulePromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduled/scheduled.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/Action.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/AnimationFrameAction.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/AnimationFrameScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/AsapAction.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/AsapScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/AsyncAction.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/AsyncScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/QueueAction.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/QueueScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/VirtualTimeScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/animationFrame.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/asap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/async.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/scheduler/queue.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/symbol/iterator.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/symbol/observable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/symbol/rxSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/testing/ColdObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/testing/HotObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/testing/SubscriptionLog.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/testing/SubscriptionLoggable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/testing/TestMessage.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/testing/TestScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/types.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/umd.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/ArgumentOutOfRangeError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/EmptyError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/Immediate.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/ObjectUnsubscribedError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/TimeoutError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/UnsubscriptionError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/applyMixins.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/canReportError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/errorObject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/hostReportError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/identity.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isArrayLike.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isDate.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isFunction.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isInteropObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isIterable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isNumeric.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isObject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/isScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/noop.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/not.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/pipe.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/root.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/subscribeTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/subscribeToArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/subscribeToIterable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/subscribeToObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/subscribeToPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/subscribeToResult.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/toSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/internal/util/tryCatch.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/ArrayLikeObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/ArrayObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/BoundCallbackObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/BoundNodeCallbackObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/ConnectableObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/DeferObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/EmptyObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/ErrorObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/ForkJoinObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/FromEventObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/FromEventPatternObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/FromObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/GenerateObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/IfObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/IntervalObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/IteratorObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/NeverObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/PairsObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/PromiseObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/RangeObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/ScalarObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/SubscribeOnObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/TimerObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/UsingObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/bindCallback.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/bindNodeCallback.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/combineLatest.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/concat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/defer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/dom/AjaxObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/dom/WebSocketSubject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/dom/ajax.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/dom/webSocket.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/empty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/forkJoin.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/from.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/fromArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/fromEvent.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/fromEventPattern.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/fromIterable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/fromPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/generate.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/if.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/interval.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/merge.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/never.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/of.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/onErrorResumeNext.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/pairs.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/race.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/range.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/throw.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/timer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/using.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/observable/zip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/audit.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/auditTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/buffer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/bufferCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/bufferTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/bufferToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/bufferWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/catch.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/combineAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/combineLatest.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/concat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/concatAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/concatMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/concatMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/count.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/debounce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/debounceTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/defaultIfEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/delay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/delayWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/dematerialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/distinct.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/distinctUntilChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/distinctUntilKeyChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/do.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/elementAt.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/every.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/exhaust.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/exhaustMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/expand.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/filter.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/finally.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/find.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/findIndex.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/first.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/groupBy.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/ignoreElements.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/isEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/last.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/let.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/map.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/mapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/materialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/max.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/merge.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/mergeAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/mergeMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/mergeMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/mergeScan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/min.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/multicast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/observeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/onErrorResumeNext.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/pairwise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/partition.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/pluck.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/publish.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/publishBehavior.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/publishLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/publishReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/race.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/reduce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/repeat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/repeatWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/retry.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/retryWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/sample.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/sampleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/scan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/sequenceEqual.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/share.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/shareReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/single.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/skip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/skipLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/skipUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/skipWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/startWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/subscribeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/switch.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/switchMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/switchMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/take.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/takeLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/takeUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/takeWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/throttle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/throttleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/timeInterval.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/timeout.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/timeoutWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/timestamp.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/toArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/toPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/window.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/windowCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/windowTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/windowToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/windowWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/withLatestFrom.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/zip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operator/zipAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/audit.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/auditTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/buffer.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/bufferCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/bufferTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/bufferToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/bufferWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/catchError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/combineAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/combineLatest.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/concat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/concatAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/concatMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/concatMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/count.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/debounce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/debounceTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/defaultIfEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/delay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/delayWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/dematerialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/distinct.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/distinctUntilChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/distinctUntilKeyChanged.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/elementAt.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/every.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/exhaust.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/exhaustMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/expand.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/filter.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/finalize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/find.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/findIndex.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/first.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/groupBy.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/ignoreElements.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/isEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/last.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/map.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/mapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/materialize.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/max.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/merge.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/mergeAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/mergeMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/mergeMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/mergeScan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/min.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/multicast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/observeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/onErrorResumeNext.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/pairwise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/partition.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/pluck.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/publish.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/publishBehavior.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/publishLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/publishReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/race.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/reduce.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/refCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/repeat.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/repeatWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/retry.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/retryWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/sample.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/sampleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/scan.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/sequenceEqual.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/share.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/shareReplay.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/single.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/skip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/skipLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/skipUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/skipWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/startWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/subscribeOn.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/switchAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/switchMap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/switchMapTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/take.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/takeLast.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/takeUntil.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/takeWhile.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/tap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/throttle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/throttleTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/throwIfEmpty.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/timeInterval.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/timeout.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/timeoutWith.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/timestamp.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/toArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/window.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/windowCount.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/windowTime.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/windowToggle.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/windowWhen.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/withLatestFrom.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/zip.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/operators/zipAll.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/scheduler/animationFrame.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/scheduler/asap.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/scheduler/async.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/scheduler/queue.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/symbol/iterator.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/symbol/observable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/symbol/rxSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/testing/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/testing/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/tsconfig.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/ArgumentOutOfRangeError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/EmptyError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/Immediate.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/ObjectUnsubscribedError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/TimeoutError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/UnsubscriptionError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/applyMixins.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/errorObject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/hostReportError.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/identity.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isArrayLike.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isDate.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isFunction.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isIterable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isNumeric.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isObject.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/isScheduler.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/noop.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/not.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/pipe.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/root.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/subscribeTo.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/subscribeToArray.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/subscribeToIterable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/subscribeToObservable.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/subscribeToPromise.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/subscribeToResult.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/toSubscriber.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/util/tryCatch.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/webSocket/index.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/src/webSocket/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/iterator.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/iterator.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/iterator.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/observable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/observable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/observable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/rxSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/rxSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/symbol/rxSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/testing/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/testing/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/testing/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/testing/package.json create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/ArgumentOutOfRangeError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/ArgumentOutOfRangeError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/ArgumentOutOfRangeError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/EmptyError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/EmptyError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/EmptyError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/Immediate.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/Immediate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/Immediate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/ObjectUnsubscribedError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/ObjectUnsubscribedError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/ObjectUnsubscribedError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/TimeoutError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/TimeoutError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/TimeoutError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/UnsubscriptionError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/UnsubscriptionError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/UnsubscriptionError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/applyMixins.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/applyMixins.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/applyMixins.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/errorObject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/errorObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/errorObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/hostReportError.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/hostReportError.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/hostReportError.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/identity.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/identity.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/identity.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isArrayLike.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isArrayLike.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isArrayLike.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isDate.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isDate.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isDate.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isFunction.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isFunction.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isFunction.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isIterable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isNumeric.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isNumeric.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isNumeric.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isObject.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isObject.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isObject.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isScheduler.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isScheduler.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/isScheduler.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/noop.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/noop.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/noop.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/not.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/not.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/not.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/pipe.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/pipe.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/pipe.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/root.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/root.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/root.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeTo.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeTo.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeTo.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToArray.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToArray.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToArray.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToIterable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToIterable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToIterable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToObservable.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToObservable.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToObservable.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToPromise.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToPromise.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToPromise.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToResult.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToResult.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/subscribeToResult.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/toSubscriber.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/toSubscriber.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/toSubscriber.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/tryCatch.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/tryCatch.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/util/tryCatch.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/webSocket/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/rxjs/webSocket/index.js create mode 100644 tic-tac-toe-app/node_modules/rxjs/webSocket/index.js.map create mode 100644 tic-tac-toe-app/node_modules/rxjs/webSocket/package.json create mode 100644 tic-tac-toe-app/node_modules/safer-buffer/LICENSE create mode 100644 tic-tac-toe-app/node_modules/safer-buffer/Porting-Buffer.md create mode 100644 tic-tac-toe-app/node_modules/safer-buffer/Readme.md create mode 100644 tic-tac-toe-app/node_modules/safer-buffer/dangerous.js create mode 100644 tic-tac-toe-app/node_modules/safer-buffer/package.json create mode 100644 tic-tac-toe-app/node_modules/safer-buffer/safer.js create mode 100644 tic-tac-toe-app/node_modules/safer-buffer/tests.js create mode 100644 tic-tac-toe-app/node_modules/semver/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/semver/LICENSE create mode 100644 tic-tac-toe-app/node_modules/semver/README.md create mode 100755 tic-tac-toe-app/node_modules/semver/bin/semver.js create mode 100644 tic-tac-toe-app/node_modules/semver/package.json create mode 100644 tic-tac-toe-app/node_modules/semver/range.bnf create mode 100644 tic-tac-toe-app/node_modules/semver/semver.js create mode 100644 tic-tac-toe-app/node_modules/serve-handler/LICENSE create mode 100644 tic-tac-toe-app/node_modules/serve-handler/README.md create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-db/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-db/LICENSE create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-db/README.md create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-db/db.json create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-db/index.js create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-db/package.json create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-types/HISTORY.md create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-types/LICENSE create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-types/README.md create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-types/index.js create mode 100644 tic-tac-toe-app/node_modules/serve-handler/node_modules/mime-types/package.json create mode 100644 tic-tac-toe-app/node_modules/serve-handler/package.json create mode 100644 tic-tac-toe-app/node_modules/serve-handler/src/directory.js create mode 100644 tic-tac-toe-app/node_modules/serve-handler/src/error.js create mode 100644 tic-tac-toe-app/node_modules/serve-handler/src/glob-slash.js create mode 100644 tic-tac-toe-app/node_modules/serve-handler/src/index.js create mode 100644 tic-tac-toe-app/node_modules/serve/LICENSE create mode 100644 tic-tac-toe-app/node_modules/serve/README.md create mode 100755 tic-tac-toe-app/node_modules/serve/bin/serve.js create mode 100644 tic-tac-toe-app/node_modules/serve/package.json create mode 100644 tic-tac-toe-app/node_modules/side-channel/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/side-channel/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/side-channel/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/side-channel/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/side-channel/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/side-channel/LICENSE create mode 100644 tic-tac-toe-app/node_modules/side-channel/README.md create mode 100644 tic-tac-toe-app/node_modules/side-channel/index.js create mode 100644 tic-tac-toe-app/node_modules/side-channel/package.json create mode 100644 tic-tac-toe-app/node_modules/side-channel/test/index.js create mode 100644 tic-tac-toe-app/node_modules/signal-exit/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/signal-exit/LICENSE.txt create mode 100644 tic-tac-toe-app/node_modules/signal-exit/README.md create mode 100644 tic-tac-toe-app/node_modules/signal-exit/index.js create mode 100644 tic-tac-toe-app/node_modules/signal-exit/package.json create mode 100644 tic-tac-toe-app/node_modules/signal-exit/signals.js create mode 100755 tic-tac-toe-app/node_modules/slice-ansi/index.js create mode 100644 tic-tac-toe-app/node_modules/slice-ansi/license create mode 100644 tic-tac-toe-app/node_modules/slice-ansi/package.json create mode 100644 tic-tac-toe-app/node_modules/slice-ansi/readme.md create mode 100644 tic-tac-toe-app/node_modules/spdx-correct/LICENSE create mode 100644 tic-tac-toe-app/node_modules/spdx-correct/README.md create mode 100644 tic-tac-toe-app/node_modules/spdx-correct/index.js create mode 100644 tic-tac-toe-app/node_modules/spdx-correct/package.json create mode 100644 tic-tac-toe-app/node_modules/spdx-exceptions/README.md create mode 100644 tic-tac-toe-app/node_modules/spdx-exceptions/index.json create mode 100644 tic-tac-toe-app/node_modules/spdx-exceptions/package.json create mode 100644 tic-tac-toe-app/node_modules/spdx-expression-parse/AUTHORS create mode 100644 tic-tac-toe-app/node_modules/spdx-expression-parse/LICENSE create mode 100644 tic-tac-toe-app/node_modules/spdx-expression-parse/README.md create mode 100644 tic-tac-toe-app/node_modules/spdx-expression-parse/index.js create mode 100644 tic-tac-toe-app/node_modules/spdx-expression-parse/package.json create mode 100644 tic-tac-toe-app/node_modules/spdx-expression-parse/parse.js create mode 100644 tic-tac-toe-app/node_modules/spdx-expression-parse/scan.js create mode 100644 tic-tac-toe-app/node_modules/spdx-license-ids/README.md create mode 100644 tic-tac-toe-app/node_modules/spdx-license-ids/deprecated.json create mode 100644 tic-tac-toe-app/node_modules/spdx-license-ids/index.json create mode 100644 tic-tac-toe-app/node_modules/spdx-license-ids/package.json create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/.npmignore create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/LICENSE create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/README.md create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/bower.json create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/demo/angular.html create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/dist/angular-sprintf.min.js create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/dist/angular-sprintf.min.js.map create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/dist/angular-sprintf.min.map create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/dist/sprintf.min.js create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/dist/sprintf.min.js.map create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/dist/sprintf.min.map create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/gruntfile.js create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/package.json create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/src/angular-sprintf.js create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/src/sprintf.js create mode 100644 tic-tac-toe-app/node_modules/sprintf-js/test/test.js create mode 100644 tic-tac-toe-app/node_modules/string-width/index.js create mode 100644 tic-tac-toe-app/node_modules/string-width/license create mode 100644 tic-tac-toe-app/node_modules/string-width/package.json create mode 100644 tic-tac-toe-app/node_modules/string-width/readme.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/.eslintignore create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/.github/FUNDING.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/LICENSE create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/README.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/auto.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/helpers/MatchAllIterator.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/helpers/RegExpStringIterator.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/helpers/hidden.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/implementation.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/package.json create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/polyfill-regexp-matchall.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/regexp-matchall.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/shim.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/test/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/test/shimmed.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.matchall/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/LICENSE create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/README.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/auto.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/implementation.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/package.json create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/shim.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/test/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/test/shimmed.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimend/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/LICENSE create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/README.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/auto.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/implementation.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/package.json create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/shim.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/test/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/test/shimmed.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimleft/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/.eslintrc create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/.github/workflows/rebase.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/LICENSE create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/README.md create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/auto.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/implementation.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/package.json create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/polyfill.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/shim.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/test/index.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/test/shimmed.js create mode 100644 tic-tac-toe-app/node_modules/string.prototype.trimstart/test/tests.js create mode 100644 tic-tac-toe-app/node_modules/strip-bom/index.js create mode 100644 tic-tac-toe-app/node_modules/strip-bom/license create mode 100644 tic-tac-toe-app/node_modules/strip-bom/package.json create mode 100644 tic-tac-toe-app/node_modules/strip-bom/readme.md create mode 100644 tic-tac-toe-app/node_modules/strip-json-comments/index.js create mode 100644 tic-tac-toe-app/node_modules/strip-json-comments/license create mode 100644 tic-tac-toe-app/node_modules/strip-json-comments/package.json create mode 100644 tic-tac-toe-app/node_modules/strip-json-comments/readme.md create mode 100644 tic-tac-toe-app/node_modules/table/LICENSE create mode 100644 tic-tac-toe-app/node_modules/table/README.md create mode 100644 tic-tac-toe-app/node_modules/table/dist/alignString.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/alignString.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/alignString.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/alignTableData.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/alignTableData.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/alignTableData.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateCellHeight.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateCellHeight.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateCellHeight.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateCellWidthIndex.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateCellWidthIndex.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateCellWidthIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateMaximumColumnWidthIndex.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateMaximumColumnWidthIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateRowHeightIndex.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateRowHeightIndex.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/calculateRowHeightIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/createStream.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/createStream.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/createStream.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawBorder.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawBorder.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawBorder.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawRow.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawRow.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawRow.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawTable.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawTable.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/drawTable.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/getBorderCharacters.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/getBorderCharacters.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/getBorderCharacters.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/index.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/index.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/index.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/makeConfig.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/makeConfig.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/makeConfig.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/makeStreamConfig.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/makeStreamConfig.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/makeStreamConfig.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/mapDataUsingRowHeightIndex.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/mapDataUsingRowHeightIndex.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/mapDataUsingRowHeightIndex.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/padTableData.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/padTableData.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/padTableData.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/schemas/config.json create mode 100644 tic-tac-toe-app/node_modules/table/dist/schemas/streamConfig.json create mode 100644 tic-tac-toe-app/node_modules/table/dist/stringifyTableData.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/stringifyTableData.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/stringifyTableData.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/table.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/table.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/table.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/truncateTableData.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/truncateTableData.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/truncateTableData.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/validateConfig.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/validateConfig.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/validateConfig.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/validateStreamConfig.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/validateTableData.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/validateTableData.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/validateTableData.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapCell.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapCell.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapCell.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapString.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapString.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapString.js.map create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapWord.js create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapWord.js.flow create mode 100644 tic-tac-toe-app/node_modules/table/dist/wrapWord.js.map create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/.tonic_example.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/LICENSE create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/README.md create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/dist/ajv.bundle.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/dist/ajv.min.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/dist/ajv.min.js.map create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/ajv.d.ts create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/ajv.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/cache.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/async.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/equal.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/error_classes.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/formats.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/resolve.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/rules.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/schema_obj.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/ucs2length.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/compile/util.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/data.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/definition_schema.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/_limit.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/_limitItems.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/_limitLength.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/_limitProperties.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/allOf.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/anyOf.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/coerce.def create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/comment.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/const.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/contains.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/custom.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/defaults.def create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/definitions.def create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/dependencies.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/enum.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/errors.def create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/format.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/if.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/items.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/missing.def create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/multipleOf.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/not.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/oneOf.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/pattern.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/properties.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/propertyNames.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/ref.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/required.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/uniqueItems.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dot/validate.jst create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/README.md create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/_limit.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/_limitItems.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/_limitLength.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/_limitProperties.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/allOf.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/anyOf.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/comment.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/const.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/contains.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/custom.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/dependencies.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/enum.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/format.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/if.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/items.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/multipleOf.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/not.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/oneOf.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/pattern.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/properties.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/propertyNames.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/ref.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/required.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/uniqueItems.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/dotjs/validate.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/keyword.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/refs/data.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/refs/json-schema-draft-04.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/refs/json-schema-draft-06.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/refs/json-schema-draft-07.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/lib/refs/json-schema-secure.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/package.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/scripts/.eslintrc.yml create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/scripts/bundle.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ajv/scripts/compile-dots.js create mode 100755 tic-tac-toe-app/node_modules/table/node_modules/ajv/scripts/info create mode 100755 tic-tac-toe-app/node_modules/table/node_modules/ajv/scripts/prepare-tests create mode 100755 tic-tac-toe-app/node_modules/table/node_modules/ajv/scripts/publish-built-version create mode 100755 tic-tac-toe-app/node_modules/table/node_modules/ajv/scripts/travis-gh-pages create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ansi-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ansi-regex/license create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ansi-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/ansi-regex/readme.md create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/LICENSE-MIT.txt create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/README.md create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/es2015/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/es2015/text.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/package.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/emoji-regex/text.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/LICENSE create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/README.md create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/es6/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/es6/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/es6/react.d.ts create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/es6/react.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/package.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/react.d.ts create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/fast-deep-equal/react.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/string-width/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/string-width/license create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/string-width/package.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/string-width/readme.md create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/strip-ansi/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/strip-ansi/index.js create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/strip-ansi/license create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/strip-ansi/package.json create mode 100644 tic-tac-toe-app/node_modules/table/node_modules/strip-ansi/readme.md create mode 100644 tic-tac-toe-app/node_modules/table/package.json create mode 100644 tic-tac-toe-app/node_modules/term-size/index.js create mode 100644 tic-tac-toe-app/node_modules/term-size/license create mode 100644 tic-tac-toe-app/node_modules/term-size/package.json create mode 100644 tic-tac-toe-app/node_modules/term-size/readme.md create mode 100755 tic-tac-toe-app/node_modules/term-size/vendor/macos/term-size create mode 100644 tic-tac-toe-app/node_modules/term-size/vendor/windows/term-size.exe create mode 100644 tic-tac-toe-app/node_modules/text-table/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/text-table/LICENSE create mode 100644 tic-tac-toe-app/node_modules/text-table/example/align.js create mode 100644 tic-tac-toe-app/node_modules/text-table/example/center.js create mode 100644 tic-tac-toe-app/node_modules/text-table/example/dotalign.js create mode 100644 tic-tac-toe-app/node_modules/text-table/example/doubledot.js create mode 100644 tic-tac-toe-app/node_modules/text-table/example/table.js create mode 100644 tic-tac-toe-app/node_modules/text-table/index.js create mode 100644 tic-tac-toe-app/node_modules/text-table/package.json create mode 100644 tic-tac-toe-app/node_modules/text-table/readme.markdown create mode 100644 tic-tac-toe-app/node_modules/text-table/test/align.js create mode 100644 tic-tac-toe-app/node_modules/text-table/test/ansi-colors.js create mode 100644 tic-tac-toe-app/node_modules/text-table/test/center.js create mode 100644 tic-tac-toe-app/node_modules/text-table/test/dotalign.js create mode 100644 tic-tac-toe-app/node_modules/text-table/test/doubledot.js create mode 100644 tic-tac-toe-app/node_modules/text-table/test/table.js create mode 100644 tic-tac-toe-app/node_modules/through/.travis.yml create mode 100644 tic-tac-toe-app/node_modules/through/LICENSE.APACHE2 create mode 100644 tic-tac-toe-app/node_modules/through/LICENSE.MIT create mode 100644 tic-tac-toe-app/node_modules/through/index.js create mode 100644 tic-tac-toe-app/node_modules/through/package.json create mode 100644 tic-tac-toe-app/node_modules/through/readme.markdown create mode 100644 tic-tac-toe-app/node_modules/through/test/async.js create mode 100644 tic-tac-toe-app/node_modules/through/test/auto-destroy.js create mode 100644 tic-tac-toe-app/node_modules/through/test/buffering.js create mode 100644 tic-tac-toe-app/node_modules/through/test/end.js create mode 100644 tic-tac-toe-app/node_modules/through/test/index.js create mode 100644 tic-tac-toe-app/node_modules/tmp/LICENSE create mode 100644 tic-tac-toe-app/node_modules/tmp/README.md create mode 100644 tic-tac-toe-app/node_modules/tmp/lib/tmp.js create mode 100644 tic-tac-toe-app/node_modules/tmp/package.json create mode 100644 tic-tac-toe-app/node_modules/type-check/LICENSE create mode 100644 tic-tac-toe-app/node_modules/type-check/README.md create mode 100644 tic-tac-toe-app/node_modules/type-check/lib/check.js create mode 100644 tic-tac-toe-app/node_modules/type-check/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/type-check/lib/parse-type.js create mode 100644 tic-tac-toe-app/node_modules/type-check/package.json create mode 100644 tic-tac-toe-app/node_modules/type-fest/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/license create mode 100644 tic-tac-toe-app/node_modules/type-fest/package.json create mode 100644 tic-tac-toe-app/node_modules/type-fest/readme.md create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/basic.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/except.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/literal-union.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/merge-exclusive.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/merge.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/mutable.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/opaque.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/package-json.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/partial-deep.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/promisable.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/readonly-deep.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/require-at-least-one.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/require-exactly-one.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/set-optional.d.ts create mode 100644 tic-tac-toe-app/node_modules/type-fest/source/set-required.d.ts create mode 100644 tic-tac-toe-app/node_modules/update-check/.editorconfig create mode 100644 tic-tac-toe-app/node_modules/update-check/.yarnrc create mode 100644 tic-tac-toe-app/node_modules/update-check/LICENSE create mode 100644 tic-tac-toe-app/node_modules/update-check/README.md create mode 100644 tic-tac-toe-app/node_modules/update-check/index.js create mode 100644 tic-tac-toe-app/node_modules/update-check/package.json create mode 100644 tic-tac-toe-app/node_modules/uri-js/README.md create mode 100644 tic-tac-toe-app/node_modules/uri-js/bower.json create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/es5/uri.all.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/es5/uri.all.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/es5/uri.all.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/es5/uri.all.min.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/es5/uri.all.min.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/es5/uri.all.min.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/index.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/index.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/regexps-iri.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/regexps-iri.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/regexps-iri.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/regexps-uri.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/regexps-uri.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/regexps-uri.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/http.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/http.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/http.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/https.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/https.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/https.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/mailto.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/mailto.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/mailto.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/urn-uuid.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/urn-uuid.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/urn.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/urn.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/schemes/urn.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/uri.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/uri.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/uri.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/util.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/util.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/dist/esnext/util.js.map create mode 100644 tic-tac-toe-app/node_modules/uri-js/package.json create mode 100644 tic-tac-toe-app/node_modules/uri-js/rollup.config.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/index.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/punycode.d.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/regexps-iri.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/regexps-uri.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/schemes/http.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/schemes/https.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/schemes/mailto.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/schemes/urn-uuid.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/schemes/urn.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/uri.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/src/util.ts create mode 100644 tic-tac-toe-app/node_modules/uri-js/tests/qunit.css create mode 100644 tic-tac-toe-app/node_modules/uri-js/tests/qunit.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/tests/test-es5-min.html create mode 100644 tic-tac-toe-app/node_modules/uri-js/tests/test-es5.html create mode 100644 tic-tac-toe-app/node_modules/uri-js/tests/tests.js create mode 100644 tic-tac-toe-app/node_modules/uri-js/tsconfig.json create mode 100644 tic-tac-toe-app/node_modules/uri-js/yarn.lock create mode 100644 tic-tac-toe-app/node_modules/validate-npm-package-license/LICENSE create mode 100644 tic-tac-toe-app/node_modules/validate-npm-package-license/README.md create mode 100644 tic-tac-toe-app/node_modules/validate-npm-package-license/index.js create mode 100644 tic-tac-toe-app/node_modules/validate-npm-package-license/package.json create mode 100644 tic-tac-toe-app/node_modules/which/CHANGELOG.md create mode 100644 tic-tac-toe-app/node_modules/which/LICENSE create mode 100644 tic-tac-toe-app/node_modules/which/README.md create mode 100755 tic-tac-toe-app/node_modules/which/bin/which create mode 100644 tic-tac-toe-app/node_modules/which/package.json create mode 100644 tic-tac-toe-app/node_modules/which/which.js create mode 100644 tic-tac-toe-app/node_modules/word-wrap/LICENSE create mode 100644 tic-tac-toe-app/node_modules/word-wrap/README.md create mode 100644 tic-tac-toe-app/node_modules/word-wrap/index.d.ts create mode 100644 tic-tac-toe-app/node_modules/word-wrap/index.js create mode 100644 tic-tac-toe-app/node_modules/word-wrap/package.json create mode 100644 tic-tac-toe-app/node_modules/write/LICENSE create mode 100644 tic-tac-toe-app/node_modules/write/README.md create mode 100644 tic-tac-toe-app/node_modules/write/index.js create mode 100644 tic-tac-toe-app/node_modules/write/package.json create mode 100644 tic-tac-toe-app/node_modules/xregexp/LICENSE create mode 100644 tic-tac-toe-app/node_modules/xregexp/README.md create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/addons/build.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/addons/matchrecursive.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/addons/unicode-base.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/addons/unicode-blocks.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/addons/unicode-categories.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/addons/unicode-properties.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/addons/unicode-scripts.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/index.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/lib/xregexp.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/package.json create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/addons/build.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/addons/matchrecursive.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/addons/unicode-base.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/addons/unicode-blocks.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/addons/unicode-categories.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/addons/unicode-properties.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/addons/unicode-scripts.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/index.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/src/xregexp.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/tools/output/blocks.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/tools/output/categories.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/tools/output/properties.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/tools/output/scripts.js create mode 100644 tic-tac-toe-app/node_modules/xregexp/xregexp-all.js create mode 100644 tic-tac-toe-app/node_modules/yallist/LICENSE create mode 100644 tic-tac-toe-app/node_modules/yallist/README.md create mode 100644 tic-tac-toe-app/node_modules/yallist/iterator.js create mode 100644 tic-tac-toe-app/node_modules/yallist/package.json create mode 100644 tic-tac-toe-app/node_modules/yallist/yallist.js create mode 100644 tic-tac-toe-app/package-lock.json create mode 100755 tic-tac-toe-app/package.json create mode 100755 tic-tac-toe-app/styles.css diff --git a/tic-tac-toe-app/App.js b/tic-tac-toe-app/App.js new file mode 100755 index 0000000..36d5fa3 --- /dev/null +++ b/tic-tac-toe-app/App.js @@ -0,0 +1,18 @@ +const container = document.querySelector('.container') + + + +const App = () => { + return ( +
+

A tic-tac-toe game

+ + + + +
+ ) +} + + +ReactDOM.render(, container); \ No newline at end of file diff --git a/tic-tac-toe-app/README.md b/tic-tac-toe-app/README.md new file mode 100755 index 0000000..e1b190b --- /dev/null +++ b/tic-tac-toe-app/README.md @@ -0,0 +1,6 @@ +# React-Tac-Toe w/ Hooks +An exploration of the Hook + +## Instructions +1. Run `npm start` +2. View on `http://localhost:5000` \ No newline at end of file diff --git a/tic-tac-toe-app/components/Scoreboard.jsx b/tic-tac-toe-app/components/Scoreboard.jsx new file mode 100644 index 0000000..e2ded86 --- /dev/null +++ b/tic-tac-toe-app/components/Scoreboard.jsx @@ -0,0 +1,13 @@ +const ScoreBoard = () => { + const [score, setScore] = React.useContext(ScoreContext) + return( +
+
+

Player One Score (X): {score.playerOne}

+
+
+

Player Two Score (O): {score.playerTwo}

+
+
+ ) +} \ No newline at end of file diff --git a/tic-tac-toe-app/components/board.jsx b/tic-tac-toe-app/components/board.jsx new file mode 100644 index 0000000..a1c02aa --- /dev/null +++ b/tic-tac-toe-app/components/board.jsx @@ -0,0 +1,121 @@ +const game = new Game() + +const Board = () => { + const [score, setScore] = React.useContext(ScoreContext) + + const [box1, setBox1] = React.useState("") + const [box2, setBox2] = React.useState("") + const [box3, setBox3] = React.useState("") + const [box4, setBox4] = React.useState("") + const [box5, setBox5] = React.useState("") + const [box6, setBox6] = React.useState("") + const [box7, setBox7] = React.useState("") + const [box8, setBox8] = React.useState("") + const [box9, setBox9] = React.useState("") + + const move = (e) => { + + const clearBoard = () => { + for(let square in boxStates){ + boxStates[square]("") + + } + game.checkBoard(game.turn) + game.turn = 1 + + } + + const boxStates = { + box1: setBox1, + box2: setBox2, + box3: setBox3, + box4: setBox4, + box5: setBox5, + box6: setBox6, + box7: setBox7, + box8: setBox8, + box9: setBox9, + } + const box = e.target.id + if(game.turn % 2 !== 0){ + boxStates[box]() + document.getElementById(box).removeAttribute("onClick"); + game.playerOne.makeMove(parseInt(box[3]) - 1) + + if(game.checkBoard(game.turn) === "Game Over"){ + + setScore(() => { + return { + playerOne: score.playerOne + 1, + playerTwo: score.playerTwo + } + }) + clearBoard() + } + if(game.checkBoard(game.turn) === "Game Tie"){ + + setScore(() => { + return { + playerOne: score.playerOne, + playerTwo: score.playerTwo + } + }) + clearBoard() + } + + game.turn += 1 + return game.turn + } + if(game.turn % 2 === 0){ + boxStates[box]() + document.getElementById(box).removeAttribute("onClick"); + + game.playerTwo.makeMove(parseInt(box[3]) - 1) + + if(game.checkBoard(game.turn) === "Game Over"){ + + setScore(() => { + return { + playerOne: score.playerOne, + playerTwo: score.playerTwo + 1 + } + }) + clearBoard() + } + if(game.checkBoard(game.turn) === "Game Tie"){ + + setScore(() => { + return { + playerOne: score.playerOne, + playerTwo: score.playerTwo + } + }) + clearBoard() + } + + game.turn += 1 + return game.turn + } + } + return ( +
+
+
move(e)} className="box" id="box1">{box1}
+
move(e)} className="box" id="box2">{box2}
+
move(e)} className="box" id="box3">{box3}
+
+
+
move(e)} className="box" id="box4">{box4}
+
move(e)} className="box" id="box5">{box5}
+
move(e)} className="box" id="box6">{box6}
+
+
+
move(e)} className="box" id="box7">{box7}
+
move(e)} className="box" id="box8">{box8}
+
move(e)} className="box" id="box9">{box9}
+
+
+ ) +} + + diff --git a/tic-tac-toe-app/components/players.jsx b/tic-tac-toe-app/components/players.jsx new file mode 100644 index 0000000..211469e --- /dev/null +++ b/tic-tac-toe-app/components/players.jsx @@ -0,0 +1,11 @@ +const PlayerOne = () => { + return ( +
X
+ ) +} + +const PlayerTwo = () => { + return ( +
O
+ ) +} \ No newline at end of file diff --git a/tic-tac-toe-app/contexts/ScoreContext.jsx b/tic-tac-toe-app/contexts/ScoreContext.jsx new file mode 100644 index 0000000..5d1044e --- /dev/null +++ b/tic-tac-toe-app/contexts/ScoreContext.jsx @@ -0,0 +1,11 @@ +const ScoreContext = React.createContext() + +const ScoreProvider = (props) => { + const [score, setScore] = React.useState({playerOne: 0, playerTwo: 0}) + + return( + + {props.children} + + ) +} \ No newline at end of file diff --git a/tic-tac-toe-app/game.js b/tic-tac-toe-app/game.js new file mode 100644 index 0000000..576a8f8 --- /dev/null +++ b/tic-tac-toe-app/game.js @@ -0,0 +1,87 @@ +class Game{ + constructor(){ + this.playerOne = new Player() + this.playerTwo = new Player() + this.playerOne.move = 'X' + this.playerTwo.move = 'O' + this.board = ['', '', '', '', '', '', '', '', ''] + this.posTracker = {} + this.turn = 1 + this.winner = null + } + + checkBoard(candidate){ + + for(let position in this.board){ + this.posTracker[position] = this.board[position] + } + //Checks each row to see if a player won + if(this.posTracker['0'] === this.posTracker['1'] && this.posTracker['0'] === this.posTracker['2'] && this.posTracker['0'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + if(this.posTracker['3'] === this.posTracker['4'] && this.posTracker['3'] === this.posTracker['5'] && this.posTracker['3'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + if(this.posTracker['6'] === this.posTracker['7'] && this.posTracker['6'] === this.posTracker['8'] && this.posTracker['6'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + //Checks each diagonal row to see if a player won + if(this.posTracker['0'] === this.posTracker['4'] && this.posTracker['0'] === this.posTracker['8'] && this.posTracker['0'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + if(this.posTracker['2'] === this.posTracker['4'] && this.posTracker['2'] === this.posTracker['6'] && this.posTracker['2'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + //Checks each column to see if a player won + if(this.posTracker['0'] === this.posTracker['3'] && this.posTracker['0'] === this.posTracker['6'] && this.posTracker['0'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + if(this.posTracker['1'] === this.posTracker['4'] && this.posTracker['1'] === this.posTracker['7'] && this.posTracker['1'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + if(this.posTracker['2'] === this.posTracker['5'] && this.posTracker['2'] === this.posTracker['8'] && this.posTracker['2'] !== ''){ + candidate % 2 === 0 ? game.playerOne.score += 1 : game.playerTwo.score += 1 + this.gameOver() + return 'Game Over' + } + //Checks to see if there is a draw + if(candidate >= 9){ + return 'Game Tie' + } + + } + + gameOver(){ + this.board = ['', '', '', '', '', '', '', '', ''] + if(game.turn % 2 !== 0){ + this.playerOne.score += 1 + return this.playerOne.score + } + this.playerTwo.score += 1 + return this.playerTwo.score + } + +} + +class Player{ + constructor(){ + this.score = 0 + } + makeMove(index){ + game.board.splice(index, 1, this.move) + } +} diff --git a/tic-tac-toe-app/index.html b/tic-tac-toe-app/index.html new file mode 100755 index 0000000..e6d6039 --- /dev/null +++ b/tic-tac-toe-app/index.html @@ -0,0 +1,22 @@ + + + + + + + React Tac Toe + + +
+ + + + + + + + + + + + diff --git a/tic-tac-toe-app/node_modules/@types/color-name/LICENSE b/tic-tac-toe-app/node_modules/@types/color-name/LICENSE new file mode 100644 index 0000000..4b1ad51 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@types/color-name/LICENSE @@ -0,0 +1,21 @@ + MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE diff --git a/tic-tac-toe-app/node_modules/@types/color-name/README.md b/tic-tac-toe-app/node_modules/@types/color-name/README.md new file mode 100644 index 0000000..5c77cba --- /dev/null +++ b/tic-tac-toe-app/node_modules/@types/color-name/README.md @@ -0,0 +1,16 @@ +# Installation +> `npm install --save @types/color-name` + +# Summary +This package contains type definitions for color-name ( https://github.com/colorjs/color-name ). + +# Details +Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/color-name + +Additional Details + * Last updated: Wed, 13 Feb 2019 16:16:48 GMT + * Dependencies: none + * Global values: none + +# Credits +These definitions were written by Junyoung Clare Jang . diff --git a/tic-tac-toe-app/node_modules/@types/color-name/index.d.ts b/tic-tac-toe-app/node_modules/@types/color-name/index.d.ts new file mode 100644 index 0000000..b5bff47 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@types/color-name/index.d.ts @@ -0,0 +1,161 @@ +// Type definitions for color-name 1.1 +// Project: https://github.com/colorjs/color-name +// Definitions by: Junyoung Clare Jang +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/** + * Tuple of Red, Green, and Blue + * @example + * // Red = 55, Green = 70, Blue = 0 + * const rgb: RGB = [55, 70, 0]; + */ +export type RGB = [number, number, number]; + +export const aliceblue: RGB; +export const antiquewhite: RGB; +export const aqua: RGB; +export const aquamarine: RGB; +export const azure: RGB; +export const beige: RGB; +export const bisque: RGB; +export const black: RGB; +export const blanchedalmond: RGB; +export const blue: RGB; +export const blueviolet: RGB; +export const brown: RGB; +export const burlywood: RGB; +export const cadetblue: RGB; +export const chartreuse: RGB; +export const chocolate: RGB; +export const coral: RGB; +export const cornflowerblue: RGB; +export const cornsilk: RGB; +export const crimson: RGB; +export const cyan: RGB; +export const darkblue: RGB; +export const darkcyan: RGB; +export const darkgoldenrod: RGB; +export const darkgray: RGB; +export const darkgreen: RGB; +export const darkgrey: RGB; +export const darkkhaki: RGB; +export const darkmagenta: RGB; +export const darkolivegreen: RGB; +export const darkorange: RGB; +export const darkorchid: RGB; +export const darkred: RGB; +export const darksalmon: RGB; +export const darkseagreen: RGB; +export const darkslateblue: RGB; +export const darkslategray: RGB; +export const darkslategrey: RGB; +export const darkturquoise: RGB; +export const darkviolet: RGB; +export const deeppink: RGB; +export const deepskyblue: RGB; +export const dimgray: RGB; +export const dimgrey: RGB; +export const dodgerblue: RGB; +export const firebrick: RGB; +export const floralwhite: RGB; +export const forestgreen: RGB; +export const fuchsia: RGB; +export const gainsboro: RGB; +export const ghostwhite: RGB; +export const gold: RGB; +export const goldenrod: RGB; +export const gray: RGB; +export const green: RGB; +export const greenyellow: RGB; +export const grey: RGB; +export const honeydew: RGB; +export const hotpink: RGB; +export const indianred: RGB; +export const indigo: RGB; +export const ivory: RGB; +export const khaki: RGB; +export const lavender: RGB; +export const lavenderblush: RGB; +export const lawngreen: RGB; +export const lemonchiffon: RGB; +export const lightblue: RGB; +export const lightcoral: RGB; +export const lightcyan: RGB; +export const lightgoldenrodyellow: RGB; +export const lightgray: RGB; +export const lightgreen: RGB; +export const lightgrey: RGB; +export const lightpink: RGB; +export const lightsalmon: RGB; +export const lightseagreen: RGB; +export const lightskyblue: RGB; +export const lightslategray: RGB; +export const lightslategrey: RGB; +export const lightsteelblue: RGB; +export const lightyellow: RGB; +export const lime: RGB; +export const limegreen: RGB; +export const linen: RGB; +export const magenta: RGB; +export const maroon: RGB; +export const mediumaquamarine: RGB; +export const mediumblue: RGB; +export const mediumorchid: RGB; +export const mediumpurple: RGB; +export const mediumseagreen: RGB; +export const mediumslateblue: RGB; +export const mediumspringgreen: RGB; +export const mediumturquoise: RGB; +export const mediumvioletred: RGB; +export const midnightblue: RGB; +export const mintcream: RGB; +export const mistyrose: RGB; +export const moccasin: RGB; +export const navajowhite: RGB; +export const navy: RGB; +export const oldlace: RGB; +export const olive: RGB; +export const olivedrab: RGB; +export const orange: RGB; +export const orangered: RGB; +export const orchid: RGB; +export const palegoldenrod: RGB; +export const palegreen: RGB; +export const paleturquoise: RGB; +export const palevioletred: RGB; +export const papayawhip: RGB; +export const peachpuff: RGB; +export const peru: RGB; +export const pink: RGB; +export const plum: RGB; +export const powderblue: RGB; +export const purple: RGB; +export const rebeccapurple: RGB; +export const red: RGB; +export const rosybrown: RGB; +export const royalblue: RGB; +export const saddlebrown: RGB; +export const salmon: RGB; +export const sandybrown: RGB; +export const seagreen: RGB; +export const seashell: RGB; +export const sienna: RGB; +export const silver: RGB; +export const skyblue: RGB; +export const slateblue: RGB; +export const slategray: RGB; +export const slategrey: RGB; +export const snow: RGB; +export const springgreen: RGB; +export const steelblue: RGB; +export const tan: RGB; +export const teal: RGB; +export const thistle: RGB; +export const tomato: RGB; +export const turquoise: RGB; +export const violet: RGB; +export const wheat: RGB; +export const white: RGB; +export const whitesmoke: RGB; +export const yellow: RGB; +export const yellowgreen: RGB; diff --git a/tic-tac-toe-app/node_modules/@types/color-name/package.json b/tic-tac-toe-app/node_modules/@types/color-name/package.json new file mode 100644 index 0000000..b0730e2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@types/color-name/package.json @@ -0,0 +1,52 @@ +{ + "_from": "@types/color-name@^1.1.1", + "_id": "@types/color-name@1.1.1", + "_inBundle": false, + "_integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "_location": "/@types/color-name", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "@types/color-name@^1.1.1", + "name": "@types/color-name", + "escapedName": "@types%2fcolor-name", + "scope": "@types", + "rawSpec": "^1.1.1", + "saveSpec": null, + "fetchSpec": "^1.1.1" + }, + "_requiredBy": [ + "/inquirer/ansi-styles" + ], + "_resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "_shasum": "1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0", + "_spec": "@types/color-name@^1.1.1", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/inquirer/node_modules/ansi-styles", + "bugs": { + "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Junyoung Clare Jang", + "url": "https://github.com/Ailrun" + } + ], + "dependencies": {}, + "deprecated": false, + "description": "TypeScript definitions for color-name", + "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme", + "license": "MIT", + "main": "", + "name": "@types/color-name", + "repository": { + "type": "git", + "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git" + }, + "scripts": {}, + "typeScriptVersion": "2.0", + "types": "index", + "typesPublisherContentHash": "e22c6881e2dcf766e32142cbb82d9acf9c08258bdf0da8e76c8a448d1be44ac7", + "version": "1.1.1" +} diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/.circleci/config.yml b/tic-tac-toe-app/node_modules/@zeit/schemas/.circleci/config.yml new file mode 100644 index 0000000..e657731 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/.circleci/config.yml @@ -0,0 +1,40 @@ +# Javascript Node CircleCI 2.0 configuration file +# +# Check https://circleci.com/docs/2.0/language-javascript/ for more details +# +version: 2 +jobs: + build: + docker: + # specify the version you desire here + - image: circleci/node:latest + + # Specify service dependencies here if necessary + # CircleCI maintains a library of pre-built images + # documented at https://circleci.com/docs/2.0/circleci-images/ + # - image: circleci/mongo:3.4.4 + + working_directory: ~/repo + + steps: + - checkout + + # Download and cache dependencies + - restore_cache: + keys: + - v1-dependencies-{{ checksum "yarn.lock" }} + # fallback to using the latest cache if no exact match is found + - v1-dependencies- + + - run: yarn + + - save_cache: + paths: + - node_modules + key: v1-dependencies-{{ checksum "yarn.lock" }} + + # run tests! + - run: yarn test + + + diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/.editorconfig b/tic-tac-toe-app/node_modules/@zeit/schemas/.editorconfig new file mode 100644 index 0000000..a2be815 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/.editorconfig @@ -0,0 +1,37 @@ +root = true + +[*] +indent_style = tab +indent_size = 4 +tab_width = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[{*.json,*.json.example,*.gyp,*.yml,*.yaml}] +indent_style = space +indent_size = 2 + +[{*.py,*.asm}] +indent_style = space + +[*.py] +indent_size = 4 + +[*.asm] +indent_size = 8 + +[*.md] +trim_trailing_whitespace = false + +# Ideal settings - some plugins might support these. +[*.js] +quote_type = single + +[{*.c,*.cc,*.h,*.hh,*.cpp,*.hpp,*.m,*.mm,*.mpp,*.js,*.java,*.go,*.rs,*.php,*.ng,*.jsx,*.ts,*.d,*.cs,*.swift}] +curly_bracket_next_line = false +spaces_around_operators = true +spaces_around_brackets = outside +# close enough to 1TB +indent_brace_style = K&R diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/.yarnrc b/tic-tac-toe-app/node_modules/@zeit/schemas/.yarnrc new file mode 100644 index 0000000..fdd705c --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/.yarnrc @@ -0,0 +1 @@ +save-prefix "" diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/LICENSE b/tic-tac-toe-app/node_modules/@zeit/schemas/LICENSE new file mode 100644 index 0000000..3645919 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 ZEIT + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/README.md b/tic-tac-toe-app/node_modules/@zeit/schemas/README.md new file mode 100644 index 0000000..124737e --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/README.md @@ -0,0 +1,45 @@ +# ZEIT's schemas + +[![Build Status](https://circleci.com/gh/zeit/schemas.svg?&style=shield)](https://circleci.com/gh/zeit/schemas) +[![Join the community on Spectrum](https://withspectrum.github.io/badge/badge.svg)](https://spectrum.chat/zeit) + +The schemas contained within this package are used all across the ZEIT ecosystem to validate config files, requests to APIs and more. It ensures users always send just the right data. + +## Why? + +It is important that these schemas stay in sync between projects, so that the validations are always performed in the same way for the same kind of object. + +The files located in this repository are `.js` and not `.json`, because parsing JSON takes a little bit longer. + +## Usage + +To get started, pick one of the schemas in this repository and load it: + +```js +const schema = require('@zeit/schemas/deployment/config'); +``` + +Next, set up [AJV](https://github.com/epoberezkin/ajv) (the validator) and run the schema through it: + +```js +const AJV = require('ajv'); + +const ajv = new AJV({ allErrors: true }); +const isValid = ajv.validate(schema, ); + +if (!isValid) { + console.error(`The following entries are wrong: ${JSON.stringify(ajv.errors)}`); +} +``` + +That is all! :tada: + +## Contributing + +1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device +2. Link the package to the global module directory: `npm link` +3. Within the module you want to test your local development instance of `@zeit/schemas`, just link it to the dependencies: `npm link @zeit/schemas` and load it! + +## Author + +Leo Lamprecht ([@notquiteleo](https://twitter.com/notquiteleo)) - [ZEIT](https://zeit.co) diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-env.js b/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-env.js new file mode 100644 index 0000000..324bf24 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-env.js @@ -0,0 +1,41 @@ +const maxEnvLength = 100; + +const EnvKey = { + type: 'string', + pattern: '^[A-z0-9_]+$', + minLength: 1, + maxLength: 256 +}; + +const EnvKeys = { + type: 'array', + minItems: 0, + maxItems: maxEnvLength, + uniqueItems: true, + items: EnvKey, + additionalProperties: false +}; + +const EnvValue = { + type: 'string', + minLength: 0, + maxLength: 65536 +}; + +// { 'FOO': 'BAR' } +const EnvObject = { + type: 'object', + minProperties: 0, + maxProperties: maxEnvLength, + patternProperties: { + '.+': EnvValue + }, + additionalProperties: false +}; + +module.exports = { + EnvKey, + EnvKeys, + EnvValue, + EnvObject +}; diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-static.js b/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-static.js new file mode 100644 index 0000000..55cff95 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config-static.js @@ -0,0 +1,79 @@ +module.exports = { + type: 'object', + properties: { + 'public': { + type: 'string' + }, + 'cleanUrls': { + type: [ + 'boolean', + 'array' + ] + }, + 'rewrites': { + type: 'array' + }, + 'redirects': { + type: 'array' + }, + 'headers': { + type: 'array', + maxItems: 50, + minItems: 1, + uniqueItems: true, + items: { + type: 'object', + required: ['source', 'headers'], + properties: { + source: { + type: 'string', + maxLength: 100, + minLength: 1 + }, + headers: { + type: 'array', + maxItems: 50, + minItems: 1, + uniqueItems: true, + items: { + type: 'object', + required: ['key', 'value'], + properties: { + key: { + type: 'string', + minLength: 1, + maxLength: 128, + pattern: "^[a-zA-Z0-9_!#$%&'*+.^`|~-]+$" + }, + value: { + type: 'string', + minLength: 1, + maxLength: 2048, + pattern: "^[a-zA-Z0-9_!#$%&'*+.;/:, =^`|~-]+$" + } + }, + additionalProperties: false + } + } + }, + additionalProperties: false + } + }, + 'directoryListing': { + type: [ + 'boolean', + 'array' + ] + }, + 'unlisted': { + type: 'array' + }, + 'trailingSlash': { + type: 'boolean' + }, + 'renderSingle': { + type: 'boolean' + } + }, + additionalProperties: false +}; diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config.js b/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config.js new file mode 100644 index 0000000..38d8da1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/deployment/config.js @@ -0,0 +1,145 @@ +const {EnvKeys, EnvObject} = require('./config-env'); +const staticSchema = require('./config-static'); + +module.exports = { + type: 'object', + additionalProperties: false, + dependencies: { + slot: { + type: 'object', + required: ['features'], + properties: { + features: { + type: 'object', + required: ['cloud'], + properties: { + cloud: { + 'const': 'v2' + } + } + } + } + } + }, + properties: { + 'name': { + type: 'string', + minLength: 1 + }, + 'alias': { + type: [ + 'string', + 'array' + ] + }, + 'env': { anyOf: [EnvObject, EnvKeys] }, + 'build': { + type: 'object', + additionalProperties: false, + properties: { + env: EnvObject + } + }, + 'scale': { + type: 'object', + patternProperties: { + '.+': { + type: 'object', + required: ['max', 'min'], + properties: { + max: { + anyOf: [ + { + type: 'number', + minimum: 1 + }, + {'const': 'auto'} + ] + }, + min: { + type: 'number', + minimum: 0 + } + } + } + }, + additionalProperties: false + }, + 'regions': { + type: 'array' + }, + 'dotenv': { + type: [ + 'boolean', + 'string' + ] + }, + 'files': { + type: 'array' + }, + 'type': { + type: 'string' + }, + 'forwardNpm': { + type: 'boolean' + }, + 'public': { + type: 'boolean' + }, + 'engines': { + type: 'object' + }, + 'api': { + type: 'string' + }, + 'static': staticSchema, + 'limits': { + type: 'object', + properties: { + duration: { + type: 'number', + minimum: 60000, + maximum: 60000 * 15 // max 15m runtime + }, + maxConcurrentReqs: { + type: 'number', + minimum: 1, + maximum: 256 + }, + timeout: { + type: 'number', + minimum: 60000, + maximum: 60000 * 15 // max duration + } + }, + additionalProperties: false + }, + 'features': { + type: 'object', + patternProperties: { + '.*': { + type: ['string', 'number', 'boolean'] + } + } + }, + 'github': { + type: 'object', + properties: { + enabled: { + type: 'boolean' + }, + aliasing: { + type: 'boolean' + }, + autoAlias: { + type: 'boolean' + } + }, + additionalProperties: false + }, + 'slot': { + type: 'string', + pattern: 'c.125-m512|c1-m4096|staging-*' + } + } +}; diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/package.json b/tic-tac-toe-app/node_modules/@zeit/schemas/package.json new file mode 100644 index 0000000..516726b --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/package.json @@ -0,0 +1,63 @@ +{ + "_from": "@zeit/schemas@2.6.0", + "_id": "@zeit/schemas@2.6.0", + "_inBundle": false, + "_integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==", + "_location": "/@zeit/schemas", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "@zeit/schemas@2.6.0", + "name": "@zeit/schemas", + "escapedName": "@zeit%2fschemas", + "scope": "@zeit", + "rawSpec": "2.6.0", + "saveSpec": null, + "fetchSpec": "2.6.0" + }, + "_requiredBy": [ + "/serve" + ], + "_resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", + "_shasum": "004e8e553b4cd53d538bd38eac7bcbf58a867fe3", + "_spec": "@zeit/schemas@2.6.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/serve", + "author": { + "name": "leo" + }, + "bugs": { + "url": "https://github.com/zeit/schemas/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "All schemas used for validation that are shared between our projects", + "devDependencies": { + "@zeit/best": "0.4.3", + "@zeit/eslint-config-node": "0.3.0", + "@zeit/git-hooks": "0.1.4", + "ajv": "6.5.1", + "eslint": "4.19.1" + }, + "eslintConfig": { + "extends": [ + "@zeit/eslint-config-node" + ] + }, + "git": { + "pre-commit": "lint-staged" + }, + "homepage": "https://github.com/zeit/schemas#readme", + "license": "MIT", + "name": "@zeit/schemas", + "repository": { + "type": "git", + "url": "git+https://github.com/zeit/schemas.git" + }, + "scripts": { + "lint": "zeit-eslint --ext .jsx,.js .", + "lint-staged": "git diff --diff-filter=ACMRT --cached --name-only '*.js' '*.jsx' | xargs zeit-eslint", + "test": "yarn run lint && best --verbose" + }, + "version": "2.6.0" +} diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment-env.js b/tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment-env.js new file mode 100644 index 0000000..9d3ed7b --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment-env.js @@ -0,0 +1,88 @@ +/* eslint camelcase: 0 */ +const AJV = require('ajv'); +const assert = require('assert'); +const { + EnvKeys, + EnvObject +} = require('../deployment/config-env'); + +const ajv = new AJV({allErrors: true}); + +// EnvKeys +exports.test_env_keys_valid = () => { + const isValid = ajv.validate(EnvKeys, [ + 'FOO', + 'BAR' + ]); + assert.equal(isValid, true); +}; + +exports.test_env_keys_too_short = () => { + const isValid = ajv.validate(EnvKeys, [ + 'FOO', + '' + ]); + assert.equal(isValid, false); + assert.equal(ajv.errors[0].keyword, 'minLength'); +}; + +exports.test_env_keys_too_long = () => { + const isValid = ajv.validate(EnvKeys, [ + 'FOO', + 'A'.repeat(257) + ]); + assert.equal(isValid, false); + assert.equal(ajv.errors[0].keyword, 'maxLength'); +}; + +exports.test_env_keys_invalid_chars = () => { + const isValid = ajv.validate(EnvKeys, [ + 'FOO', + 'BA,D' + ]); + assert.equal(isValid, false); + assert.equal(ajv.errors[0].keyword, 'pattern'); +}; + +exports.test_env_keys_invalid_type = () => { + const isValid = ajv.validate(EnvKeys, [ + 'FOO', + true + ]); + assert.equal(isValid, false); + assert.equal(ajv.errors[0].keyword, 'type'); +}; + +exports.test_env_keys_non_unique = () => { + const isValid = ajv.validate(EnvKeys, [ + 'FOO', + 'FOO' + ]); + assert.equal(isValid, false); + assert.equal(ajv.errors[0].keyword, 'uniqueItems'); +}; + +// EnvObject +exports.test_env_object_valid = () => { + const isValid = ajv.validate(EnvObject, { + FOO: 'BAR', + BAZ: '@secret' + }); + assert.equal(isValid, true); +}; + +exports.test_env_object_bad_type = () => { + const isValid = ajv.validate(EnvObject, { + FOO: true + }); + assert.equal(isValid, false); + assert.equal(ajv.errors[0].keyword, 'type'); +}; + +exports.test_env_object_too_long = () => { + const isValid = ajv.validate(EnvObject, { + FOO: 'a'.repeat(70000) + }); + assert.equal(isValid, false); + assert.equal(ajv.errors[0].keyword, 'maxLength'); +}; diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment.js b/tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment.js new file mode 100644 index 0000000..937778e --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/test/deployment.js @@ -0,0 +1,299 @@ +/* eslint camelcase: 0 */ +const AJV = require('ajv'); +const assert = require('assert'); +const deploymentConfigSchema = require('../deployment/config'); + +const ajv = new AJV({allErrors: true}); + +exports.test_unknown_keys = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + foo: 1, + bar: 2 + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 2); + ['foo', 'bar'].forEach((prop, i) => { + const error = ajv.errors[i]; + assert.equal(error.keyword, 'additionalProperties'); + assert.equal(error.params.additionalProperty, prop); + }); +}; + +exports.test_features_object = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + features: { + foo: 'v2', + bar: 2 + } + }); + assert.equal(isValid, true); +}; + +exports.test_slot_key = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + features: { + cloud: 'v2' + }, + slot: 'c.125-m512' + }); + assert.equal(isValid, true); +}; + +exports.test_staging_slot_key = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + features: { + cloud: 'v2' + }, + slot: 'staging-c.5-t1-w-m1024' + }); + assert.equal(isValid, true); +}; + +exports.test_invalid_slot_key = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + features: { + cloud: 'v2' + }, + slot: 'invalid-key' + }); + assert.equal(isValid, false); +}; + +exports.test_slot_key_without_cloud_v2 = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + slot: 'c.125-m512' + }); + assert.equal(isValid, false); +}; + +exports.test_invalid_features_object = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + features: { + foo: [] + } + }); + assert.equal(isValid, false); +}; + +exports.test_features_object = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + limits: { + duration: 60000, + maxConcurrentReqs: 2, + timeout: 60000 * 2 + } + }); + assert.equal(isValid, true); +}; + +exports.test_invalid_limits_object = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + limits: { + foo: [] + } + }); + assert.equal(!isValid, true); +}; + +exports.test_valid_env_types = () => { + let isValid = ajv.validate(deploymentConfigSchema, { + env: { + VALID: '1' + } + }); + assert.equal(isValid, true); + + isValid = ajv.validate(deploymentConfigSchema, { + env: [ + 'VALID' + ] + }); + assert.equal(isValid, true); +}; + +exports.test_invalid_env_types = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + env: { + INVALID: true + } + }); + assert.equal(!isValid, true); +}; + +exports.test_valid_build_env_types = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + build: { + env: { + VALID: '1' + } + } + }); + assert.equal(isValid, true); +}; + +exports.test_invalid_build_env_types = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + build: { + env: { + INVALID: true + } + } + }); + assert.equal(!isValid, true); +}; + +exports.test_invalid_static_object = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + 'static': { + foo: [] + } + }); + assert.equal(isValid, false); +}; + +exports.test_valid_static_headers_object = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + 'static': { + headers: [ + { + source: '/_next/webpack/chunks/*', + headers: [{ + key: 'Cache-Control', + value: 'adssds' + }] + }, + { + source: '/_next/static/commons/**', + headers: [{ + key: 'Cache-Control', + value: 'public, max-age=31536000, immutable' + }] + }, + { + source: '/_next/*/page/**/*.js', + headers: [{ + key: 'Cache-Control', + value: 'public, max-age=31536000, immutable' + }] + } + ] + } + }); + + assert.equal(isValid, true); +}; + +exports.test_invalid_static_headers_object = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + 'static': { + headers: [ + { + source: '/_next/webpack/chunks/*', + headers: [{ + key: ':alternate-protocol', + value: 'foo\x00bar' + }] + }, + { + source: '/_next/static/commons/**', + headers: [{ + key: 'Cache-Control', + value: 'public, max-age=31536000, immutable' + }] + } + ] + } + }); + + assert.equal(isValid, false); +}; + +exports.test_valid_static_object_trailing_slash = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + 'static': { + trailingSlash: true + } + }); + assert.equal(isValid, true); +}; + +exports.test_valid_static_object_invalid_prop = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + 'static': { + trailingSlash: [] + } + }); + assert.equal(isValid, false); +}; + +exports.test_github_enabled = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + github: { + enabled: false + } + }); + assert.equal(isValid, true); +}; + +exports.test_github_aliasing = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + github: { + aliasing: false + } + }); + assert.equal(isValid, true); +}; + +exports.test_github_auto_alias = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + github: { + autoAlias: false + } + }); + assert.equal(isValid, true); +}; + +exports.test_github_additional_field = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + github: { + abc: 'bbc' + } + }); + assert.equal(isValid, false); +}; + +exports.test_scale_sfo1 = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + scale: { + sfo1: { + min: 0, + max: 1 + } + } + }); + assert.equal(isValid, true); +}; + +exports.test_scale_all = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + scale: { + all: { + min: 0, + max: 'auto' + } + } + }); + assert.equal(isValid, true); +}; + +exports.test_scale_invalid = () => { + const isValid = ajv.validate(deploymentConfigSchema, { + scale: { + foo: { + min: -1, + max: 'auto' + } + } + }); + assert.equal(isValid, false); +}; diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/test/user.js b/tic-tac-toe-app/node_modules/@zeit/schemas/test/user.js new file mode 100644 index 0000000..224d772 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/test/user.js @@ -0,0 +1,129 @@ +/* eslint camelcase: 0 */ +const AJV = require('ajv'); +const assert = require('assert'); +const {User} = require('../user'); + +const ajv = new AJV({allErrors: true}); + +// Username +exports.test_username_null = () => { + const isValid = ajv.validate(User, { + username: null + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.username'); + assert.equal(ajv.errors[0].message, 'should be string'); +}; + +exports.test_username_invalid_pattern = () => { + const isValid = ajv.validate(User, { + username: '!!!' + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.username'); + assert.equal(ajv.errors[0].message, 'should match pattern "^[a-z][a-z0-9_-]*$"'); +}; + +exports.test_username_too_short = () => { + const isValid = ajv.validate(User, { + username: '' + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 2); + assert.equal(ajv.errors[0].dataPath, '.username'); + assert.equal(ajv.errors[0].message, 'should NOT be shorter than 1 characters'); + assert.equal(ajv.errors[1].dataPath, '.username'); + assert.equal(ajv.errors[1].message, 'should match pattern "^[a-z][a-z0-9_-]*$"'); +}; + +exports.test_username_too_long = () => { + const isValid = ajv.validate(User, { + username: 'a'.repeat(50) + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.username'); + assert.equal(ajv.errors[0].message, 'should NOT be longer than 48 characters'); +}; + +exports.test_username_valid = () => { + assert(ajv.validate(User, {username: 'n8'})); + assert(ajv.validate(User, {username: 'rauchg'})); +}; + +// Name +exports.test_name_too_short = () => { + const isValid = ajv.validate(User, { + name: '' + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.name'); + assert.equal(ajv.errors[0].message, 'should NOT be shorter than 1 characters'); +}; + +exports.test_name_too_long = () => { + const isValid = ajv.validate(User, { + name: 'a'.repeat(50) + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.name'); + assert.equal(ajv.errors[0].message, 'should NOT be longer than 32 characters'); +}; + +exports.test_name_valid = () => { + assert(ajv.validate(User, {name: 'Nate'})); +}; + +// BillingChecked +exports.test_billing_checked_null = () => { + const isValid = ajv.validate(User, { + billingChecked: null + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.billingChecked'); + assert.equal(ajv.errors[0].message, 'should be boolean'); +}; + +exports.test_billing_checked_valid = () => { + assert(ajv.validate(User, {billingChecked: true})); +}; + +// Avatar +exports.test_avatar_too_short = () => { + const isValid = ajv.validate(User, { + avatar: 'abc' + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.avatar'); + assert.equal(ajv.errors[0].message, 'should NOT be shorter than 40 characters'); +}; + +exports.test_avatar_too_long = () => { + const isValid = ajv.validate(User, { + avatar: 'a'.repeat(50) + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.avatar'); + assert.equal(ajv.errors[0].message, 'should NOT be longer than 40 characters'); +}; + +exports.test_avatar_invalid = () => { + const isValid = ajv.validate(User, { + avatar: 'n'.repeat(40) + }); + assert.equal(isValid, false); + assert.equal(ajv.errors.length, 1); + assert.equal(ajv.errors[0].dataPath, '.avatar'); + assert.equal(ajv.errors[0].message, 'should match pattern "^[0-9a-f]+$"'); +}; + +exports.test_avatar_valid = () => { + assert(ajv.validate(User, {avatar: 'a'.repeat(40)})); +}; diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/user/index.js b/tic-tac-toe-app/node_modules/@zeit/schemas/user/index.js new file mode 100644 index 0000000..714948c --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/user/index.js @@ -0,0 +1,43 @@ +const Username = { + type: 'string', + minLength: 1, + maxLength: 48, + pattern: '^[a-z][a-z0-9_-]*$' +}; + +const Name = { + type: 'string', + minLength: 1, + maxLength: 32 +}; + +const Avatar = { + type: 'string', + minLength: 40, + maxLength: 40, + pattern: '^[0-9a-f]+$' +}; + +const DefaultDeploymentDomain = { + type: 'string' +}; + +const User = { + type: 'object', + additionalProperties: false, + properties: { + username: Username, + name: Name, + billingChecked: {type: 'boolean'}, + avatar: Avatar, + defaultDeploymentDomain: DefaultDeploymentDomain + } +}; + +module.exports = { + User, + Username, + Name, + Avatar, + DefaultDeploymentDomain +}; diff --git a/tic-tac-toe-app/node_modules/@zeit/schemas/yarn.lock b/tic-tac-toe-app/node_modules/@zeit/schemas/yarn.lock new file mode 100644 index 0000000..0092fc1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/@zeit/schemas/yarn.lock @@ -0,0 +1,1520 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.0.1": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.0.tgz#50c1e2260ac0ed9439a181de3725a0168d59c48a" + +"@zeit/best@0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@zeit/best/-/best-0.4.3.tgz#eaebdfa8b24121a97b1753501ea8c9330d549b30" + dependencies: + arg "1.0.0" + chalk "2.3.1" + diff "3.5.0" + globby "8.0.0" + signal-exit "3.0.2" + +"@zeit/eslint-config-base@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@zeit/eslint-config-base/-/eslint-config-base-0.3.0.tgz#32a58c3e52eca4025604758cb4591f3d28e22fb4" + dependencies: + arg "^1.0.0" + chalk "^2.3.0" + +"@zeit/eslint-config-node@0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@zeit/eslint-config-node/-/eslint-config-node-0.3.0.tgz#6e328328f366f66c2a0549a69131bbcd9735f098" + dependencies: + "@zeit/eslint-config-base" "0.3.0" + +"@zeit/git-hooks@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@zeit/git-hooks/-/git-hooks-0.1.4.tgz#70583db5dd69726a62c7963520e67f2c3a33cc5f" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.1.tgz#f095829297706a7c9776958c0afc8930a9b9d9d8" + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + +ajv@6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.1.tgz#88ebc1263c7133937d108b80c5572e64e1d9322d" + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.1" + +ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ansi-escapes@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +arg@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/arg/-/arg-1.0.0.tgz#444d885a4e25b121640b55155ef7cd03975d6050" + +arg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arg/-/arg-1.0.1.tgz#892a26d841bd5a64880bbc8f73dd64a705910ca3" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + +arrify@^1.0.0, arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + +atob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.1.tgz#ae2d5a729477f289d60dd7f96a6314a22dd6c22a" + +babel-code-frame@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +buffer-from@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.0.tgz#87fcaa3a298358e0ade6e442cfce840740d1ad04" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +chalk@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.1.tgz#523fe2678aec7b04e8041909292fe8b17059b796" + dependencies: + ansi-styles "^3.2.0" + escape-string-regexp "^1.0.5" + supports-color "^5.2.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.2" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.2.tgz#49881b8fba67df12a96bdf3f56c0aab9e7913147" + dependencies: + color-name "1.1.1" + +color-name@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689" + +component-emitter@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + +dir-glob@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + dependencies: + esutils "^2.0.2" + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + +eslint@4.19.1: + version "4.19.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +espree@^3.5.4: + version "3.5.4" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +esquery@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + +fast-glob@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.2.tgz#71723338ac9b4e0e2fff1d6748a2a13d5ed352bf" + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.0.1" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.1" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + dependencies: + map-cache "^0.2.2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + +glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.0.1: + version "11.7.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" + +globby@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.0.tgz#e6f8340ead9a52fa417ec0e75ae664ae0026f5c6" + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.2: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +iconv-lite@^0.4.17: + version "0.4.23" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^3.3.3, ignore@^3.3.5: + version "3.3.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.8.tgz#3f8e9c35d38708a3a7e0e9abb6c73e7ee7707b2b" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + dependencies: + kind-of "^6.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0" + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + +is-odd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-2.0.0.tgz#7646624671fd7ea558ccd9a2795182f2958f1b24" + dependencies: + is-number "^4.0.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + dependencies: + path-is-inside "^1.0.1" + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + dependencies: + isobject "^3.0.1" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@^3.9.1: + version "3.12.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lodash@^4.17.4, lodash@^4.3.0: + version "4.17.10" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7" + +lru-cache@^4.0.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + dependencies: + object-visit "^1.0.0" + +merge2@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34" + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + +minimatch@^3.0.2, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +mixin-deep@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nanomatch@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-odd "^2.0.0" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + dependencies: + isobject "^3.0.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + dependencies: + pify "^3.0.0" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +process-nextick-args@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + +readable-stream@^2.2.2: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + +rimraf@^2.2.8: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + +semver@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" + +set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@3.0.2, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^5.2.0, supports-color@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +table@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +union-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + +use@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.0.tgz#14716bf03fdfefd03040aef58d8b4b85f3a7c544" + dependencies: + kind-of "^6.0.2" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + dependencies: + isexe "^2.0.0" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" diff --git a/tic-tac-toe-app/node_modules/accepts/HISTORY.md b/tic-tac-toe-app/node_modules/accepts/HISTORY.md new file mode 100644 index 0000000..0bf0417 --- /dev/null +++ b/tic-tac-toe-app/node_modules/accepts/HISTORY.md @@ -0,0 +1,236 @@ +1.3.7 / 2019-04-29 +================== + + * deps: negotiator@0.6.2 + - Fix sorting charset, encoding, and language with extra parameters + +1.3.6 / 2019-04-28 +================== + + * deps: mime-types@~2.1.24 + - deps: mime-db@~1.40.0 + +1.3.5 / 2018-02-28 +================== + + * deps: mime-types@~2.1.18 + - deps: mime-db@~1.33.0 + +1.3.4 / 2017-08-22 +================== + + * deps: mime-types@~2.1.16 + - deps: mime-db@~1.29.0 + +1.3.3 / 2016-05-02 +================== + + * deps: mime-types@~2.1.11 + - deps: mime-db@~1.23.0 + * deps: negotiator@0.6.1 + - perf: improve `Accept` parsing speed + - perf: improve `Accept-Charset` parsing speed + - perf: improve `Accept-Encoding` parsing speed + - perf: improve `Accept-Language` parsing speed + +1.3.2 / 2016-03-08 +================== + + * deps: mime-types@~2.1.10 + - Fix extension of `application/dash+xml` + - Update primary extension for `audio/mp4` + - deps: mime-db@~1.22.0 + +1.3.1 / 2016-01-19 +================== + + * deps: mime-types@~2.1.9 + - deps: mime-db@~1.21.0 + +1.3.0 / 2015-09-29 +================== + + * deps: mime-types@~2.1.7 + - deps: mime-db@~1.19.0 + * deps: negotiator@0.6.0 + - Fix including type extensions in parameters in `Accept` parsing + - Fix parsing `Accept` parameters with quoted equals + - Fix parsing `Accept` parameters with quoted semicolons + - Lazy-load modules from main entry point + - perf: delay type concatenation until needed + - perf: enable strict mode + - perf: hoist regular expressions + - perf: remove closures getting spec properties + - perf: remove a closure from media type parsing + - perf: remove property delete from media type parsing + +1.2.13 / 2015-09-06 +=================== + + * deps: mime-types@~2.1.6 + - deps: mime-db@~1.18.0 + +1.2.12 / 2015-07-30 +=================== + + * deps: mime-types@~2.1.4 + - deps: mime-db@~1.16.0 + +1.2.11 / 2015-07-16 +=================== + + * deps: mime-types@~2.1.3 + - deps: mime-db@~1.15.0 + +1.2.10 / 2015-07-01 +=================== + + * deps: mime-types@~2.1.2 + - deps: mime-db@~1.14.0 + +1.2.9 / 2015-06-08 +================== + + * deps: mime-types@~2.1.1 + - perf: fix deopt during mapping + +1.2.8 / 2015-06-07 +================== + + * deps: mime-types@~2.1.0 + - deps: mime-db@~1.13.0 + * perf: avoid argument reassignment & argument slice + * perf: avoid negotiator recursive construction + * perf: enable strict mode + * perf: remove unnecessary bitwise operator + +1.2.7 / 2015-05-10 +================== + + * deps: negotiator@0.5.3 + - Fix media type parameter matching to be case-insensitive + +1.2.6 / 2015-05-07 +================== + + * deps: mime-types@~2.0.11 + - deps: mime-db@~1.9.1 + * deps: negotiator@0.5.2 + - Fix comparing media types with quoted values + - Fix splitting media types with quoted commas + +1.2.5 / 2015-03-13 +================== + + * deps: mime-types@~2.0.10 + - deps: mime-db@~1.8.0 + +1.2.4 / 2015-02-14 +================== + + * Support Node.js 0.6 + * deps: mime-types@~2.0.9 + - deps: mime-db@~1.7.0 + * deps: negotiator@0.5.1 + - Fix preference sorting to be stable for long acceptable lists + +1.2.3 / 2015-01-31 +================== + + * deps: mime-types@~2.0.8 + - deps: mime-db@~1.6.0 + +1.2.2 / 2014-12-30 +================== + + * deps: mime-types@~2.0.7 + - deps: mime-db@~1.5.0 + +1.2.1 / 2014-12-30 +================== + + * deps: mime-types@~2.0.5 + - deps: mime-db@~1.3.1 + +1.2.0 / 2014-12-19 +================== + + * deps: negotiator@0.5.0 + - Fix list return order when large accepted list + - Fix missing identity encoding when q=0 exists + - Remove dynamic building of Negotiator class + +1.1.4 / 2014-12-10 +================== + + * deps: mime-types@~2.0.4 + - deps: mime-db@~1.3.0 + +1.1.3 / 2014-11-09 +================== + + * deps: mime-types@~2.0.3 + - deps: mime-db@~1.2.0 + +1.1.2 / 2014-10-14 +================== + + * deps: negotiator@0.4.9 + - Fix error when media type has invalid parameter + +1.1.1 / 2014-09-28 +================== + + * deps: mime-types@~2.0.2 + - deps: mime-db@~1.1.0 + * deps: negotiator@0.4.8 + - Fix all negotiations to be case-insensitive + - Stable sort preferences of same quality according to client order + +1.1.0 / 2014-09-02 +================== + + * update `mime-types` + +1.0.7 / 2014-07-04 +================== + + * Fix wrong type returned from `type` when match after unknown extension + +1.0.6 / 2014-06-24 +================== + + * deps: negotiator@0.4.7 + +1.0.5 / 2014-06-20 +================== + + * fix crash when unknown extension given + +1.0.4 / 2014-06-19 +================== + + * use `mime-types` + +1.0.3 / 2014-06-11 +================== + + * deps: negotiator@0.4.6 + - Order by specificity when quality is the same + +1.0.2 / 2014-05-29 +================== + + * Fix interpretation when header not in request + * deps: pin negotiator@0.4.5 + +1.0.1 / 2014-01-18 +================== + + * Identity encoding isn't always acceptable + * deps: negotiator@~0.4.0 + +1.0.0 / 2013-12-27 +================== + + * Genesis diff --git a/tic-tac-toe-app/node_modules/accepts/LICENSE b/tic-tac-toe-app/node_modules/accepts/LICENSE new file mode 100644 index 0000000..0616607 --- /dev/null +++ b/tic-tac-toe-app/node_modules/accepts/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/accepts/README.md b/tic-tac-toe-app/node_modules/accepts/README.md new file mode 100644 index 0000000..66a2f54 --- /dev/null +++ b/tic-tac-toe-app/node_modules/accepts/README.md @@ -0,0 +1,142 @@ +# accepts + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Higher level content negotiation based on [negotiator](https://www.npmjs.com/package/negotiator). +Extracted from [koa](https://www.npmjs.com/package/koa) for general use. + +In addition to negotiator, it allows: + +- Allows types as an array or arguments list, ie `(['text/html', 'application/json'])` + as well as `('text/html', 'application/json')`. +- Allows type shorthands such as `json`. +- Returns `false` when no types match +- Treats non-existent headers as `*` + +## Installation + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```sh +$ npm install accepts +``` + +## API + + + +```js +var accepts = require('accepts') +``` + +### accepts(req) + +Create a new `Accepts` object for the given `req`. + +#### .charset(charsets) + +Return the first accepted charset. If nothing in `charsets` is accepted, +then `false` is returned. + +#### .charsets() + +Return the charsets that the request accepts, in the order of the client's +preference (most preferred first). + +#### .encoding(encodings) + +Return the first accepted encoding. If nothing in `encodings` is accepted, +then `false` is returned. + +#### .encodings() + +Return the encodings that the request accepts, in the order of the client's +preference (most preferred first). + +#### .language(languages) + +Return the first accepted language. If nothing in `languages` is accepted, +then `false` is returned. + +#### .languages() + +Return the languages that the request accepts, in the order of the client's +preference (most preferred first). + +#### .type(types) + +Return the first accepted type (and it is returned as the same text as what +appears in the `types` array). If nothing in `types` is accepted, then `false` +is returned. + +The `types` array can contain full MIME types or file extensions. Any value +that is not a full MIME types is passed to `require('mime-types').lookup`. + +#### .types() + +Return the types that the request accepts, in the order of the client's +preference (most preferred first). + +## Examples + +### Simple type negotiation + +This simple example shows how to use `accepts` to return a different typed +respond body based on what the client wants to accept. The server lists it's +preferences in order and will get back the best match between the client and +server. + +```js +var accepts = require('accepts') +var http = require('http') + +function app (req, res) { + var accept = accepts(req) + + // the order of this list is significant; should be server preferred order + switch (accept.type(['json', 'html'])) { + case 'json': + res.setHeader('Content-Type', 'application/json') + res.write('{"hello":"world!"}') + break + case 'html': + res.setHeader('Content-Type', 'text/html') + res.write('hello, world!') + break + default: + // the fallback is text/plain, so no need to specify it above + res.setHeader('Content-Type', 'text/plain') + res.write('hello, world!') + break + } + + res.end() +} + +http.createServer(app).listen(3000) +``` + +You can test this out with the cURL program: +```sh +curl -I -H'Accept: text/html' http://localhost:3000/ +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/accepts/master +[coveralls-url]: https://coveralls.io/r/jshttp/accepts?branch=master +[node-version-image]: https://badgen.net/npm/node/accepts +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/accepts +[npm-url]: https://npmjs.org/package/accepts +[npm-version-image]: https://badgen.net/npm/v/accepts +[travis-image]: https://badgen.net/travis/jshttp/accepts/master +[travis-url]: https://travis-ci.org/jshttp/accepts diff --git a/tic-tac-toe-app/node_modules/accepts/index.js b/tic-tac-toe-app/node_modules/accepts/index.js new file mode 100644 index 0000000..e9b2f63 --- /dev/null +++ b/tic-tac-toe-app/node_modules/accepts/index.js @@ -0,0 +1,238 @@ +/*! + * accepts + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var Negotiator = require('negotiator') +var mime = require('mime-types') + +/** + * Module exports. + * @public + */ + +module.exports = Accepts + +/** + * Create a new Accepts object for the given req. + * + * @param {object} req + * @public + */ + +function Accepts (req) { + if (!(this instanceof Accepts)) { + return new Accepts(req) + } + + this.headers = req.headers + this.negotiator = new Negotiator(req) +} + +/** + * Check if the given `type(s)` is acceptable, returning + * the best match when true, otherwise `undefined`, in which + * case you should respond with 406 "Not Acceptable". + * + * The `type` value may be a single mime type string + * such as "application/json", the extension name + * such as "json" or an array `["json", "html", "text/plain"]`. When a list + * or array is given the _best_ match, if any is returned. + * + * Examples: + * + * // Accept: text/html + * this.types('html'); + * // => "html" + * + * // Accept: text/*, application/json + * this.types('html'); + * // => "html" + * this.types('text/html'); + * // => "text/html" + * this.types('json', 'text'); + * // => "json" + * this.types('application/json'); + * // => "application/json" + * + * // Accept: text/*, application/json + * this.types('image/png'); + * this.types('png'); + * // => undefined + * + * // Accept: text/*;q=.5, application/json + * this.types(['html', 'json']); + * this.types('html', 'json'); + * // => "json" + * + * @param {String|Array} types... + * @return {String|Array|Boolean} + * @public + */ + +Accepts.prototype.type = +Accepts.prototype.types = function (types_) { + var types = types_ + + // support flattened arguments + if (types && !Array.isArray(types)) { + types = new Array(arguments.length) + for (var i = 0; i < types.length; i++) { + types[i] = arguments[i] + } + } + + // no types, return all requested types + if (!types || types.length === 0) { + return this.negotiator.mediaTypes() + } + + // no accept header, return first given type + if (!this.headers.accept) { + return types[0] + } + + var mimes = types.map(extToMime) + var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)) + var first = accepts[0] + + return first + ? types[mimes.indexOf(first)] + : false +} + +/** + * Return accepted encodings or best fit based on `encodings`. + * + * Given `Accept-Encoding: gzip, deflate` + * an array sorted by quality is returned: + * + * ['gzip', 'deflate'] + * + * @param {String|Array} encodings... + * @return {String|Array} + * @public + */ + +Accepts.prototype.encoding = +Accepts.prototype.encodings = function (encodings_) { + var encodings = encodings_ + + // support flattened arguments + if (encodings && !Array.isArray(encodings)) { + encodings = new Array(arguments.length) + for (var i = 0; i < encodings.length; i++) { + encodings[i] = arguments[i] + } + } + + // no encodings, return all requested encodings + if (!encodings || encodings.length === 0) { + return this.negotiator.encodings() + } + + return this.negotiator.encodings(encodings)[0] || false +} + +/** + * Return accepted charsets or best fit based on `charsets`. + * + * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5` + * an array sorted by quality is returned: + * + * ['utf-8', 'utf-7', 'iso-8859-1'] + * + * @param {String|Array} charsets... + * @return {String|Array} + * @public + */ + +Accepts.prototype.charset = +Accepts.prototype.charsets = function (charsets_) { + var charsets = charsets_ + + // support flattened arguments + if (charsets && !Array.isArray(charsets)) { + charsets = new Array(arguments.length) + for (var i = 0; i < charsets.length; i++) { + charsets[i] = arguments[i] + } + } + + // no charsets, return all requested charsets + if (!charsets || charsets.length === 0) { + return this.negotiator.charsets() + } + + return this.negotiator.charsets(charsets)[0] || false +} + +/** + * Return accepted languages or best fit based on `langs`. + * + * Given `Accept-Language: en;q=0.8, es, pt` + * an array sorted by quality is returned: + * + * ['es', 'pt', 'en'] + * + * @param {String|Array} langs... + * @return {Array|String} + * @public + */ + +Accepts.prototype.lang = +Accepts.prototype.langs = +Accepts.prototype.language = +Accepts.prototype.languages = function (languages_) { + var languages = languages_ + + // support flattened arguments + if (languages && !Array.isArray(languages)) { + languages = new Array(arguments.length) + for (var i = 0; i < languages.length; i++) { + languages[i] = arguments[i] + } + } + + // no languages, return all requested languages + if (!languages || languages.length === 0) { + return this.negotiator.languages() + } + + return this.negotiator.languages(languages)[0] || false +} + +/** + * Convert extnames to mime. + * + * @param {String} type + * @return {String} + * @private + */ + +function extToMime (type) { + return type.indexOf('/') === -1 + ? mime.lookup(type) + : type +} + +/** + * Check if mime is valid. + * + * @param {String} type + * @return {String} + * @private + */ + +function validMime (type) { + return typeof type === 'string' +} diff --git a/tic-tac-toe-app/node_modules/accepts/package.json b/tic-tac-toe-app/node_modules/accepts/package.json new file mode 100644 index 0000000..2942365 --- /dev/null +++ b/tic-tac-toe-app/node_modules/accepts/package.json @@ -0,0 +1,86 @@ +{ + "_from": "accepts@~1.3.5", + "_id": "accepts@1.3.7", + "_inBundle": false, + "_integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "_location": "/accepts", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "accepts@~1.3.5", + "name": "accepts", + "escapedName": "accepts", + "rawSpec": "~1.3.5", + "saveSpec": null, + "fetchSpec": "~1.3.5" + }, + "_requiredBy": [ + "/compression" + ], + "_resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "_shasum": "531bc726517a3b2b41f850021c6cc15eaab507cd", + "_spec": "accepts@~1.3.5", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/compression", + "bugs": { + "url": "https://github.com/jshttp/accepts/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + }, + { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com" + } + ], + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "deprecated": false, + "description": "Higher-level content negotiation", + "devDependencies": { + "deep-equal": "1.0.1", + "eslint": "5.16.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.17.2", + "eslint-plugin-markdown": "1.0.0", + "eslint-plugin-node": "8.0.1", + "eslint-plugin-promise": "4.1.1", + "eslint-plugin-standard": "4.0.0", + "mocha": "6.1.4", + "nyc": "14.0.0" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "homepage": "https://github.com/jshttp/accepts#readme", + "keywords": [ + "content", + "negotiation", + "accept", + "accepts" + ], + "license": "MIT", + "name": "accepts", + "repository": { + "type": "git", + "url": "git+https://github.com/jshttp/accepts.git" + }, + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --check-leaks --bail test/", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-travis": "nyc --reporter=text npm test" + }, + "version": "1.3.7" +} diff --git a/tic-tac-toe-app/node_modules/acorn/CHANGELOG.md b/tic-tac-toe-app/node_modules/acorn/CHANGELOG.md new file mode 100644 index 0000000..32f5ce8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/acorn/CHANGELOG.md @@ -0,0 +1,574 @@ +## 7.1.1 (2020-03-01) + +### Bug fixes + +Treat `\8` and `\9` as invalid escapes in template strings. + +Allow unicode escapes in property names that are keywords. + +Don't error on an exponential operator expression as argument to `await`. + +More carefully check for valid UTF16 surrogate pairs in regexp validator. + +## 7.1.0 (2019-09-24) + +### Bug fixes + +Disallow trailing object literal commas when ecmaVersion is less than 5. + +### New features + +Add a static `acorn` property to the `Parser` class that contains the entire module interface, to allow plugins to access the instance of the library that they are acting on. + +## 7.0.0 (2019-08-13) + +### Breaking changes + +Changes the node format for dynamic imports to use the `ImportExpression` node type, as defined in [ESTree](https://github.com/estree/estree/blob/master/es2020.md#importexpression). + +Makes 10 (ES2019) the default value for the `ecmaVersion` option. + +## 6.3.0 (2019-08-12) + +### New features + +`sourceType: "module"` can now be used even when `ecmaVersion` is less than 6, to parse module-style code that otherwise conforms to an older standard. + +## 6.2.1 (2019-07-21) + +### Bug fixes + +Fix bug causing Acorn to treat some characters as identifier characters that shouldn't be treated as such. + +Fix issue where setting the `allowReserved` option to `"never"` allowed reserved words in some circumstances. + +## 6.2.0 (2019-07-04) + +### Bug fixes + +Improve valid assignment checking in `for`/`in` and `for`/`of` loops. + +Disallow binding `let` in patterns. + +### New features + +Support bigint syntax with `ecmaVersion` >= 11. + +Support dynamic `import` syntax with `ecmaVersion` >= 11. + +Upgrade to Unicode version 12. + +## 6.1.1 (2019-02-27) + +### Bug fixes + +Fix bug that caused parsing default exports of with names to fail. + +## 6.1.0 (2019-02-08) + +### Bug fixes + +Fix scope checking when redefining a `var` as a lexical binding. + +### New features + +Split up `parseSubscripts` to use an internal `parseSubscript` method to make it easier to extend with plugins. + +## 6.0.7 (2019-02-04) + +### Bug fixes + +Check that exported bindings are defined. + +Don't treat `\u180e` as a whitespace character. + +Check for duplicate parameter names in methods. + +Don't allow shorthand properties when they are generators or async methods. + +Forbid binding `await` in async arrow function's parameter list. + +## 6.0.6 (2019-01-30) + +### Bug fixes + +The content of class declarations and expressions is now always parsed in strict mode. + +Don't allow `let` or `const` to bind the variable name `let`. + +Treat class declarations as lexical. + +Don't allow a generator function declaration as the sole body of an `if` or `else`. + +Ignore `"use strict"` when after an empty statement. + +Allow string line continuations with special line terminator characters. + +Treat `for` bodies as part of the `for` scope when checking for conflicting bindings. + +Fix bug with parsing `yield` in a `for` loop initializer. + +Implement special cases around scope checking for functions. + +## 6.0.5 (2019-01-02) + +### Bug fixes + +Fix TypeScript type for `Parser.extend` and add `allowAwaitOutsideFunction` to options type. + +Don't treat `let` as a keyword when the next token is `{` on the next line. + +Fix bug that broke checking for parentheses around an object pattern in a destructuring assignment when `preserveParens` was on. + +## 6.0.4 (2018-11-05) + +### Bug fixes + +Further improvements to tokenizing regular expressions in corner cases. + +## 6.0.3 (2018-11-04) + +### Bug fixes + +Fix bug in tokenizing an expression-less return followed by a function followed by a regular expression. + +Remove stray symlink in the package tarball. + +## 6.0.2 (2018-09-26) + +### Bug fixes + +Fix bug where default expressions could fail to parse inside an object destructuring assignment expression. + +## 6.0.1 (2018-09-14) + +### Bug fixes + +Fix wrong value in `version` export. + +## 6.0.0 (2018-09-14) + +### Bug fixes + +Better handle variable-redefinition checks for catch bindings and functions directly under if statements. + +Forbid `new.target` in top-level arrow functions. + +Fix issue with parsing a regexp after `yield` in some contexts. + +### New features + +The package now comes with TypeScript definitions. + +### Breaking changes + +The default value of the `ecmaVersion` option is now 9 (2018). + +Plugins work differently, and will have to be rewritten to work with this version. + +The loose parser and walker have been moved into separate packages (`acorn-loose` and `acorn-walk`). + +## 5.7.3 (2018-09-10) + +### Bug fixes + +Fix failure to tokenize regexps after expressions like `x.of`. + +Better error message for unterminated template literals. + +## 5.7.2 (2018-08-24) + +### Bug fixes + +Properly handle `allowAwaitOutsideFunction` in for statements. + +Treat function declarations at the top level of modules like let bindings. + +Don't allow async function declarations as the only statement under a label. + +## 5.7.0 (2018-06-15) + +### New features + +Upgraded to Unicode 11. + +## 5.6.0 (2018-05-31) + +### New features + +Allow U+2028 and U+2029 in string when ECMAVersion >= 10. + +Allow binding-less catch statements when ECMAVersion >= 10. + +Add `allowAwaitOutsideFunction` option for parsing top-level `await`. + +## 5.5.3 (2018-03-08) + +### Bug fixes + +A _second_ republish of the code in 5.5.1, this time with yarn, to hopefully get valid timestamps. + +## 5.5.2 (2018-03-08) + +### Bug fixes + +A republish of the code in 5.5.1 in an attempt to solve an issue with the file timestamps in the npm package being 0. + +## 5.5.1 (2018-03-06) + +### Bug fixes + +Fix misleading error message for octal escapes in template strings. + +## 5.5.0 (2018-02-27) + +### New features + +The identifier character categorization is now based on Unicode version 10. + +Acorn will now validate the content of regular expressions, including new ES9 features. + +## 5.4.0 (2018-02-01) + +### Bug fixes + +Disallow duplicate or escaped flags on regular expressions. + +Disallow octal escapes in strings in strict mode. + +### New features + +Add support for async iteration. + +Add support for object spread and rest. + +## 5.3.0 (2017-12-28) + +### Bug fixes + +Fix parsing of floating point literals with leading zeroes in loose mode. + +Allow duplicate property names in object patterns. + +Don't allow static class methods named `prototype`. + +Disallow async functions directly under `if` or `else`. + +Parse right-hand-side of `for`/`of` as an assignment expression. + +Stricter parsing of `for`/`in`. + +Don't allow unicode escapes in contextual keywords. + +### New features + +Parsing class members was factored into smaller methods to allow plugins to hook into it. + +## 5.2.1 (2017-10-30) + +### Bug fixes + +Fix a token context corruption bug. + +## 5.2.0 (2017-10-30) + +### Bug fixes + +Fix token context tracking for `class` and `function` in property-name position. + +Make sure `%*` isn't parsed as a valid operator. + +Allow shorthand properties `get` and `set` to be followed by default values. + +Disallow `super` when not in callee or object position. + +### New features + +Support [`directive` property](https://github.com/estree/estree/compare/b3de58c9997504d6fba04b72f76e6dd1619ee4eb...1da8e603237144f44710360f8feb7a9977e905e0) on directive expression statements. + +## 5.1.2 (2017-09-04) + +### Bug fixes + +Disable parsing of legacy HTML-style comments in modules. + +Fix parsing of async methods whose names are keywords. + +## 5.1.1 (2017-07-06) + +### Bug fixes + +Fix problem with disambiguating regexp and division after a class. + +## 5.1.0 (2017-07-05) + +### Bug fixes + +Fix tokenizing of regexps in an object-desctructuring `for`/`of` loop and after `yield`. + +Parse zero-prefixed numbers with non-octal digits as decimal. + +Allow object/array patterns in rest parameters. + +Don't error when `yield` is used as a property name. + +Allow `async` as a shorthand object property. + +### New features + +Implement the [template literal revision proposal](https://github.com/tc39/proposal-template-literal-revision) for ES9. + +## 5.0.3 (2017-04-01) + +### Bug fixes + +Fix spurious duplicate variable definition errors for named functions. + +## 5.0.2 (2017-03-30) + +### Bug fixes + +A binary operator after a parenthesized arrow expression is no longer incorrectly treated as an error. + +## 5.0.0 (2017-03-28) + +### Bug fixes + +Raise an error for duplicated lexical bindings. + +Fix spurious error when an assignement expression occurred after a spread expression. + +Accept regular expressions after `of` (in `for`/`of`), `yield` (in a generator), and braced arrow functions. + +Allow labels in front or `var` declarations, even in strict mode. + +### Breaking changes + +Parse declarations following `export default` as declaration nodes, not expressions. This means that class and function declarations nodes can now have `null` as their `id`. + +## 4.0.11 (2017-02-07) + +### Bug fixes + +Allow all forms of member expressions to be parenthesized as lvalue. + +## 4.0.10 (2017-02-07) + +### Bug fixes + +Don't expect semicolons after default-exported functions or classes, even when they are expressions. + +Check for use of `'use strict'` directives in non-simple parameter functions, even when already in strict mode. + +## 4.0.9 (2017-02-06) + +### Bug fixes + +Fix incorrect error raised for parenthesized simple assignment targets, so that `(x) = 1` parses again. + +## 4.0.8 (2017-02-03) + +### Bug fixes + +Solve spurious parenthesized pattern errors by temporarily erring on the side of accepting programs that our delayed errors don't handle correctly yet. + +## 4.0.7 (2017-02-02) + +### Bug fixes + +Accept invalidly rejected code like `(x).y = 2` again. + +Don't raise an error when a function _inside_ strict code has a non-simple parameter list. + +## 4.0.6 (2017-02-02) + +### Bug fixes + +Fix exponential behavior (manifesting itself as a complete hang for even relatively small source files) introduced by the new 'use strict' check. + +## 4.0.5 (2017-02-02) + +### Bug fixes + +Disallow parenthesized pattern expressions. + +Allow keywords as export names. + +Don't allow the `async` keyword to be parenthesized. + +Properly raise an error when a keyword contains a character escape. + +Allow `"use strict"` to appear after other string literal expressions. + +Disallow labeled declarations. + +## 4.0.4 (2016-12-19) + +### Bug fixes + +Fix crash when `export` was followed by a keyword that can't be +exported. + +## 4.0.3 (2016-08-16) + +### Bug fixes + +Allow regular function declarations inside single-statement `if` branches in loose mode. Forbid them entirely in strict mode. + +Properly parse properties named `async` in ES2017 mode. + +Fix bug where reserved words were broken in ES2017 mode. + +## 4.0.2 (2016-08-11) + +### Bug fixes + +Don't ignore period or 'e' characters after octal numbers. + +Fix broken parsing for call expressions in default parameter values of arrow functions. + +## 4.0.1 (2016-08-08) + +### Bug fixes + +Fix false positives in duplicated export name errors. + +## 4.0.0 (2016-08-07) + +### Breaking changes + +The default `ecmaVersion` option value is now 7. + +A number of internal method signatures changed, so plugins might need to be updated. + +### Bug fixes + +The parser now raises errors on duplicated export names. + +`arguments` and `eval` can now be used in shorthand properties. + +Duplicate parameter names in non-simple argument lists now always produce an error. + +### New features + +The `ecmaVersion` option now also accepts year-style version numbers +(2015, etc). + +Support for `async`/`await` syntax when `ecmaVersion` is >= 8. + +Support for trailing commas in call expressions when `ecmaVersion` is >= 8. + +## 3.3.0 (2016-07-25) + +### Bug fixes + +Fix bug in tokenizing of regexp operator after a function declaration. + +Fix parser crash when parsing an array pattern with a hole. + +### New features + +Implement check against complex argument lists in functions that enable strict mode in ES7. + +## 3.2.0 (2016-06-07) + +### Bug fixes + +Improve handling of lack of unicode regexp support in host +environment. + +Properly reject shorthand properties whose name is a keyword. + +### New features + +Visitors created with `visit.make` now have their base as _prototype_, rather than copying properties into a fresh object. + +## 3.1.0 (2016-04-18) + +### Bug fixes + +Properly tokenize the division operator directly after a function expression. + +Allow trailing comma in destructuring arrays. + +## 3.0.4 (2016-02-25) + +### Fixes + +Allow update expressions as left-hand-side of the ES7 exponential operator. + +## 3.0.2 (2016-02-10) + +### Fixes + +Fix bug that accidentally made `undefined` a reserved word when parsing ES7. + +## 3.0.0 (2016-02-10) + +### Breaking changes + +The default value of the `ecmaVersion` option is now 6 (used to be 5). + +Support for comprehension syntax (which was dropped from the draft spec) has been removed. + +### Fixes + +`let` and `yield` are now “contextual keywords”, meaning you can mostly use them as identifiers in ES5 non-strict code. + +A parenthesized class or function expression after `export default` is now parsed correctly. + +### New features + +When `ecmaVersion` is set to 7, Acorn will parse the exponentiation operator (`**`). + +The identifier character ranges are now based on Unicode 8.0.0. + +Plugins can now override the `raiseRecoverable` method to override the way non-critical errors are handled. + +## 2.7.0 (2016-01-04) + +### Fixes + +Stop allowing rest parameters in setters. + +Disallow `y` rexexp flag in ES5. + +Disallow `\00` and `\000` escapes in strict mode. + +Raise an error when an import name is a reserved word. + +## 2.6.2 (2015-11-10) + +### Fixes + +Don't crash when no options object is passed. + +## 2.6.0 (2015-11-09) + +### Fixes + +Add `await` as a reserved word in module sources. + +Disallow `yield` in a parameter default value for a generator. + +Forbid using a comma after a rest pattern in an array destructuring. + +### New features + +Support parsing stdin in command-line tool. + +## 2.5.0 (2015-10-27) + +### Fixes + +Fix tokenizer support in the command-line tool. + +Stop allowing `new.target` outside of functions. + +Remove legacy `guard` and `guardedHandler` properties from try nodes. + +Stop allowing multiple `__proto__` properties on an object literal in strict mode. + +Don't allow rest parameters to be non-identifier patterns. + +Check for duplicate paramter names in arrow functions. diff --git a/tic-tac-toe-app/node_modules/acorn/LICENSE b/tic-tac-toe-app/node_modules/acorn/LICENSE new file mode 100644 index 0000000..2c0632b --- /dev/null +++ b/tic-tac-toe-app/node_modules/acorn/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) 2012-2018 by various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/acorn/README.md b/tic-tac-toe-app/node_modules/acorn/README.md new file mode 100644 index 0000000..585f273 --- /dev/null +++ b/tic-tac-toe-app/node_modules/acorn/README.md @@ -0,0 +1,270 @@ +# Acorn + +A tiny, fast JavaScript parser written in JavaScript. + +## Community + +Acorn is open source software released under an +[MIT license](https://github.com/acornjs/acorn/blob/master/acorn/LICENSE). + +You are welcome to +[report bugs](https://github.com/acornjs/acorn/issues) or create pull +requests on [github](https://github.com/acornjs/acorn). For questions +and discussion, please use the +[Tern discussion forum](https://discuss.ternjs.net). + +## Installation + +The easiest way to install acorn is from [`npm`](https://www.npmjs.com/): + +```sh +npm install acorn +``` + +Alternately, you can download the source and build acorn yourself: + +```sh +git clone https://github.com/acornjs/acorn.git +cd acorn +npm install +``` + +## Interface + +**parse**`(input, options)` is the main interface to the library. The +`input` parameter is a string, `options` can be undefined or an object +setting some of the options listed below. The return value will be an +abstract syntax tree object as specified by the [ESTree +spec](https://github.com/estree/estree). + +```javascript +let acorn = require("acorn"); +console.log(acorn.parse("1 + 1")); +``` + +When encountering a syntax error, the parser will raise a +`SyntaxError` object with a meaningful message. The error object will +have a `pos` property that indicates the string offset at which the +error occurred, and a `loc` object that contains a `{line, column}` +object referring to that same position. + +Options can be provided by passing a second argument, which should be +an object containing any of these fields: + +- **ecmaVersion**: Indicates the ECMAScript version to parse. Must be + either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), 10 (2019) or 11 + (2020, partial support). This influences support for strict mode, + the set of reserved words, and support for new syntax features. + Default is 10. + + **NOTE**: Only 'stage 4' (finalized) ECMAScript features are being + implemented by Acorn. Other proposed new features can be implemented + through plugins. + +- **sourceType**: Indicate the mode the code should be parsed in. Can be + either `"script"` or `"module"`. This influences global strict mode + and parsing of `import` and `export` declarations. + + **NOTE**: If set to `"module"`, then static `import` / `export` syntax + will be valid, even if `ecmaVersion` is less than 6. + +- **onInsertedSemicolon**: If given a callback, that callback will be + called whenever a missing semicolon is inserted by the parser. The + callback will be given the character offset of the point where the + semicolon is inserted as argument, and if `locations` is on, also a + `{line, column}` object representing this position. + +- **onTrailingComma**: Like `onInsertedSemicolon`, but for trailing + commas. + +- **allowReserved**: If `false`, using a reserved word will generate + an error. Defaults to `true` for `ecmaVersion` 3, `false` for higher + versions. When given the value `"never"`, reserved words and + keywords can also not be used as property names (as in Internet + Explorer's old parser). + +- **allowReturnOutsideFunction**: By default, a return statement at + the top level raises an error. Set this to `true` to accept such + code. + +- **allowImportExportEverywhere**: By default, `import` and `export` + declarations can only appear at a program's top level. Setting this + option to `true` allows them anywhere where a statement is allowed. + +- **allowAwaitOutsideFunction**: By default, `await` expressions can + only appear inside `async` functions. Setting this option to + `true` allows to have top-level `await` expressions. They are + still not allowed in non-`async` functions, though. + +- **allowHashBang**: When this is enabled (off by default), if the + code starts with the characters `#!` (as in a shellscript), the + first line will be treated as a comment. + +- **locations**: When `true`, each node has a `loc` object attached + with `start` and `end` subobjects, each of which contains the + one-based line and zero-based column numbers in `{line, column}` + form. Default is `false`. + +- **onToken**: If a function is passed for this option, each found + token will be passed in same format as tokens returned from + `tokenizer().getToken()`. + + If array is passed, each found token is pushed to it. + + Note that you are not allowed to call the parser from the + callback—that will corrupt its internal state. + +- **onComment**: If a function is passed for this option, whenever a + comment is encountered the function will be called with the + following parameters: + + - `block`: `true` if the comment is a block comment, false if it + is a line comment. + - `text`: The content of the comment. + - `start`: Character offset of the start of the comment. + - `end`: Character offset of the end of the comment. + + When the `locations` options is on, the `{line, column}` locations + of the comment’s start and end are passed as two additional + parameters. + + If array is passed for this option, each found comment is pushed + to it as object in Esprima format: + + ```javascript + { + "type": "Line" | "Block", + "value": "comment text", + "start": Number, + "end": Number, + // If `locations` option is on: + "loc": { + "start": {line: Number, column: Number} + "end": {line: Number, column: Number} + }, + // If `ranges` option is on: + "range": [Number, Number] + } + ``` + + Note that you are not allowed to call the parser from the + callback—that will corrupt its internal state. + +- **ranges**: Nodes have their start and end characters offsets + recorded in `start` and `end` properties (directly on the node, + rather than the `loc` object, which holds line/column data. To also + add a + [semi-standardized](https://bugzilla.mozilla.org/show_bug.cgi?id=745678) + `range` property holding a `[start, end]` array with the same + numbers, set the `ranges` option to `true`. + +- **program**: It is possible to parse multiple files into a single + AST by passing the tree produced by parsing the first file as the + `program` option in subsequent parses. This will add the toplevel + forms of the parsed file to the "Program" (top) node of an existing + parse tree. + +- **sourceFile**: When the `locations` option is `true`, you can pass + this option to add a `source` attribute in every node’s `loc` + object. Note that the contents of this option are not examined or + processed in any way; you are free to use whatever format you + choose. + +- **directSourceFile**: Like `sourceFile`, but a `sourceFile` property + will be added (regardless of the `location` option) directly to the + nodes, rather than the `loc` object. + +- **preserveParens**: If this option is `true`, parenthesized expressions + are represented by (non-standard) `ParenthesizedExpression` nodes + that have a single `expression` property containing the expression + inside parentheses. + +**parseExpressionAt**`(input, offset, options)` will parse a single +expression in a string, and return its AST. It will not complain if +there is more of the string left after the expression. + +**tokenizer**`(input, options)` returns an object with a `getToken` +method that can be called repeatedly to get the next token, a `{start, +end, type, value}` object (with added `loc` property when the +`locations` option is enabled and `range` property when the `ranges` +option is enabled). When the token's type is `tokTypes.eof`, you +should stop calling the method, since it will keep returning that same +token forever. + +In ES6 environment, returned result can be used as any other +protocol-compliant iterable: + +```javascript +for (let token of acorn.tokenizer(str)) { + // iterate over the tokens +} + +// transform code to array of tokens: +var tokens = [...acorn.tokenizer(str)]; +``` + +**tokTypes** holds an object mapping names to the token type objects +that end up in the `type` properties of tokens. + +**getLineInfo**`(input, offset)` can be used to get a `{line, +column}` object for a given program string and offset. + +### The `Parser` class + +Instances of the **`Parser`** class contain all the state and logic +that drives a parse. It has static methods `parse`, +`parseExpressionAt`, and `tokenizer` that match the top-level +functions by the same name. + +When extending the parser with plugins, you need to call these methods +on the extended version of the class. To extend a parser with plugins, +you can use its static `extend` method. + +```javascript +var acorn = require("acorn"); +var jsx = require("acorn-jsx"); +var JSXParser = acorn.Parser.extend(jsx()); +JSXParser.parse("foo()"); +``` + +The `extend` method takes any number of plugin values, and returns a +new `Parser` class that includes the extra parser logic provided by +the plugins. + +## Command line interface + +The `bin/acorn` utility can be used to parse a file from the command +line. It accepts as arguments its input file and the following +options: + +- `--ecma3|--ecma5|--ecma6|--ecma7|--ecma8|--ecma9|--ecma10`: Sets the ECMAScript version + to parse. Default is version 9. + +- `--module`: Sets the parsing mode to `"module"`. Is set to `"script"` otherwise. + +- `--locations`: Attaches a "loc" object to each node with "start" and + "end" subobjects, each of which contains the one-based line and + zero-based column numbers in `{line, column}` form. + +- `--allow-hash-bang`: If the code starts with the characters #! (as + in a shellscript), the first line will be treated as a comment. + +- `--compact`: No whitespace is used in the AST output. + +- `--silent`: Do not output the AST, just return the exit status. + +- `--help`: Print the usage information and quit. + +The utility spits out the syntax tree as JSON data. + +## Existing plugins + + - [`acorn-jsx`](https://github.com/RReverser/acorn-jsx): Parse [Facebook JSX syntax extensions](https://github.com/facebook/jsx) + +Plugins for ECMAScript proposals: + + - [`acorn-stage3`](https://github.com/acornjs/acorn-stage3): Parse most stage 3 proposals, bundling: + - [`acorn-class-fields`](https://github.com/acornjs/acorn-class-fields): Parse [class fields proposal](https://github.com/tc39/proposal-class-fields) + - [`acorn-import-meta`](https://github.com/acornjs/acorn-import-meta): Parse [import.meta proposal](https://github.com/tc39/proposal-import-meta) + - [`acorn-numeric-separator`](https://github.com/acornjs/acorn-numeric-separator): Parse [numeric separator proposal](https://github.com/tc39/proposal-numeric-separator) + - [`acorn-private-methods`](https://github.com/acornjs/acorn-private-methods): parse [private methods, getters and setters proposal](https://github.com/tc39/proposal-private-methods)n diff --git a/tic-tac-toe-app/node_modules/acorn/bin/acorn b/tic-tac-toe-app/node_modules/acorn/bin/acorn new file mode 100755 index 0000000..cf7df46 --- /dev/null +++ b/tic-tac-toe-app/node_modules/acorn/bin/acorn @@ -0,0 +1,4 @@ +#!/usr/bin/env node +'use strict'; + +require('../dist/bin.js'); diff --git a/tic-tac-toe-app/node_modules/acorn/dist/acorn.d.ts b/tic-tac-toe-app/node_modules/acorn/dist/acorn.d.ts new file mode 100644 index 0000000..bda5f80 --- /dev/null +++ b/tic-tac-toe-app/node_modules/acorn/dist/acorn.d.ts @@ -0,0 +1,209 @@ +export as namespace acorn +export = acorn + +declare namespace acorn { + function parse(input: string, options?: Options): Node + + function parseExpressionAt(input: string, pos?: number, options?: Options): Node + + function tokenizer(input: string, options?: Options): { + getToken(): Token + [Symbol.iterator](): Iterator + } + + interface Options { + ecmaVersion?: 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 + sourceType?: 'script' | 'module' + onInsertedSemicolon?: (lastTokEnd: number, lastTokEndLoc?: Position) => void + onTrailingComma?: (lastTokEnd: number, lastTokEndLoc?: Position) => void + allowReserved?: boolean | 'never' + allowReturnOutsideFunction?: boolean + allowImportExportEverywhere?: boolean + allowAwaitOutsideFunction?: boolean + allowHashBang?: boolean + locations?: boolean + onToken?: ((token: Token) => any) | Token[] + onComment?: (( + isBlock: boolean, text: string, start: number, end: number, startLoc?: Position, + endLoc?: Position + ) => void) | Comment[] + ranges?: boolean + program?: Node + sourceFile?: string + directSourceFile?: string + preserveParens?: boolean + } + + class Parser { + constructor(options: Options, input: string, startPos?: number) + parse(this: Parser): Node + static parse(this: typeof Parser, input: string, options?: Options): Node + static parseExpressionAt(this: typeof Parser, input: string, pos: number, options?: Options): Node + static tokenizer(this: typeof Parser, input: string, options?: Options): { + getToken(): Token + [Symbol.iterator](): Iterator + } + static extend(this: typeof Parser, ...plugins: ((BaseParser: typeof Parser) => typeof Parser)[]): typeof Parser + } + + interface Position { line: number; column: number; offset: number } + + const defaultOptions: Options + + function getLineInfo(input: string, offset: number): Position + + class SourceLocation { + start: Position + end: Position + source?: string | null + constructor(p: Parser, start: Position, end: Position) + } + + class Node { + type: string + start: number + end: number + loc?: SourceLocation + sourceFile?: string + range?: [number, number] + constructor(parser: Parser, pos: number, loc?: SourceLocation) + } + + class TokenType { + label: string + keyword: string + beforeExpr: boolean + startsExpr: boolean + isLoop: boolean + isAssign: boolean + prefix: boolean + postfix: boolean + binop: number + updateContext?: (prevType: TokenType) => void + constructor(label: string, conf?: any) + } + + const tokTypes: { + num: TokenType + regexp: TokenType + string: TokenType + name: TokenType + eof: TokenType + bracketL: TokenType + bracketR: TokenType + braceL: TokenType + braceR: TokenType + parenL: TokenType + parenR: TokenType + comma: TokenType + semi: TokenType + colon: TokenType + dot: TokenType + question: TokenType + arrow: TokenType + template: TokenType + ellipsis: TokenType + backQuote: TokenType + dollarBraceL: TokenType + eq: TokenType + assign: TokenType + incDec: TokenType + prefix: TokenType + logicalOR: TokenType + logicalAND: TokenType + bitwiseOR: TokenType + bitwiseXOR: TokenType + bitwiseAND: TokenType + equality: TokenType + relational: TokenType + bitShift: TokenType + plusMin: TokenType + modulo: TokenType + star: TokenType + slash: TokenType + starstar: TokenType + _break: TokenType + _case: TokenType + _catch: TokenType + _continue: TokenType + _debugger: TokenType + _default: TokenType + _do: TokenType + _else: TokenType + _finally: TokenType + _for: TokenType + _function: TokenType + _if: TokenType + _return: TokenType + _switch: TokenType + _throw: TokenType + _try: TokenType + _var: TokenType + _const: TokenType + _while: TokenType + _with: TokenType + _new: TokenType + _this: TokenType + _super: TokenType + _class: TokenType + _extends: TokenType + _export: TokenType + _import: TokenType + _null: TokenType + _true: TokenType + _false: TokenType + _in: TokenType + _instanceof: TokenType + _typeof: TokenType + _void: TokenType + _delete: TokenType + } + + class TokContext { + constructor(token: string, isExpr: boolean, preserveSpace: boolean, override?: (p: Parser) => void) + } + + const tokContexts: { + b_stat: TokContext + b_expr: TokContext + b_tmpl: TokContext + p_stat: TokContext + p_expr: TokContext + q_tmpl: TokContext + f_expr: TokContext + } + + function isIdentifierStart(code: number, astral?: boolean): boolean + + function isIdentifierChar(code: number, astral?: boolean): boolean + + interface AbstractToken { + } + + interface Comment extends AbstractToken { + type: string + value: string + start: number + end: number + loc?: SourceLocation + range?: [number, number] + } + + class Token { + type: TokenType + value: any + start: number + end: number + loc?: SourceLocation + range?: [number, number] + constructor(p: Parser) + } + + function isNewLine(code: number): boolean + + const lineBreak: RegExp + + const lineBreakG: RegExp + + const version: string +} diff --git a/tic-tac-toe-app/node_modules/acorn/dist/acorn.js b/tic-tac-toe-app/node_modules/acorn/dist/acorn.js new file mode 100644 index 0000000..e2b3317 --- /dev/null +++ b/tic-tac-toe-app/node_modules/acorn/dist/acorn.js @@ -0,0 +1,5020 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.acorn = {})); +}(this, function (exports) { 'use strict'; + + // Reserved word lists for various dialects of the language + + var reservedWords = { + 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile", + 5: "class enum extends super const export import", + 6: "enum", + strict: "implements interface let package private protected public static yield", + strictBind: "eval arguments" + }; + + // And the keywords + + var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"; + + var keywords = { + 5: ecma5AndLessKeywords, + "5module": ecma5AndLessKeywords + " export import", + 6: ecma5AndLessKeywords + " const class extends export import super" + }; + + var keywordRelationalOperator = /^in(stanceof)?$/; + + // ## Character categories + + // Big ugly regular expressions that match characters in the + // whitespace, identifier, and identifier-start categories. These + // are only applied when a character is found to actually have a + // code point above 128. + // Generated by `bin/generate-identifier-regex.js`. + var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fef\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7bf\ua7c2-\ua7c6\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab67\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; + var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d3-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1df9\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"; + + var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); + var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); + + nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; + + // These are a run-length and offset encoded representation of the + // >0xffff code points that are a valid part of identifiers. The + // offset starts at 0x10000, and each pair of numbers represents an + // offset to the next range, and then a size of the range. They were + // generated by bin/generate-identifier-regex.js + + // eslint-disable-next-line comma-spacing + var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,155,22,13,52,76,44,33,24,27,35,30,0,12,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,0,33,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,0,161,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,270,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,754,9486,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,15,7472,3104,541]; + + // eslint-disable-next-line comma-spacing + var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,232,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,792487,239]; + + // This has a complexity linear to the value of the code. The + // assumption is that looking up astral identifier characters is + // rare. + function isInAstralSet(code, set) { + var pos = 0x10000; + for (var i = 0; i < set.length; i += 2) { + pos += set[i]; + if (pos > code) { return false } + pos += set[i + 1]; + if (pos >= code) { return true } + } + } + + // Test whether a given character code starts an identifier. + + function isIdentifierStart(code, astral) { + if (code < 65) { return code === 36 } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) + } + + // Test whether a given character is part of an identifier. + + function isIdentifierChar(code, astral) { + if (code < 48) { return code === 36 } + if (code < 58) { return true } + if (code < 65) { return false } + if (code < 91) { return true } + if (code < 97) { return code === 95 } + if (code < 123) { return true } + if (code <= 0xffff) { return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)) } + if (astral === false) { return false } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes) + } + + // ## Token types + + // The assignment of fine-grained, information-carrying type objects + // allows the tokenizer to store the information it has about a + // token in a way that is very cheap for the parser to look up. + + // All token type variables start with an underscore, to make them + // easy to recognize. + + // The `beforeExpr` property is used to disambiguate between regular + // expressions and divisions. It is set on all token types that can + // be followed by an expression (thus, a slash after them would be a + // regular expression). + // + // The `startsExpr` property is used to check if the token ends a + // `yield` expression. It is set on all token types that either can + // directly start an expression (like a quotation mark) or can + // continue an expression (like the body of a string). + // + // `isLoop` marks a keyword as starting a loop, which is important + // to know when parsing a label, in order to allow or disallow + // continue jumps to that label. + + var TokenType = function TokenType(label, conf) { + if ( conf === void 0 ) conf = {}; + + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop || null; + this.updateContext = null; + }; + + function binop(name, prec) { + return new TokenType(name, {beforeExpr: true, binop: prec}) + } + var beforeExpr = {beforeExpr: true}, startsExpr = {startsExpr: true}; + + // Map keyword names to token types. + + var keywords$1 = {}; + + // Succinct definitions of keyword token types + function kw(name, options) { + if ( options === void 0 ) options = {}; + + options.keyword = name; + return keywords$1[name] = new TokenType(name, options) + } + + var types = { + num: new TokenType("num", startsExpr), + regexp: new TokenType("regexp", startsExpr), + string: new TokenType("string", startsExpr), + name: new TokenType("name", startsExpr), + eof: new TokenType("eof"), + + // Punctuation token types. + bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}), + bracketR: new TokenType("]"), + braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}), + braceR: new TokenType("}"), + parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}), + parenR: new TokenType(")"), + comma: new TokenType(",", beforeExpr), + semi: new TokenType(";", beforeExpr), + colon: new TokenType(":", beforeExpr), + dot: new TokenType("."), + question: new TokenType("?", beforeExpr), + arrow: new TokenType("=>", beforeExpr), + template: new TokenType("template"), + invalidTemplate: new TokenType("invalidTemplate"), + ellipsis: new TokenType("...", beforeExpr), + backQuote: new TokenType("`", startsExpr), + dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}), + + // Operators. These carry several kinds of properties to help the + // parser use them properly (the presence of these properties is + // what categorizes them as operators). + // + // `binop`, when present, specifies that this operator is a binary + // operator, and will refer to its precedence. + // + // `prefix` and `postfix` mark the operator as a prefix or postfix + // unary operator. + // + // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as + // binary operators with a very low precedence, that should result + // in AssignmentExpression nodes. + + eq: new TokenType("=", {beforeExpr: true, isAssign: true}), + assign: new TokenType("_=", {beforeExpr: true, isAssign: true}), + incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}), + prefix: new TokenType("!/~", {beforeExpr: true, prefix: true, startsExpr: true}), + logicalOR: binop("||", 1), + logicalAND: binop("&&", 2), + bitwiseOR: binop("|", 3), + bitwiseXOR: binop("^", 4), + bitwiseAND: binop("&", 5), + equality: binop("==/!=/===/!==", 6), + relational: binop("/<=/>=", 7), + bitShift: binop("<>/>>>", 8), + plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}), + modulo: binop("%", 10), + star: binop("*", 10), + slash: binop("/", 10), + starstar: new TokenType("**", {beforeExpr: true}), + + // Keyword token types. + _break: kw("break"), + _case: kw("case", beforeExpr), + _catch: kw("catch"), + _continue: kw("continue"), + _debugger: kw("debugger"), + _default: kw("default", beforeExpr), + _do: kw("do", {isLoop: true, beforeExpr: true}), + _else: kw("else", beforeExpr), + _finally: kw("finally"), + _for: kw("for", {isLoop: true}), + _function: kw("function", startsExpr), + _if: kw("if"), + _return: kw("return", beforeExpr), + _switch: kw("switch"), + _throw: kw("throw", beforeExpr), + _try: kw("try"), + _var: kw("var"), + _const: kw("const"), + _while: kw("while", {isLoop: true}), + _with: kw("with"), + _new: kw("new", {beforeExpr: true, startsExpr: true}), + _this: kw("this", startsExpr), + _super: kw("super", startsExpr), + _class: kw("class", startsExpr), + _extends: kw("extends", beforeExpr), + _export: kw("export"), + _import: kw("import", startsExpr), + _null: kw("null", startsExpr), + _true: kw("true", startsExpr), + _false: kw("false", startsExpr), + _in: kw("in", {beforeExpr: true, binop: 7}), + _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}), + _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}), + _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}), + _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true}) + }; + + // Matches a whole line break (where CRLF is considered a single + // line break). Used to count lines. + + var lineBreak = /\r\n?|\n|\u2028|\u2029/; + var lineBreakG = new RegExp(lineBreak.source, "g"); + + function isNewLine(code, ecma2019String) { + return code === 10 || code === 13 || (!ecma2019String && (code === 0x2028 || code === 0x2029)) + } + + var nonASCIIwhitespace = /[\u1680\u2000-\u200a\u202f\u205f\u3000\ufeff]/; + + var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; + + var ref = Object.prototype; + var hasOwnProperty = ref.hasOwnProperty; + var toString = ref.toString; + + // Checks if an object has a property. + + function has(obj, propName) { + return hasOwnProperty.call(obj, propName) + } + + var isArray = Array.isArray || (function (obj) { return ( + toString.call(obj) === "[object Array]" + ); }); + + function wordsRegexp(words) { + return new RegExp("^(?:" + words.replace(/ /g, "|") + ")$") + } + + // These are used when `options.locations` is on, for the + // `startLoc` and `endLoc` properties. + + var Position = function Position(line, col) { + this.line = line; + this.column = col; + }; + + Position.prototype.offset = function offset (n) { + return new Position(this.line, this.column + n) + }; + + var SourceLocation = function SourceLocation(p, start, end) { + this.start = start; + this.end = end; + if (p.sourceFile !== null) { this.source = p.sourceFile; } + }; + + // The `getLineInfo` function is mostly useful when the + // `locations` option is off (for performance reasons) and you + // want to find the line/column position for a given character + // offset. `input` should be the code string that the offset refers + // into. + + function getLineInfo(input, offset) { + for (var line = 1, cur = 0;;) { + lineBreakG.lastIndex = cur; + var match = lineBreakG.exec(input); + if (match && match.index < offset) { + ++line; + cur = match.index + match[0].length; + } else { + return new Position(line, offset - cur) + } + } + } + + // A second optional argument can be given to further configure + // the parser process. These options are recognized: + + var defaultOptions = { + // `ecmaVersion` indicates the ECMAScript version to parse. Must be + // either 3, 5, 6 (2015), 7 (2016), 8 (2017), 9 (2018), or 10 + // (2019). This influences support for strict mode, the set of + // reserved words, and support for new syntax features. The default + // is 10. + ecmaVersion: 10, + // `sourceType` indicates the mode the code should be parsed in. + // Can be either `"script"` or `"module"`. This influences global + // strict mode and parsing of `import` and `export` declarations. + sourceType: "script", + // `onInsertedSemicolon` can be a callback that will be called + // when a semicolon is automatically inserted. It will be passed + // the position of the comma as an offset, and if `locations` is + // enabled, it is given the location as a `{line, column}` object + // as second argument. + onInsertedSemicolon: null, + // `onTrailingComma` is similar to `onInsertedSemicolon`, but for + // trailing commas. + onTrailingComma: null, + // By default, reserved words are only enforced if ecmaVersion >= 5. + // Set `allowReserved` to a boolean value to explicitly turn this on + // an off. When this option has the value "never", reserved words + // and keywords can also not be used as property names. + allowReserved: null, + // When enabled, a return at the top level is not considered an + // error. + allowReturnOutsideFunction: false, + // When enabled, import/export statements are not constrained to + // appearing at the top of the program. + allowImportExportEverywhere: false, + // When enabled, await identifiers are allowed to appear at the top-level scope, + // but they are still not allowed in non-async functions. + allowAwaitOutsideFunction: false, + // When enabled, hashbang directive in the beginning of file + // is allowed and treated as a line comment. + allowHashBang: false, + // When `locations` is on, `loc` properties holding objects with + // `start` and `end` properties in `{line, column}` form (with + // line being 1-based and column 0-based) will be attached to the + // nodes. + locations: false, + // A function can be passed as `onToken` option, which will + // cause Acorn to call that function with object in the same + // format as tokens returned from `tokenizer().getToken()`. Note + // that you are not allowed to call the parser from the + // callback—that will corrupt its internal state. + onToken: null, + // A function can be passed as `onComment` option, which will + // cause Acorn to call that function with `(block, text, start, + // end)` parameters whenever a comment is skipped. `block` is a + // boolean indicating whether this is a block (`/* */`) comment, + // `text` is the content of the comment, and `start` and `end` are + // character offsets that denote the start and end of the comment. + // When the `locations` option is on, two more parameters are + // passed, the full `{line, column}` locations of the start and + // end of the comments. Note that you are not allowed to call the + // parser from the callback—that will corrupt its internal state. + onComment: null, + // Nodes have their start and end characters offsets recorded in + // `start` and `end` properties (directly on the node, rather than + // the `loc` object, which holds line/column data. To also add a + // [semi-standardized][range] `range` property holding a `[start, + // end]` array with the same numbers, set the `ranges` option to + // `true`. + // + // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678 + ranges: false, + // It is possible to parse multiple files into a single AST by + // passing the tree produced by parsing the first file as + // `program` option in subsequent parses. This will add the + // toplevel forms of the parsed file to the `Program` (top) node + // of an existing parse tree. + program: null, + // When `locations` is on, you can pass this to record the source + // file in every node's `loc` object. + sourceFile: null, + // This value, if given, is stored in every node, whether + // `locations` is on or off. + directSourceFile: null, + // When enabled, parenthesized expressions are represented by + // (non-standard) ParenthesizedExpression nodes + preserveParens: false + }; + + // Interpret and default an options object + + function getOptions(opts) { + var options = {}; + + for (var opt in defaultOptions) + { options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]; } + + if (options.ecmaVersion >= 2015) + { options.ecmaVersion -= 2009; } + + if (options.allowReserved == null) + { options.allowReserved = options.ecmaVersion < 5; } + + if (isArray(options.onToken)) { + var tokens = options.onToken; + options.onToken = function (token) { return tokens.push(token); }; + } + if (isArray(options.onComment)) + { options.onComment = pushComment(options, options.onComment); } + + return options + } + + function pushComment(options, array) { + return function(block, text, start, end, startLoc, endLoc) { + var comment = { + type: block ? "Block" : "Line", + value: text, + start: start, + end: end + }; + if (options.locations) + { comment.loc = new SourceLocation(this, startLoc, endLoc); } + if (options.ranges) + { comment.range = [start, end]; } + array.push(comment); + } + } + + // Each scope gets a bitset that may contain these flags + var + SCOPE_TOP = 1, + SCOPE_FUNCTION = 2, + SCOPE_VAR = SCOPE_TOP | SCOPE_FUNCTION, + SCOPE_ASYNC = 4, + SCOPE_GENERATOR = 8, + SCOPE_ARROW = 16, + SCOPE_SIMPLE_CATCH = 32, + SCOPE_SUPER = 64, + SCOPE_DIRECT_SUPER = 128; + + function functionFlags(async, generator) { + return SCOPE_FUNCTION | (async ? SCOPE_ASYNC : 0) | (generator ? SCOPE_GENERATOR : 0) + } + + // Used in checkLVal and declareName to determine the type of a binding + var + BIND_NONE = 0, // Not a binding + BIND_VAR = 1, // Var-style binding + BIND_LEXICAL = 2, // Let- or const-style binding + BIND_FUNCTION = 3, // Function declaration + BIND_SIMPLE_CATCH = 4, // Simple (identifier pattern) catch binding + BIND_OUTSIDE = 5; // Special case for function names as bound inside the function + + var Parser = function Parser(options, input, startPos) { + this.options = options = getOptions(options); + this.sourceFile = options.sourceFile; + this.keywords = wordsRegexp(keywords[options.ecmaVersion >= 6 ? 6 : options.sourceType === "module" ? "5module" : 5]); + var reserved = ""; + if (options.allowReserved !== true) { + for (var v = options.ecmaVersion;; v--) + { if (reserved = reservedWords[v]) { break } } + if (options.sourceType === "module") { reserved += " await"; } + } + this.reservedWords = wordsRegexp(reserved); + var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict; + this.reservedWordsStrict = wordsRegexp(reservedStrict); + this.reservedWordsStrictBind = wordsRegexp(reservedStrict + " " + reservedWords.strictBind); + this.input = String(input); + + // Used to signal to callers of `readWord1` whether the word + // contained any escape sequences. This is needed because words with + // escape sequences must not be interpreted as keywords. + this.containsEsc = false; + + // Set up token state + + // The current position of the tokenizer in the input. + if (startPos) { + this.pos = startPos; + this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1; + this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length; + } else { + this.pos = this.lineStart = 0; + this.curLine = 1; + } + + // Properties of the current token: + // Its type + this.type = types.eof; + // For tokens that include more information than their type, the value + this.value = null; + // Its start and end offset + this.start = this.end = this.pos; + // And, if locations are used, the {line, column} object + // corresponding to those offsets + this.startLoc = this.endLoc = this.curPosition(); + + // Position information for the previous token + this.lastTokEndLoc = this.lastTokStartLoc = null; + this.lastTokStart = this.lastTokEnd = this.pos; + + // The context stack is used to superficially track syntactic + // context to predict whether a regular expression is allowed in a + // given position. + this.context = this.initialContext(); + this.exprAllowed = true; + + // Figure out if it's a module code. + this.inModule = options.sourceType === "module"; + this.strict = this.inModule || this.strictDirective(this.pos); + + // Used to signify the start of a potential arrow function + this.potentialArrowAt = -1; + + // Positions to delayed-check that yield/await does not exist in default parameters. + this.yieldPos = this.awaitPos = this.awaitIdentPos = 0; + // Labels in scope. + this.labels = []; + // Thus-far undefined exports. + this.undefinedExports = {}; + + // If enabled, skip leading hashbang line. + if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!") + { this.skipLineComment(2); } + + // Scope tracking for duplicate variable names (see scope.js) + this.scopeStack = []; + this.enterScope(SCOPE_TOP); + + // For RegExp validation + this.regexpState = null; + }; + + var prototypeAccessors = { inFunction: { configurable: true },inGenerator: { configurable: true },inAsync: { configurable: true },allowSuper: { configurable: true },allowDirectSuper: { configurable: true },treatFunctionsAsVar: { configurable: true } }; + + Parser.prototype.parse = function parse () { + var node = this.options.program || this.startNode(); + this.nextToken(); + return this.parseTopLevel(node) + }; + + prototypeAccessors.inFunction.get = function () { return (this.currentVarScope().flags & SCOPE_FUNCTION) > 0 }; + prototypeAccessors.inGenerator.get = function () { return (this.currentVarScope().flags & SCOPE_GENERATOR) > 0 }; + prototypeAccessors.inAsync.get = function () { return (this.currentVarScope().flags & SCOPE_ASYNC) > 0 }; + prototypeAccessors.allowSuper.get = function () { return (this.currentThisScope().flags & SCOPE_SUPER) > 0 }; + prototypeAccessors.allowDirectSuper.get = function () { return (this.currentThisScope().flags & SCOPE_DIRECT_SUPER) > 0 }; + prototypeAccessors.treatFunctionsAsVar.get = function () { return this.treatFunctionsAsVarInScope(this.currentScope()) }; + + // Switch to a getter for 7.0.0. + Parser.prototype.inNonArrowFunction = function inNonArrowFunction () { return (this.currentThisScope().flags & SCOPE_FUNCTION) > 0 }; + + Parser.extend = function extend () { + var plugins = [], len = arguments.length; + while ( len-- ) plugins[ len ] = arguments[ len ]; + + var cls = this; + for (var i = 0; i < plugins.length; i++) { cls = plugins[i](cls); } + return cls + }; + + Parser.parse = function parse (input, options) { + return new this(options, input).parse() + }; + + Parser.parseExpressionAt = function parseExpressionAt (input, pos, options) { + var parser = new this(options, input, pos); + parser.nextToken(); + return parser.parseExpression() + }; + + Parser.tokenizer = function tokenizer (input, options) { + return new this(options, input) + }; + + Object.defineProperties( Parser.prototype, prototypeAccessors ); + + var pp = Parser.prototype; + + // ## Parser utilities + + var literal = /^(?:'((?:\\.|[^'])*?)'|"((?:\\.|[^"])*?)")/; + pp.strictDirective = function(start) { + for (;;) { + // Try to find string literal. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + var match = literal.exec(this.input.slice(start)); + if (!match) { return false } + if ((match[1] || match[2]) === "use strict") { return true } + start += match[0].length; + + // Skip semicolon, if any. + skipWhiteSpace.lastIndex = start; + start += skipWhiteSpace.exec(this.input)[0].length; + if (this.input[start] === ";") + { start++; } + } + }; + + // Predicate that tests whether the next token is of the given + // type, and if yes, consumes it as a side effect. + + pp.eat = function(type) { + if (this.type === type) { + this.next(); + return true + } else { + return false + } + }; + + // Tests whether parsed token is a contextual keyword. + + pp.isContextual = function(name) { + return this.type === types.name && this.value === name && !this.containsEsc + }; + + // Consumes contextual keyword if possible. + + pp.eatContextual = function(name) { + if (!this.isContextual(name)) { return false } + this.next(); + return true + }; + + // Asserts that following token is given contextual keyword. + + pp.expectContextual = function(name) { + if (!this.eatContextual(name)) { this.unexpected(); } + }; + + // Test whether a semicolon can be inserted at the current position. + + pp.canInsertSemicolon = function() { + return this.type === types.eof || + this.type === types.braceR || + lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) + }; + + pp.insertSemicolon = function() { + if (this.canInsertSemicolon()) { + if (this.options.onInsertedSemicolon) + { this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc); } + return true + } + }; + + // Consume a semicolon, or, failing that, see if we are allowed to + // pretend that there is a semicolon at this position. + + pp.semicolon = function() { + if (!this.eat(types.semi) && !this.insertSemicolon()) { this.unexpected(); } + }; + + pp.afterTrailingComma = function(tokType, notNext) { + if (this.type === tokType) { + if (this.options.onTrailingComma) + { this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc); } + if (!notNext) + { this.next(); } + return true + } + }; + + // Expect a token of a given type. If found, consume it, otherwise, + // raise an unexpected token error. + + pp.expect = function(type) { + this.eat(type) || this.unexpected(); + }; + + // Raise an unexpected token error. + + pp.unexpected = function(pos) { + this.raise(pos != null ? pos : this.start, "Unexpected token"); + }; + + function DestructuringErrors() { + this.shorthandAssign = + this.trailingComma = + this.parenthesizedAssign = + this.parenthesizedBind = + this.doubleProto = + -1; + } + + pp.checkPatternErrors = function(refDestructuringErrors, isAssign) { + if (!refDestructuringErrors) { return } + if (refDestructuringErrors.trailingComma > -1) + { this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element"); } + var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind; + if (parens > -1) { this.raiseRecoverable(parens, "Parenthesized pattern"); } + }; + + pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) { + if (!refDestructuringErrors) { return false } + var shorthandAssign = refDestructuringErrors.shorthandAssign; + var doubleProto = refDestructuringErrors.doubleProto; + if (!andThrow) { return shorthandAssign >= 0 || doubleProto >= 0 } + if (shorthandAssign >= 0) + { this.raise(shorthandAssign, "Shorthand property assignments are valid only in destructuring patterns"); } + if (doubleProto >= 0) + { this.raiseRecoverable(doubleProto, "Redefinition of __proto__ property"); } + }; + + pp.checkYieldAwaitInDefaultParams = function() { + if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos)) + { this.raise(this.yieldPos, "Yield expression cannot be a default value"); } + if (this.awaitPos) + { this.raise(this.awaitPos, "Await expression cannot be a default value"); } + }; + + pp.isSimpleAssignTarget = function(expr) { + if (expr.type === "ParenthesizedExpression") + { return this.isSimpleAssignTarget(expr.expression) } + return expr.type === "Identifier" || expr.type === "MemberExpression" + }; + + var pp$1 = Parser.prototype; + + // ### Statement parsing + + // Parse a program. Initializes the parser, reads any number of + // statements, and wraps them in a Program node. Optionally takes a + // `program` argument. If present, the statements will be appended + // to its body instead of creating a new node. + + pp$1.parseTopLevel = function(node) { + var exports = {}; + if (!node.body) { node.body = []; } + while (this.type !== types.eof) { + var stmt = this.parseStatement(null, true, exports); + node.body.push(stmt); + } + if (this.inModule) + { for (var i = 0, list = Object.keys(this.undefinedExports); i < list.length; i += 1) + { + var name = list[i]; + + this.raiseRecoverable(this.undefinedExports[name].start, ("Export '" + name + "' is not defined")); + } } + this.adaptDirectivePrologue(node.body); + this.next(); + node.sourceType = this.options.sourceType; + return this.finishNode(node, "Program") + }; + + var loopLabel = {kind: "loop"}, switchLabel = {kind: "switch"}; + + pp$1.isLet = function(context) { + if (this.options.ecmaVersion < 6 || !this.isContextual("let")) { return false } + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + // For ambiguous cases, determine if a LexicalDeclaration (or only a + // Statement) is allowed here. If context is not empty then only a Statement + // is allowed. However, `let [` is an explicit negative lookahead for + // ExpressionStatement, so special-case it first. + if (nextCh === 91) { return true } // '[' + if (context) { return false } + + if (nextCh === 123) { return true } // '{' + if (isIdentifierStart(nextCh, true)) { + var pos = next + 1; + while (isIdentifierChar(this.input.charCodeAt(pos), true)) { ++pos; } + var ident = this.input.slice(next, pos); + if (!keywordRelationalOperator.test(ident)) { return true } + } + return false + }; + + // check 'async [no LineTerminator here] function' + // - 'async /*foo*/ function' is OK. + // - 'async /*\n*/ function' is invalid. + pp$1.isAsyncFunction = function() { + if (this.options.ecmaVersion < 8 || !this.isContextual("async")) + { return false } + + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length; + return !lineBreak.test(this.input.slice(this.pos, next)) && + this.input.slice(next, next + 8) === "function" && + (next + 8 === this.input.length || !isIdentifierChar(this.input.charAt(next + 8))) + }; + + // Parse a single statement. + // + // If expecting a statement and finding a slash operator, parse a + // regular expression literal. This is to handle cases like + // `if (foo) /blah/.exec(foo)`, where looking at the previous token + // does not help. + + pp$1.parseStatement = function(context, topLevel, exports) { + var starttype = this.type, node = this.startNode(), kind; + + if (this.isLet(context)) { + starttype = types._var; + kind = "let"; + } + + // Most types of statements are recognized by the keyword they + // start with. Many are trivial to parse, some require a bit of + // complexity. + + switch (starttype) { + case types._break: case types._continue: return this.parseBreakContinueStatement(node, starttype.keyword) + case types._debugger: return this.parseDebuggerStatement(node) + case types._do: return this.parseDoStatement(node) + case types._for: return this.parseForStatement(node) + case types._function: + // Function as sole body of either an if statement or a labeled statement + // works, but not when it is part of a labeled statement that is the sole + // body of an if statement. + if ((context && (this.strict || context !== "if" && context !== "label")) && this.options.ecmaVersion >= 6) { this.unexpected(); } + return this.parseFunctionStatement(node, false, !context) + case types._class: + if (context) { this.unexpected(); } + return this.parseClass(node, true) + case types._if: return this.parseIfStatement(node) + case types._return: return this.parseReturnStatement(node) + case types._switch: return this.parseSwitchStatement(node) + case types._throw: return this.parseThrowStatement(node) + case types._try: return this.parseTryStatement(node) + case types._const: case types._var: + kind = kind || this.value; + if (context && kind !== "var") { this.unexpected(); } + return this.parseVarStatement(node, kind) + case types._while: return this.parseWhileStatement(node) + case types._with: return this.parseWithStatement(node) + case types.braceL: return this.parseBlock(true, node) + case types.semi: return this.parseEmptyStatement(node) + case types._export: + case types._import: + if (this.options.ecmaVersion > 10 && starttype === types._import) { + skipWhiteSpace.lastIndex = this.pos; + var skip = skipWhiteSpace.exec(this.input); + var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next); + if (nextCh === 40) // '(' + { return this.parseExpressionStatement(node, this.parseExpression()) } + } + + if (!this.options.allowImportExportEverywhere) { + if (!topLevel) + { this.raise(this.start, "'import' and 'export' may only appear at the top level"); } + if (!this.inModule) + { this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'"); } + } + return starttype === types._import ? this.parseImport(node) : this.parseExport(node, exports) + + // If the statement does not start with a statement keyword or a + // brace, it's an ExpressionStatement or LabeledStatement. We + // simply start parsing an expression, and afterwards, if the + // next token is a colon and the expression was a simple + // Identifier node, we switch to interpreting it as a label. + default: + if (this.isAsyncFunction()) { + if (context) { this.unexpected(); } + this.next(); + return this.parseFunctionStatement(node, true, !context) + } + + var maybeName = this.value, expr = this.parseExpression(); + if (starttype === types.name && expr.type === "Identifier" && this.eat(types.colon)) + { return this.parseLabeledStatement(node, maybeName, expr, context) } + else { return this.parseExpressionStatement(node, expr) } + } + }; + + pp$1.parseBreakContinueStatement = function(node, keyword) { + var isBreak = keyword === "break"; + this.next(); + if (this.eat(types.semi) || this.insertSemicolon()) { node.label = null; } + else if (this.type !== types.name) { this.unexpected(); } + else { + node.label = this.parseIdent(); + this.semicolon(); + } + + // Verify that there is an actual destination to break or + // continue to. + var i = 0; + for (; i < this.labels.length; ++i) { + var lab = this.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) { break } + if (node.label && isBreak) { break } + } + } + if (i === this.labels.length) { this.raise(node.start, "Unsyntactic " + keyword); } + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement") + }; + + pp$1.parseDebuggerStatement = function(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement") + }; + + pp$1.parseDoStatement = function(node) { + this.next(); + this.labels.push(loopLabel); + node.body = this.parseStatement("do"); + this.labels.pop(); + this.expect(types._while); + node.test = this.parseParenExpression(); + if (this.options.ecmaVersion >= 6) + { this.eat(types.semi); } + else + { this.semicolon(); } + return this.finishNode(node, "DoWhileStatement") + }; + + // Disambiguating between a `for` and a `for`/`in` or `for`/`of` + // loop is non-trivial. Basically, we have to parse the init `var` + // statement or expression, disallowing the `in` operator (see + // the second parameter to `parseExpression`), and then check + // whether the next token is `in` or `of`. When there is no init + // part (semicolon immediately after the opening parenthesis), it + // is a regular `for` loop. + + pp$1.parseForStatement = function(node) { + this.next(); + var awaitAt = (this.options.ecmaVersion >= 9 && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction)) && this.eatContextual("await")) ? this.lastTokStart : -1; + this.labels.push(loopLabel); + this.enterScope(0); + this.expect(types.parenL); + if (this.type === types.semi) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, null) + } + var isLet = this.isLet(); + if (this.type === types._var || this.type === types._const || isLet) { + var init$1 = this.startNode(), kind = isLet ? "let" : this.value; + this.next(); + this.parseVar(init$1, true, kind); + this.finishNode(init$1, "VariableDeclaration"); + if ((this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + return this.parseForIn(node, init$1) + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init$1) + } + var refDestructuringErrors = new DestructuringErrors; + var init = this.parseExpression(true, refDestructuringErrors); + if (this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) { + if (this.options.ecmaVersion >= 9) { + if (this.type === types._in) { + if (awaitAt > -1) { this.unexpected(awaitAt); } + } else { node.await = awaitAt > -1; } + } + this.toAssignable(init, false, refDestructuringErrors); + this.checkLVal(init); + return this.parseForIn(node, init) + } else { + this.checkExpressionErrors(refDestructuringErrors, true); + } + if (awaitAt > -1) { this.unexpected(awaitAt); } + return this.parseFor(node, init) + }; + + pp$1.parseFunctionStatement = function(node, isAsync, declarationPosition) { + this.next(); + return this.parseFunction(node, FUNC_STATEMENT | (declarationPosition ? 0 : FUNC_HANGING_STATEMENT), false, isAsync) + }; + + pp$1.parseIfStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + // allow function declarations in branches, but only in non-strict mode + node.consequent = this.parseStatement("if"); + node.alternate = this.eat(types._else) ? this.parseStatement("if") : null; + return this.finishNode(node, "IfStatement") + }; + + pp$1.parseReturnStatement = function(node) { + if (!this.inFunction && !this.options.allowReturnOutsideFunction) + { this.raise(this.start, "'return' outside of function"); } + this.next(); + + // In `return` (and `break`/`continue`), the keywords with + // optional arguments, we eagerly look for a semicolon or the + // possibility to insert one. + + if (this.eat(types.semi) || this.insertSemicolon()) { node.argument = null; } + else { node.argument = this.parseExpression(); this.semicolon(); } + return this.finishNode(node, "ReturnStatement") + }; + + pp$1.parseSwitchStatement = function(node) { + this.next(); + node.discriminant = this.parseParenExpression(); + node.cases = []; + this.expect(types.braceL); + this.labels.push(switchLabel); + this.enterScope(0); + + // Statements under must be grouped (by label) in SwitchCase + // nodes. `cur` is used to keep the node that we are currently + // adding statements to. + + var cur; + for (var sawDefault = false; this.type !== types.braceR;) { + if (this.type === types._case || this.type === types._default) { + var isCase = this.type === types._case; + if (cur) { this.finishNode(cur, "SwitchCase"); } + node.cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { this.raiseRecoverable(this.lastTokStart, "Multiple default clauses"); } + sawDefault = true; + cur.test = null; + } + this.expect(types.colon); + } else { + if (!cur) { this.unexpected(); } + cur.consequent.push(this.parseStatement(null)); + } + } + this.exitScope(); + if (cur) { this.finishNode(cur, "SwitchCase"); } + this.next(); // Closing brace + this.labels.pop(); + return this.finishNode(node, "SwitchStatement") + }; + + pp$1.parseThrowStatement = function(node) { + this.next(); + if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) + { this.raise(this.lastTokEnd, "Illegal newline after throw"); } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement") + }; + + // Reused empty array added for node fields that are always empty. + + var empty = []; + + pp$1.parseTryStatement = function(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.type === types._catch) { + var clause = this.startNode(); + this.next(); + if (this.eat(types.parenL)) { + clause.param = this.parseBindingAtom(); + var simple = clause.param.type === "Identifier"; + this.enterScope(simple ? SCOPE_SIMPLE_CATCH : 0); + this.checkLVal(clause.param, simple ? BIND_SIMPLE_CATCH : BIND_LEXICAL); + this.expect(types.parenR); + } else { + if (this.options.ecmaVersion < 10) { this.unexpected(); } + clause.param = null; + this.enterScope(0); + } + clause.body = this.parseBlock(false); + this.exitScope(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(types._finally) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) + { this.raise(node.start, "Missing catch or finally clause"); } + return this.finishNode(node, "TryStatement") + }; + + pp$1.parseVarStatement = function(node, kind) { + this.next(); + this.parseVar(node, false, kind); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration") + }; + + pp$1.parseWhileStatement = function(node) { + this.next(); + node.test = this.parseParenExpression(); + this.labels.push(loopLabel); + node.body = this.parseStatement("while"); + this.labels.pop(); + return this.finishNode(node, "WhileStatement") + }; + + pp$1.parseWithStatement = function(node) { + if (this.strict) { this.raise(this.start, "'with' in strict mode"); } + this.next(); + node.object = this.parseParenExpression(); + node.body = this.parseStatement("with"); + return this.finishNode(node, "WithStatement") + }; + + pp$1.parseEmptyStatement = function(node) { + this.next(); + return this.finishNode(node, "EmptyStatement") + }; + + pp$1.parseLabeledStatement = function(node, maybeName, expr, context) { + for (var i$1 = 0, list = this.labels; i$1 < list.length; i$1 += 1) + { + var label = list[i$1]; + + if (label.name === maybeName) + { this.raise(expr.start, "Label '" + maybeName + "' is already declared"); + } } + var kind = this.type.isLoop ? "loop" : this.type === types._switch ? "switch" : null; + for (var i = this.labels.length - 1; i >= 0; i--) { + var label$1 = this.labels[i]; + if (label$1.statementStart === node.start) { + // Update information about previous labels on this node + label$1.statementStart = this.start; + label$1.kind = kind; + } else { break } + } + this.labels.push({name: maybeName, kind: kind, statementStart: this.start}); + node.body = this.parseStatement(context ? context.indexOf("label") === -1 ? context + "label" : context : "label"); + this.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement") + }; + + pp$1.parseExpressionStatement = function(node, expr) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement") + }; + + // Parse a semicolon-enclosed block of statements, handling `"use + // strict"` declarations when `allowStrict` is true (used for + // function bodies). + + pp$1.parseBlock = function(createNewLexicalScope, node) { + if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true; + if ( node === void 0 ) node = this.startNode(); + + node.body = []; + this.expect(types.braceL); + if (createNewLexicalScope) { this.enterScope(0); } + while (!this.eat(types.braceR)) { + var stmt = this.parseStatement(null); + node.body.push(stmt); + } + if (createNewLexicalScope) { this.exitScope(); } + return this.finishNode(node, "BlockStatement") + }; + + // Parse a regular `for` loop. The disambiguation code in + // `parseStatement` will already have parsed the init statement or + // expression. + + pp$1.parseFor = function(node, init) { + node.init = init; + this.expect(types.semi); + node.test = this.type === types.semi ? null : this.parseExpression(); + this.expect(types.semi); + node.update = this.type === types.parenR ? null : this.parseExpression(); + this.expect(types.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, "ForStatement") + }; + + // Parse a `for`/`in` and `for`/`of` loop, which are almost + // same from parser's perspective. + + pp$1.parseForIn = function(node, init) { + var isForIn = this.type === types._in; + this.next(); + + if ( + init.type === "VariableDeclaration" && + init.declarations[0].init != null && + ( + !isForIn || + this.options.ecmaVersion < 8 || + this.strict || + init.kind !== "var" || + init.declarations[0].id.type !== "Identifier" + ) + ) { + this.raise( + init.start, + ((isForIn ? "for-in" : "for-of") + " loop variable declaration may not have an initializer") + ); + } else if (init.type === "AssignmentPattern") { + this.raise(init.start, "Invalid left-hand side in for-loop"); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssign(); + this.expect(types.parenR); + node.body = this.parseStatement("for"); + this.exitScope(); + this.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement") + }; + + // Parse a list of variable declarations. + + pp$1.parseVar = function(node, isFor, kind) { + node.declarations = []; + node.kind = kind; + for (;;) { + var decl = this.startNode(); + this.parseVarId(decl, kind); + if (this.eat(types.eq)) { + decl.init = this.parseMaybeAssign(isFor); + } else if (kind === "const" && !(this.type === types._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) { + this.unexpected(); + } else if (decl.id.type !== "Identifier" && !(isFor && (this.type === types._in || this.isContextual("of")))) { + this.raise(this.lastTokEnd, "Complex binding patterns require an initialization value"); + } else { + decl.init = null; + } + node.declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(types.comma)) { break } + } + return node + }; + + pp$1.parseVarId = function(decl, kind) { + decl.id = this.parseBindingAtom(); + this.checkLVal(decl.id, kind === "var" ? BIND_VAR : BIND_LEXICAL, false); + }; + + var FUNC_STATEMENT = 1, FUNC_HANGING_STATEMENT = 2, FUNC_NULLABLE_ID = 4; + + // Parse a function declaration or literal (depending on the + // `statement & FUNC_STATEMENT`). + + // Remove `allowExpressionBody` for 7.0.0, as it is only called with false + pp$1.parseFunction = function(node, statement, allowExpressionBody, isAsync) { + this.initFunction(node); + if (this.options.ecmaVersion >= 9 || this.options.ecmaVersion >= 6 && !isAsync) { + if (this.type === types.star && (statement & FUNC_HANGING_STATEMENT)) + { this.unexpected(); } + node.generator = this.eat(types.star); + } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } + + if (statement & FUNC_STATEMENT) { + node.id = (statement & FUNC_NULLABLE_ID) && this.type !== types.name ? null : this.parseIdent(); + if (node.id && !(statement & FUNC_HANGING_STATEMENT)) + // If it is a regular function declaration in sloppy mode, then it is + // subject to Annex B semantics (BIND_FUNCTION). Otherwise, the binding + // mode depends on properties of the current scope (see + // treatFunctionsAsVar). + { this.checkLVal(node.id, (this.strict || node.generator || node.async) ? this.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION); } + } + + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(node.async, node.generator)); + + if (!(statement & FUNC_STATEMENT)) + { node.id = this.type === types.name ? this.parseIdent() : null; } + + this.parseFunctionParams(node); + this.parseFunctionBody(node, allowExpressionBody, false); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, (statement & FUNC_STATEMENT) ? "FunctionDeclaration" : "FunctionExpression") + }; + + pp$1.parseFunctionParams = function(node) { + this.expect(types.parenL); + node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + }; + + // Parse a class declaration or literal (depending on the + // `isStatement` parameter). + + pp$1.parseClass = function(node, isStatement) { + this.next(); + + // ecma-262 14.6 Class Definitions + // A class definition is always strict mode code. + var oldStrict = this.strict; + this.strict = true; + + this.parseClassId(node, isStatement); + this.parseClassSuper(node); + var classBody = this.startNode(); + var hadConstructor = false; + classBody.body = []; + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + var element = this.parseClassElement(node.superClass !== null); + if (element) { + classBody.body.push(element); + if (element.type === "MethodDefinition" && element.kind === "constructor") { + if (hadConstructor) { this.raise(element.start, "Duplicate constructor in the same class"); } + hadConstructor = true; + } + } + } + node.body = this.finishNode(classBody, "ClassBody"); + this.strict = oldStrict; + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression") + }; + + pp$1.parseClassElement = function(constructorAllowsSuper) { + var this$1 = this; + + if (this.eat(types.semi)) { return null } + + var method = this.startNode(); + var tryContextual = function (k, noLineBreak) { + if ( noLineBreak === void 0 ) noLineBreak = false; + + var start = this$1.start, startLoc = this$1.startLoc; + if (!this$1.eatContextual(k)) { return false } + if (this$1.type !== types.parenL && (!noLineBreak || !this$1.canInsertSemicolon())) { return true } + if (method.key) { this$1.unexpected(); } + method.computed = false; + method.key = this$1.startNodeAt(start, startLoc); + method.key.name = k; + this$1.finishNode(method.key, "Identifier"); + return false + }; + + method.kind = "method"; + method.static = tryContextual("static"); + var isGenerator = this.eat(types.star); + var isAsync = false; + if (!isGenerator) { + if (this.options.ecmaVersion >= 8 && tryContextual("async", true)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star); + } else if (tryContextual("get")) { + method.kind = "get"; + } else if (tryContextual("set")) { + method.kind = "set"; + } + } + if (!method.key) { this.parsePropertyName(method); } + var key = method.key; + var allowsDirectSuper = false; + if (!method.computed && !method.static && (key.type === "Identifier" && key.name === "constructor" || + key.type === "Literal" && key.value === "constructor")) { + if (method.kind !== "method") { this.raise(key.start, "Constructor can't have get/set modifier"); } + if (isGenerator) { this.raise(key.start, "Constructor can't be a generator"); } + if (isAsync) { this.raise(key.start, "Constructor can't be an async method"); } + method.kind = "constructor"; + allowsDirectSuper = constructorAllowsSuper; + } else if (method.static && key.type === "Identifier" && key.name === "prototype") { + this.raise(key.start, "Classes may not have a static property named prototype"); + } + this.parseClassMethod(method, isGenerator, isAsync, allowsDirectSuper); + if (method.kind === "get" && method.value.params.length !== 0) + { this.raiseRecoverable(method.value.start, "getter should have no params"); } + if (method.kind === "set" && method.value.params.length !== 1) + { this.raiseRecoverable(method.value.start, "setter should have exactly one param"); } + if (method.kind === "set" && method.value.params[0].type === "RestElement") + { this.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params"); } + return method + }; + + pp$1.parseClassMethod = function(method, isGenerator, isAsync, allowsDirectSuper) { + method.value = this.parseMethod(isGenerator, isAsync, allowsDirectSuper); + return this.finishNode(method, "MethodDefinition") + }; + + pp$1.parseClassId = function(node, isStatement) { + if (this.type === types.name) { + node.id = this.parseIdent(); + if (isStatement) + { this.checkLVal(node.id, BIND_LEXICAL, false); } + } else { + if (isStatement === true) + { this.unexpected(); } + node.id = null; + } + }; + + pp$1.parseClassSuper = function(node) { + node.superClass = this.eat(types._extends) ? this.parseExprSubscripts() : null; + }; + + // Parses module export declaration. + + pp$1.parseExport = function(node, exports) { + this.next(); + // export * from '...' + if (this.eat(types.star)) { + this.expectContextual("from"); + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + this.semicolon(); + return this.finishNode(node, "ExportAllDeclaration") + } + if (this.eat(types._default)) { // export default ... + this.checkExport(exports, "default", this.lastTokStart); + var isAsync; + if (this.type === types._function || (isAsync = this.isAsyncFunction())) { + var fNode = this.startNode(); + this.next(); + if (isAsync) { this.next(); } + node.declaration = this.parseFunction(fNode, FUNC_STATEMENT | FUNC_NULLABLE_ID, false, isAsync); + } else if (this.type === types._class) { + var cNode = this.startNode(); + node.declaration = this.parseClass(cNode, "nullableID"); + } else { + node.declaration = this.parseMaybeAssign(); + this.semicolon(); + } + return this.finishNode(node, "ExportDefaultDeclaration") + } + // export var|const|let|function|class ... + if (this.shouldParseExportStatement()) { + node.declaration = this.parseStatement(null); + if (node.declaration.type === "VariableDeclaration") + { this.checkVariableExport(exports, node.declaration.declarations); } + else + { this.checkExport(exports, node.declaration.id.name, node.declaration.id.start); } + node.specifiers = []; + node.source = null; + } else { // export { x, y as z } [from '...'] + node.declaration = null; + node.specifiers = this.parseExportSpecifiers(exports); + if (this.eatContextual("from")) { + if (this.type !== types.string) { this.unexpected(); } + node.source = this.parseExprAtom(); + } else { + for (var i = 0, list = node.specifiers; i < list.length; i += 1) { + // check for keywords used as local names + var spec = list[i]; + + this.checkUnreserved(spec.local); + // check if export is defined + this.checkLocalExport(spec.local); + } + + node.source = null; + } + this.semicolon(); + } + return this.finishNode(node, "ExportNamedDeclaration") + }; + + pp$1.checkExport = function(exports, name, pos) { + if (!exports) { return } + if (has(exports, name)) + { this.raiseRecoverable(pos, "Duplicate export '" + name + "'"); } + exports[name] = true; + }; + + pp$1.checkPatternExport = function(exports, pat) { + var type = pat.type; + if (type === "Identifier") + { this.checkExport(exports, pat.name, pat.start); } + else if (type === "ObjectPattern") + { for (var i = 0, list = pat.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkPatternExport(exports, prop); + } } + else if (type === "ArrayPattern") + { for (var i$1 = 0, list$1 = pat.elements; i$1 < list$1.length; i$1 += 1) { + var elt = list$1[i$1]; + + if (elt) { this.checkPatternExport(exports, elt); } + } } + else if (type === "Property") + { this.checkPatternExport(exports, pat.value); } + else if (type === "AssignmentPattern") + { this.checkPatternExport(exports, pat.left); } + else if (type === "RestElement") + { this.checkPatternExport(exports, pat.argument); } + else if (type === "ParenthesizedExpression") + { this.checkPatternExport(exports, pat.expression); } + }; + + pp$1.checkVariableExport = function(exports, decls) { + if (!exports) { return } + for (var i = 0, list = decls; i < list.length; i += 1) + { + var decl = list[i]; + + this.checkPatternExport(exports, decl.id); + } + }; + + pp$1.shouldParseExportStatement = function() { + return this.type.keyword === "var" || + this.type.keyword === "const" || + this.type.keyword === "class" || + this.type.keyword === "function" || + this.isLet() || + this.isAsyncFunction() + }; + + // Parses a comma-separated list of module exports. + + pp$1.parseExportSpecifiers = function(exports) { + var nodes = [], first = true; + // export { x, y as z } [from '...'] + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var node = this.startNode(); + node.local = this.parseIdent(true); + node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local; + this.checkExport(exports, node.exported.name, node.exported.start); + nodes.push(this.finishNode(node, "ExportSpecifier")); + } + return nodes + }; + + // Parses import declaration. + + pp$1.parseImport = function(node) { + this.next(); + // import '...' + if (this.type === types.string) { + node.specifiers = empty; + node.source = this.parseExprAtom(); + } else { + node.specifiers = this.parseImportSpecifiers(); + this.expectContextual("from"); + node.source = this.type === types.string ? this.parseExprAtom() : this.unexpected(); + } + this.semicolon(); + return this.finishNode(node, "ImportDeclaration") + }; + + // Parses a comma-separated list of module imports. + + pp$1.parseImportSpecifiers = function() { + var nodes = [], first = true; + if (this.type === types.name) { + // import defaultObj, { x, y as z } from '...' + var node = this.startNode(); + node.local = this.parseIdent(); + this.checkLVal(node.local, BIND_LEXICAL); + nodes.push(this.finishNode(node, "ImportDefaultSpecifier")); + if (!this.eat(types.comma)) { return nodes } + } + if (this.type === types.star) { + var node$1 = this.startNode(); + this.next(); + this.expectContextual("as"); + node$1.local = this.parseIdent(); + this.checkLVal(node$1.local, BIND_LEXICAL); + nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier")); + return nodes + } + this.expect(types.braceL); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var node$2 = this.startNode(); + node$2.imported = this.parseIdent(true); + if (this.eatContextual("as")) { + node$2.local = this.parseIdent(); + } else { + this.checkUnreserved(node$2.imported); + node$2.local = node$2.imported; + } + this.checkLVal(node$2.local, BIND_LEXICAL); + nodes.push(this.finishNode(node$2, "ImportSpecifier")); + } + return nodes + }; + + // Set `ExpressionStatement#directive` property for directive prologues. + pp$1.adaptDirectivePrologue = function(statements) { + for (var i = 0; i < statements.length && this.isDirectiveCandidate(statements[i]); ++i) { + statements[i].directive = statements[i].expression.raw.slice(1, -1); + } + }; + pp$1.isDirectiveCandidate = function(statement) { + return ( + statement.type === "ExpressionStatement" && + statement.expression.type === "Literal" && + typeof statement.expression.value === "string" && + // Reject parenthesized strings. + (this.input[statement.start] === "\"" || this.input[statement.start] === "'") + ) + }; + + var pp$2 = Parser.prototype; + + // Convert existing expression atom to assignable pattern + // if possible. + + pp$2.toAssignable = function(node, isBinding, refDestructuringErrors) { + if (this.options.ecmaVersion >= 6 && node) { + switch (node.type) { + case "Identifier": + if (this.inAsync && node.name === "await") + { this.raise(node.start, "Cannot use 'await' as identifier inside an async function"); } + break + + case "ObjectPattern": + case "ArrayPattern": + case "RestElement": + break + + case "ObjectExpression": + node.type = "ObjectPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + for (var i = 0, list = node.properties; i < list.length; i += 1) { + var prop = list[i]; + + this.toAssignable(prop, isBinding); + // Early error: + // AssignmentRestProperty[Yield, Await] : + // `...` DestructuringAssignmentTarget[Yield, Await] + // + // It is a Syntax Error if |DestructuringAssignmentTarget| is an |ArrayLiteral| or an |ObjectLiteral|. + if ( + prop.type === "RestElement" && + (prop.argument.type === "ArrayPattern" || prop.argument.type === "ObjectPattern") + ) { + this.raise(prop.argument.start, "Unexpected token"); + } + } + break + + case "Property": + // AssignmentProperty has type === "Property" + if (node.kind !== "init") { this.raise(node.key.start, "Object pattern can't contain getter or setter"); } + this.toAssignable(node.value, isBinding); + break + + case "ArrayExpression": + node.type = "ArrayPattern"; + if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + this.toAssignableList(node.elements, isBinding); + break + + case "SpreadElement": + node.type = "RestElement"; + this.toAssignable(node.argument, isBinding); + if (node.argument.type === "AssignmentPattern") + { this.raise(node.argument.start, "Rest elements cannot have a default value"); } + break + + case "AssignmentExpression": + if (node.operator !== "=") { this.raise(node.left.end, "Only '=' operator can be used for specifying default value."); } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isBinding); + // falls through to AssignmentPattern + + case "AssignmentPattern": + break + + case "ParenthesizedExpression": + this.toAssignable(node.expression, isBinding, refDestructuringErrors); + break + + case "MemberExpression": + if (!isBinding) { break } + + default: + this.raise(node.start, "Assigning to rvalue"); + } + } else if (refDestructuringErrors) { this.checkPatternErrors(refDestructuringErrors, true); } + return node + }; + + // Convert list of expression atoms to binding list. + + pp$2.toAssignableList = function(exprList, isBinding) { + var end = exprList.length; + for (var i = 0; i < end; i++) { + var elt = exprList[i]; + if (elt) { this.toAssignable(elt, isBinding); } + } + if (end) { + var last = exprList[end - 1]; + if (this.options.ecmaVersion === 6 && isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier") + { this.unexpected(last.argument.start); } + } + return exprList + }; + + // Parses spread element. + + pp$2.parseSpread = function(refDestructuringErrors) { + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssign(false, refDestructuringErrors); + return this.finishNode(node, "SpreadElement") + }; + + pp$2.parseRestBinding = function() { + var node = this.startNode(); + this.next(); + + // RestElement inside of a function parameter must be an identifier + if (this.options.ecmaVersion === 6 && this.type !== types.name) + { this.unexpected(); } + + node.argument = this.parseBindingAtom(); + + return this.finishNode(node, "RestElement") + }; + + // Parses lvalue (assignable) atom. + + pp$2.parseBindingAtom = function() { + if (this.options.ecmaVersion >= 6) { + switch (this.type) { + case types.bracketL: + var node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(types.bracketR, true, true); + return this.finishNode(node, "ArrayPattern") + + case types.braceL: + return this.parseObj(true) + } + } + return this.parseIdent() + }; + + pp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma) { + var elts = [], first = true; + while (!this.eat(close)) { + if (first) { first = false; } + else { this.expect(types.comma); } + if (allowEmpty && this.type === types.comma) { + elts.push(null); + } else if (allowTrailingComma && this.afterTrailingComma(close)) { + break + } else if (this.type === types.ellipsis) { + var rest = this.parseRestBinding(); + this.parseBindingListItem(rest); + elts.push(rest); + if (this.type === types.comma) { this.raise(this.start, "Comma is not permitted after the rest element"); } + this.expect(close); + break + } else { + var elem = this.parseMaybeDefault(this.start, this.startLoc); + this.parseBindingListItem(elem); + elts.push(elem); + } + } + return elts + }; + + pp$2.parseBindingListItem = function(param) { + return param + }; + + // Parses assignment pattern around given atom if possible. + + pp$2.parseMaybeDefault = function(startPos, startLoc, left) { + left = left || this.parseBindingAtom(); + if (this.options.ecmaVersion < 6 || !this.eat(types.eq)) { return left } + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.right = this.parseMaybeAssign(); + return this.finishNode(node, "AssignmentPattern") + }; + + // Verify that a node is an lval — something that can be assigned + // to. + // bindingType can be either: + // 'var' indicating that the lval creates a 'var' binding + // 'let' indicating that the lval creates a lexical ('let' or 'const') binding + // 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references + + pp$2.checkLVal = function(expr, bindingType, checkClashes) { + if ( bindingType === void 0 ) bindingType = BIND_NONE; + + switch (expr.type) { + case "Identifier": + if (bindingType === BIND_LEXICAL && expr.name === "let") + { this.raiseRecoverable(expr.start, "let is disallowed as a lexically bound name"); } + if (this.strict && this.reservedWordsStrictBind.test(expr.name)) + { this.raiseRecoverable(expr.start, (bindingType ? "Binding " : "Assigning to ") + expr.name + " in strict mode"); } + if (checkClashes) { + if (has(checkClashes, expr.name)) + { this.raiseRecoverable(expr.start, "Argument name clash"); } + checkClashes[expr.name] = true; + } + if (bindingType !== BIND_NONE && bindingType !== BIND_OUTSIDE) { this.declareName(expr.name, bindingType, expr.start); } + break + + case "MemberExpression": + if (bindingType) { this.raiseRecoverable(expr.start, "Binding member expression"); } + break + + case "ObjectPattern": + for (var i = 0, list = expr.properties; i < list.length; i += 1) + { + var prop = list[i]; + + this.checkLVal(prop, bindingType, checkClashes); + } + break + + case "Property": + // AssignmentProperty has type === "Property" + this.checkLVal(expr.value, bindingType, checkClashes); + break + + case "ArrayPattern": + for (var i$1 = 0, list$1 = expr.elements; i$1 < list$1.length; i$1 += 1) { + var elem = list$1[i$1]; + + if (elem) { this.checkLVal(elem, bindingType, checkClashes); } + } + break + + case "AssignmentPattern": + this.checkLVal(expr.left, bindingType, checkClashes); + break + + case "RestElement": + this.checkLVal(expr.argument, bindingType, checkClashes); + break + + case "ParenthesizedExpression": + this.checkLVal(expr.expression, bindingType, checkClashes); + break + + default: + this.raise(expr.start, (bindingType ? "Binding" : "Assigning to") + " rvalue"); + } + }; + + // A recursive descent parser operates by defining functions for all + + var pp$3 = Parser.prototype; + + // Check if property name clashes with already added. + // Object/class getters and setters are not allowed to clash — + // either with each other or with an init property — and in + // strict mode, init properties are also not allowed to be repeated. + + pp$3.checkPropClash = function(prop, propHash, refDestructuringErrors) { + if (this.options.ecmaVersion >= 9 && prop.type === "SpreadElement") + { return } + if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand)) + { return } + var key = prop.key; + var name; + switch (key.type) { + case "Identifier": name = key.name; break + case "Literal": name = String(key.value); break + default: return + } + var kind = prop.kind; + if (this.options.ecmaVersion >= 6) { + if (name === "__proto__" && kind === "init") { + if (propHash.proto) { + if (refDestructuringErrors) { + if (refDestructuringErrors.doubleProto < 0) + { refDestructuringErrors.doubleProto = key.start; } + // Backwards-compat kludge. Can be removed in version 6.0 + } else { this.raiseRecoverable(key.start, "Redefinition of __proto__ property"); } + } + propHash.proto = true; + } + return + } + name = "$" + name; + var other = propHash[name]; + if (other) { + var redefinition; + if (kind === "init") { + redefinition = this.strict && other.init || other.get || other.set; + } else { + redefinition = other.init || other[kind]; + } + if (redefinition) + { this.raiseRecoverable(key.start, "Redefinition of property"); } + } else { + other = propHash[name] = { + init: false, + get: false, + set: false + }; + } + other[kind] = true; + }; + + // ### Expression parsing + + // These nest, from the most general expression type at the top to + // 'atomic', nondivisible expression types at the bottom. Most of + // the functions will simply let the function(s) below them parse, + // and, *if* the syntactic construct they handle is present, wrap + // the AST node that the inner parser gave them in another node. + + // Parse a full expression. The optional arguments are used to + // forbid the `in` operator (in for loops initalization expressions) + // and provide reference for storing '=' operator inside shorthand + // property assignment in contexts where both object expression + // and object pattern might appear (so it's possible to raise + // delayed syntax error at correct position). + + pp$3.parseExpression = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeAssign(noIn, refDestructuringErrors); + if (this.type === types.comma) { + var node = this.startNodeAt(startPos, startLoc); + node.expressions = [expr]; + while (this.eat(types.comma)) { node.expressions.push(this.parseMaybeAssign(noIn, refDestructuringErrors)); } + return this.finishNode(node, "SequenceExpression") + } + return expr + }; + + // Parse an assignment expression. This includes applications of + // operators like `+=`. + + pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) { + if (this.isContextual("yield")) { + if (this.inGenerator) { return this.parseYield(noIn) } + // The tokenizer will assume an expression is allowed after + // `yield`, but this isn't that kind of yield + else { this.exprAllowed = false; } + } + + var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1; + if (refDestructuringErrors) { + oldParenAssign = refDestructuringErrors.parenthesizedAssign; + oldTrailingComma = refDestructuringErrors.trailingComma; + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1; + } else { + refDestructuringErrors = new DestructuringErrors; + ownDestructuringErrors = true; + } + + var startPos = this.start, startLoc = this.startLoc; + if (this.type === types.parenL || this.type === types.name) + { this.potentialArrowAt = this.start; } + var left = this.parseMaybeConditional(noIn, refDestructuringErrors); + if (afterLeftParse) { left = afterLeftParse.call(this, left, startPos, startLoc); } + if (this.type.isAssign) { + var node = this.startNodeAt(startPos, startLoc); + node.operator = this.value; + node.left = this.type === types.eq ? this.toAssignable(left, false, refDestructuringErrors) : left; + if (!ownDestructuringErrors) { + refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = refDestructuringErrors.doubleProto = -1; + } + if (refDestructuringErrors.shorthandAssign >= node.left.start) + { refDestructuringErrors.shorthandAssign = -1; } // reset because shorthand default was used correctly + this.checkLVal(left); + this.next(); + node.right = this.parseMaybeAssign(noIn); + return this.finishNode(node, "AssignmentExpression") + } else { + if (ownDestructuringErrors) { this.checkExpressionErrors(refDestructuringErrors, true); } + } + if (oldParenAssign > -1) { refDestructuringErrors.parenthesizedAssign = oldParenAssign; } + if (oldTrailingComma > -1) { refDestructuringErrors.trailingComma = oldTrailingComma; } + return left + }; + + // Parse a ternary conditional (`?:`) operator. + + pp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprOps(noIn, refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + if (this.eat(types.question)) { + var node = this.startNodeAt(startPos, startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssign(); + this.expect(types.colon); + node.alternate = this.parseMaybeAssign(noIn); + return this.finishNode(node, "ConditionalExpression") + } + return expr + }; + + // Start the precedence parser. + + pp$3.parseExprOps = function(noIn, refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseMaybeUnary(refDestructuringErrors, false); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + return expr.start === startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn) + }; + + // Parse binary operators with the operator precedence parsing + // algorithm. `left` is the left-hand side of the operator. + // `minPrec` provides context that allows the function to stop and + // defer further parser to one of its callers when it encounters an + // operator that has a lower precedence than the set it is parsing. + + pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) { + var prec = this.type.binop; + if (prec != null && (!noIn || this.type !== types._in)) { + if (prec > minPrec) { + var logical = this.type === types.logicalOR || this.type === types.logicalAND; + var op = this.value; + this.next(); + var startPos = this.start, startLoc = this.startLoc; + var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn); + var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical); + return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn) + } + } + return left + }; + + pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) { + var node = this.startNodeAt(startPos, startLoc); + node.left = left; + node.operator = op; + node.right = right; + return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression") + }; + + // Parse unary operators, both prefix and postfix. + + pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) { + var startPos = this.start, startLoc = this.startLoc, expr; + if (this.isContextual("await") && (this.inAsync || (!this.inFunction && this.options.allowAwaitOutsideFunction))) { + expr = this.parseAwait(); + sawUnary = true; + } else if (this.type.prefix) { + var node = this.startNode(), update = this.type === types.incDec; + node.operator = this.value; + node.prefix = true; + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refDestructuringErrors, true); + if (update) { this.checkLVal(node.argument); } + else if (this.strict && node.operator === "delete" && + node.argument.type === "Identifier") + { this.raiseRecoverable(node.start, "Deleting local variable in strict mode"); } + else { sawUnary = true; } + expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression"); + } else { + expr = this.parseExprSubscripts(refDestructuringErrors); + if (this.checkExpressionErrors(refDestructuringErrors)) { return expr } + while (this.type.postfix && !this.canInsertSemicolon()) { + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.operator = this.value; + node$1.prefix = false; + node$1.argument = expr; + this.checkLVal(expr); + this.next(); + expr = this.finishNode(node$1, "UpdateExpression"); + } + } + + if (!sawUnary && this.eat(types.starstar)) + { return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false) } + else + { return expr } + }; + + // Parse call, dot, and `[]`-subscript expressions. + + pp$3.parseExprSubscripts = function(refDestructuringErrors) { + var startPos = this.start, startLoc = this.startLoc; + var expr = this.parseExprAtom(refDestructuringErrors); + if (expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")") + { return expr } + var result = this.parseSubscripts(expr, startPos, startLoc); + if (refDestructuringErrors && result.type === "MemberExpression") { + if (refDestructuringErrors.parenthesizedAssign >= result.start) { refDestructuringErrors.parenthesizedAssign = -1; } + if (refDestructuringErrors.parenthesizedBind >= result.start) { refDestructuringErrors.parenthesizedBind = -1; } + } + return result + }; + + pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) { + var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && + this.lastTokEnd === base.end && !this.canInsertSemicolon() && this.input.slice(base.start, base.end) === "async"; + while (true) { + var element = this.parseSubscript(base, startPos, startLoc, noCalls, maybeAsyncArrow); + if (element === base || element.type === "ArrowFunctionExpression") { return element } + base = element; + } + }; + + pp$3.parseSubscript = function(base, startPos, startLoc, noCalls, maybeAsyncArrow) { + var computed = this.eat(types.bracketL); + if (computed || this.eat(types.dot)) { + var node = this.startNodeAt(startPos, startLoc); + node.object = base; + node.property = computed ? this.parseExpression() : this.parseIdent(this.options.allowReserved !== "never"); + node.computed = !!computed; + if (computed) { this.expect(types.bracketR); } + base = this.finishNode(node, "MemberExpression"); + } else if (!noCalls && this.eat(types.parenL)) { + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + var exprList = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors); + if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + if (this.awaitIdentPos > 0) + { this.raise(this.awaitIdentPos, "Cannot use 'await' as identifier inside an async function"); } + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, true) + } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + this.awaitIdentPos = oldAwaitIdentPos || this.awaitIdentPos; + var node$1 = this.startNodeAt(startPos, startLoc); + node$1.callee = base; + node$1.arguments = exprList; + base = this.finishNode(node$1, "CallExpression"); + } else if (this.type === types.backQuote) { + var node$2 = this.startNodeAt(startPos, startLoc); + node$2.tag = base; + node$2.quasi = this.parseTemplate({isTagged: true}); + base = this.finishNode(node$2, "TaggedTemplateExpression"); + } + return base + }; + + // Parse an atomic expression — either a single token that is an + // expression, an expression started by a keyword like `function` or + // `new`, or an expression wrapped in punctuation like `()`, `[]`, + // or `{}`. + + pp$3.parseExprAtom = function(refDestructuringErrors) { + // If a division operator appears in an expression position, the + // tokenizer got confused, and we force it to read a regexp instead. + if (this.type === types.slash) { this.readRegexp(); } + + var node, canBeArrow = this.potentialArrowAt === this.start; + switch (this.type) { + case types._super: + if (!this.allowSuper) + { this.raise(this.start, "'super' keyword outside a method"); } + node = this.startNode(); + this.next(); + if (this.type === types.parenL && !this.allowDirectSuper) + { this.raise(node.start, "super() call outside constructor of a subclass"); } + // The `super` keyword can appear at below: + // SuperProperty: + // super [ Expression ] + // super . IdentifierName + // SuperCall: + // super ( Arguments ) + if (this.type !== types.dot && this.type !== types.bracketL && this.type !== types.parenL) + { this.unexpected(); } + return this.finishNode(node, "Super") + + case types._this: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression") + + case types.name: + var startPos = this.start, startLoc = this.startLoc, containsEsc = this.containsEsc; + var id = this.parseIdent(false); + if (this.options.ecmaVersion >= 8 && !containsEsc && id.name === "async" && !this.canInsertSemicolon() && this.eat(types._function)) + { return this.parseFunction(this.startNodeAt(startPos, startLoc), 0, false, true) } + if (canBeArrow && !this.canInsertSemicolon()) { + if (this.eat(types.arrow)) + { return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false) } + if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === types.name && !containsEsc) { + id = this.parseIdent(false); + if (this.canInsertSemicolon() || !this.eat(types.arrow)) + { this.unexpected(); } + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true) + } + } + return id + + case types.regexp: + var value = this.value; + node = this.parseLiteral(value.value); + node.regex = {pattern: value.pattern, flags: value.flags}; + return node + + case types.num: case types.string: + return this.parseLiteral(this.value) + + case types._null: case types._true: case types._false: + node = this.startNode(); + node.value = this.type === types._null ? null : this.type === types._true; + node.raw = this.type.keyword; + this.next(); + return this.finishNode(node, "Literal") + + case types.parenL: + var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow); + if (refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr)) + { refDestructuringErrors.parenthesizedAssign = start; } + if (refDestructuringErrors.parenthesizedBind < 0) + { refDestructuringErrors.parenthesizedBind = start; } + } + return expr + + case types.bracketL: + node = this.startNode(); + this.next(); + node.elements = this.parseExprList(types.bracketR, true, true, refDestructuringErrors); + return this.finishNode(node, "ArrayExpression") + + case types.braceL: + return this.parseObj(false, refDestructuringErrors) + + case types._function: + node = this.startNode(); + this.next(); + return this.parseFunction(node, 0) + + case types._class: + return this.parseClass(this.startNode(), false) + + case types._new: + return this.parseNew() + + case types.backQuote: + return this.parseTemplate() + + case types._import: + if (this.options.ecmaVersion >= 11) { + return this.parseExprImport() + } else { + return this.unexpected() + } + + default: + this.unexpected(); + } + }; + + pp$3.parseExprImport = function() { + var node = this.startNode(); + this.next(); // skip `import` + switch (this.type) { + case types.parenL: + return this.parseDynamicImport(node) + default: + this.unexpected(); + } + }; + + pp$3.parseDynamicImport = function(node) { + this.next(); // skip `(` + + // Parse node.source. + node.source = this.parseMaybeAssign(); + + // Verify ending. + if (!this.eat(types.parenR)) { + var errorPos = this.start; + if (this.eat(types.comma) && this.eat(types.parenR)) { + this.raiseRecoverable(errorPos, "Trailing comma is not allowed in import()"); + } else { + this.unexpected(errorPos); + } + } + + return this.finishNode(node, "ImportExpression") + }; + + pp$3.parseLiteral = function(value) { + var node = this.startNode(); + node.value = value; + node.raw = this.input.slice(this.start, this.end); + if (node.raw.charCodeAt(node.raw.length - 1) === 110) { node.bigint = node.raw.slice(0, -1); } + this.next(); + return this.finishNode(node, "Literal") + }; + + pp$3.parseParenExpression = function() { + this.expect(types.parenL); + var val = this.parseExpression(); + this.expect(types.parenR); + return val + }; + + pp$3.parseParenAndDistinguishExpression = function(canBeArrow) { + var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8; + if (this.options.ecmaVersion >= 6) { + this.next(); + + var innerStartPos = this.start, innerStartLoc = this.startLoc; + var exprList = [], first = true, lastIsComma = false; + var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart; + this.yieldPos = 0; + this.awaitPos = 0; + // Do not save awaitIdentPos to allow checking awaits nested in parameters + while (this.type !== types.parenR) { + first ? first = false : this.expect(types.comma); + if (allowTrailingComma && this.afterTrailingComma(types.parenR, true)) { + lastIsComma = true; + break + } else if (this.type === types.ellipsis) { + spreadStart = this.start; + exprList.push(this.parseParenItem(this.parseRestBinding())); + if (this.type === types.comma) { this.raise(this.start, "Comma is not permitted after the rest element"); } + break + } else { + exprList.push(this.parseMaybeAssign(false, refDestructuringErrors, this.parseParenItem)); + } + } + var innerEndPos = this.start, innerEndLoc = this.startLoc; + this.expect(types.parenR); + + if (canBeArrow && !this.canInsertSemicolon() && this.eat(types.arrow)) { + this.checkPatternErrors(refDestructuringErrors, false); + this.checkYieldAwaitInDefaultParams(); + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + return this.parseParenArrowList(startPos, startLoc, exprList) + } + + if (!exprList.length || lastIsComma) { this.unexpected(this.lastTokStart); } + if (spreadStart) { this.unexpected(spreadStart); } + this.checkExpressionErrors(refDestructuringErrors, true); + this.yieldPos = oldYieldPos || this.yieldPos; + this.awaitPos = oldAwaitPos || this.awaitPos; + + if (exprList.length > 1) { + val = this.startNodeAt(innerStartPos, innerStartLoc); + val.expressions = exprList; + this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc); + } else { + val = exprList[0]; + } + } else { + val = this.parseParenExpression(); + } + + if (this.options.preserveParens) { + var par = this.startNodeAt(startPos, startLoc); + par.expression = val; + return this.finishNode(par, "ParenthesizedExpression") + } else { + return val + } + }; + + pp$3.parseParenItem = function(item) { + return item + }; + + pp$3.parseParenArrowList = function(startPos, startLoc, exprList) { + return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList) + }; + + // New's precedence is slightly tricky. It must allow its argument to + // be a `[]` or dot subscript expression, but not a call — at least, + // not without wrapping it in parentheses. Thus, it uses the noCalls + // argument to parseSubscripts to prevent it from consuming the + // argument list. + + var empty$1 = []; + + pp$3.parseNew = function() { + if (this.containsEsc) { this.raiseRecoverable(this.start, "Escape sequence in keyword new"); } + var node = this.startNode(); + var meta = this.parseIdent(true); + if (this.options.ecmaVersion >= 6 && this.eat(types.dot)) { + node.meta = meta; + var containsEsc = this.containsEsc; + node.property = this.parseIdent(true); + if (node.property.name !== "target" || containsEsc) + { this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target"); } + if (!this.inNonArrowFunction()) + { this.raiseRecoverable(node.start, "new.target can only be used in functions"); } + return this.finishNode(node, "MetaProperty") + } + var startPos = this.start, startLoc = this.startLoc, isImport = this.type === types._import; + node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true); + if (isImport && node.callee.type === "ImportExpression") { + this.raise(startPos, "Cannot use new with import()"); + } + if (this.eat(types.parenL)) { node.arguments = this.parseExprList(types.parenR, this.options.ecmaVersion >= 8, false); } + else { node.arguments = empty$1; } + return this.finishNode(node, "NewExpression") + }; + + // Parse template expression. + + pp$3.parseTemplateElement = function(ref) { + var isTagged = ref.isTagged; + + var elem = this.startNode(); + if (this.type === types.invalidTemplate) { + if (!isTagged) { + this.raiseRecoverable(this.start, "Bad escape sequence in untagged template literal"); + } + elem.value = { + raw: this.value, + cooked: null + }; + } else { + elem.value = { + raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"), + cooked: this.value + }; + } + this.next(); + elem.tail = this.type === types.backQuote; + return this.finishNode(elem, "TemplateElement") + }; + + pp$3.parseTemplate = function(ref) { + if ( ref === void 0 ) ref = {}; + var isTagged = ref.isTagged; if ( isTagged === void 0 ) isTagged = false; + + var node = this.startNode(); + this.next(); + node.expressions = []; + var curElt = this.parseTemplateElement({isTagged: isTagged}); + node.quasis = [curElt]; + while (!curElt.tail) { + if (this.type === types.eof) { this.raise(this.pos, "Unterminated template literal"); } + this.expect(types.dollarBraceL); + node.expressions.push(this.parseExpression()); + this.expect(types.braceR); + node.quasis.push(curElt = this.parseTemplateElement({isTagged: isTagged})); + } + this.next(); + return this.finishNode(node, "TemplateLiteral") + }; + + pp$3.isAsyncProp = function(prop) { + return !prop.computed && prop.key.type === "Identifier" && prop.key.name === "async" && + (this.type === types.name || this.type === types.num || this.type === types.string || this.type === types.bracketL || this.type.keyword || (this.options.ecmaVersion >= 9 && this.type === types.star)) && + !lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) + }; + + // Parse an object literal or binding pattern. + + pp$3.parseObj = function(isPattern, refDestructuringErrors) { + var node = this.startNode(), first = true, propHash = {}; + node.properties = []; + this.next(); + while (!this.eat(types.braceR)) { + if (!first) { + this.expect(types.comma); + if (this.options.ecmaVersion >= 5 && this.afterTrailingComma(types.braceR)) { break } + } else { first = false; } + + var prop = this.parseProperty(isPattern, refDestructuringErrors); + if (!isPattern) { this.checkPropClash(prop, propHash, refDestructuringErrors); } + node.properties.push(prop); + } + return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression") + }; + + pp$3.parseProperty = function(isPattern, refDestructuringErrors) { + var prop = this.startNode(), isGenerator, isAsync, startPos, startLoc; + if (this.options.ecmaVersion >= 9 && this.eat(types.ellipsis)) { + if (isPattern) { + prop.argument = this.parseIdent(false); + if (this.type === types.comma) { + this.raise(this.start, "Comma is not permitted after the rest element"); + } + return this.finishNode(prop, "RestElement") + } + // To disallow parenthesized identifier via `this.toAssignable()`. + if (this.type === types.parenL && refDestructuringErrors) { + if (refDestructuringErrors.parenthesizedAssign < 0) { + refDestructuringErrors.parenthesizedAssign = this.start; + } + if (refDestructuringErrors.parenthesizedBind < 0) { + refDestructuringErrors.parenthesizedBind = this.start; + } + } + // Parse argument. + prop.argument = this.parseMaybeAssign(false, refDestructuringErrors); + // To disallow trailing comma via `this.toAssignable()`. + if (this.type === types.comma && refDestructuringErrors && refDestructuringErrors.trailingComma < 0) { + refDestructuringErrors.trailingComma = this.start; + } + // Finish + return this.finishNode(prop, "SpreadElement") + } + if (this.options.ecmaVersion >= 6) { + prop.method = false; + prop.shorthand = false; + if (isPattern || refDestructuringErrors) { + startPos = this.start; + startLoc = this.startLoc; + } + if (!isPattern) + { isGenerator = this.eat(types.star); } + } + var containsEsc = this.containsEsc; + this.parsePropertyName(prop); + if (!isPattern && !containsEsc && this.options.ecmaVersion >= 8 && !isGenerator && this.isAsyncProp(prop)) { + isAsync = true; + isGenerator = this.options.ecmaVersion >= 9 && this.eat(types.star); + this.parsePropertyName(prop, refDestructuringErrors); + } else { + isAsync = false; + } + this.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc); + return this.finishNode(prop, "Property") + }; + + pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors, containsEsc) { + if ((isGenerator || isAsync) && this.type === types.colon) + { this.unexpected(); } + + if (this.eat(types.colon)) { + prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors); + prop.kind = "init"; + } else if (this.options.ecmaVersion >= 6 && this.type === types.parenL) { + if (isPattern) { this.unexpected(); } + prop.kind = "init"; + prop.method = true; + prop.value = this.parseMethod(isGenerator, isAsync); + } else if (!isPattern && !containsEsc && + this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" && + (prop.key.name === "get" || prop.key.name === "set") && + (this.type !== types.comma && this.type !== types.braceR)) { + if (isGenerator || isAsync) { this.unexpected(); } + prop.kind = prop.key.name; + this.parsePropertyName(prop); + prop.value = this.parseMethod(false); + var paramCount = prop.kind === "get" ? 0 : 1; + if (prop.value.params.length !== paramCount) { + var start = prop.value.start; + if (prop.kind === "get") + { this.raiseRecoverable(start, "getter should have no params"); } + else + { this.raiseRecoverable(start, "setter should have exactly one param"); } + } else { + if (prop.kind === "set" && prop.value.params[0].type === "RestElement") + { this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params"); } + } + } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") { + if (isGenerator || isAsync) { this.unexpected(); } + this.checkUnreserved(prop.key); + if (prop.key.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = startPos; } + prop.kind = "init"; + if (isPattern) { + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); + } else if (this.type === types.eq && refDestructuringErrors) { + if (refDestructuringErrors.shorthandAssign < 0) + { refDestructuringErrors.shorthandAssign = this.start; } + prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key); + } else { + prop.value = prop.key; + } + prop.shorthand = true; + } else { this.unexpected(); } + }; + + pp$3.parsePropertyName = function(prop) { + if (this.options.ecmaVersion >= 6) { + if (this.eat(types.bracketL)) { + prop.computed = true; + prop.key = this.parseMaybeAssign(); + this.expect(types.bracketR); + return prop.key + } else { + prop.computed = false; + } + } + return prop.key = this.type === types.num || this.type === types.string ? this.parseExprAtom() : this.parseIdent(this.options.allowReserved !== "never") + }; + + // Initialize empty function node. + + pp$3.initFunction = function(node) { + node.id = null; + if (this.options.ecmaVersion >= 6) { node.generator = node.expression = false; } + if (this.options.ecmaVersion >= 8) { node.async = false; } + }; + + // Parse object or class method. + + pp$3.parseMethod = function(isGenerator, isAsync, allowDirectSuper) { + var node = this.startNode(), oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + + this.initFunction(node); + if (this.options.ecmaVersion >= 6) + { node.generator = isGenerator; } + if (this.options.ecmaVersion >= 8) + { node.async = !!isAsync; } + + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + this.enterScope(functionFlags(isAsync, node.generator) | SCOPE_SUPER | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0)); + + this.expect(types.parenL); + node.params = this.parseBindingList(types.parenR, false, this.options.ecmaVersion >= 8); + this.checkYieldAwaitInDefaultParams(); + this.parseFunctionBody(node, false, true); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "FunctionExpression") + }; + + // Parse arrow function expression with given parameters. + + pp$3.parseArrowExpression = function(node, params, isAsync) { + var oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldAwaitIdentPos = this.awaitIdentPos; + + this.enterScope(functionFlags(isAsync, false) | SCOPE_ARROW); + this.initFunction(node); + if (this.options.ecmaVersion >= 8) { node.async = !!isAsync; } + + this.yieldPos = 0; + this.awaitPos = 0; + this.awaitIdentPos = 0; + + node.params = this.toAssignableList(params, true); + this.parseFunctionBody(node, true, false); + + this.yieldPos = oldYieldPos; + this.awaitPos = oldAwaitPos; + this.awaitIdentPos = oldAwaitIdentPos; + return this.finishNode(node, "ArrowFunctionExpression") + }; + + // Parse function body and check parameters. + + pp$3.parseFunctionBody = function(node, isArrowFunction, isMethod) { + var isExpression = isArrowFunction && this.type !== types.braceL; + var oldStrict = this.strict, useStrict = false; + + if (isExpression) { + node.body = this.parseMaybeAssign(); + node.expression = true; + this.checkParams(node, false); + } else { + var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params); + if (!oldStrict || nonSimple) { + useStrict = this.strictDirective(this.end); + // If this is a strict mode function, verify that argument names + // are not repeated, and it does not try to bind the words `eval` + // or `arguments`. + if (useStrict && nonSimple) + { this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list"); } + } + // Start a new scope with regard to labels and the `inFunction` + // flag (restore them to their old value afterwards). + var oldLabels = this.labels; + this.labels = []; + if (useStrict) { this.strict = true; } + + // Add the params to varDeclaredNames to ensure that an error is thrown + // if a let/const declaration in the function clashes with one of the params. + this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && !isMethod && this.isSimpleParamList(node.params)); + node.body = this.parseBlock(false); + node.expression = false; + this.adaptDirectivePrologue(node.body.body); + this.labels = oldLabels; + } + this.exitScope(); + + // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval' + if (this.strict && node.id) { this.checkLVal(node.id, BIND_OUTSIDE); } + this.strict = oldStrict; + }; + + pp$3.isSimpleParamList = function(params) { + for (var i = 0, list = params; i < list.length; i += 1) + { + var param = list[i]; + + if (param.type !== "Identifier") { return false + } } + return true + }; + + // Checks function params for various disallowed patterns such as using "eval" + // or "arguments" and duplicate parameters. + + pp$3.checkParams = function(node, allowDuplicates) { + var nameHash = {}; + for (var i = 0, list = node.params; i < list.length; i += 1) + { + var param = list[i]; + + this.checkLVal(param, BIND_VAR, allowDuplicates ? null : nameHash); + } + }; + + // Parses a comma-separated list of expressions, and returns them as + // an array. `close` is the token type that ends the list, and + // `allowEmpty` can be turned on to allow subsequent commas with + // nothing in between them to be parsed as `null` (which is needed + // for array literals). + + pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) { + var elts = [], first = true; + while (!this.eat(close)) { + if (!first) { + this.expect(types.comma); + if (allowTrailingComma && this.afterTrailingComma(close)) { break } + } else { first = false; } + + var elt = (void 0); + if (allowEmpty && this.type === types.comma) + { elt = null; } + else if (this.type === types.ellipsis) { + elt = this.parseSpread(refDestructuringErrors); + if (refDestructuringErrors && this.type === types.comma && refDestructuringErrors.trailingComma < 0) + { refDestructuringErrors.trailingComma = this.start; } + } else { + elt = this.parseMaybeAssign(false, refDestructuringErrors); + } + elts.push(elt); + } + return elts + }; + + pp$3.checkUnreserved = function(ref) { + var start = ref.start; + var end = ref.end; + var name = ref.name; + + if (this.inGenerator && name === "yield") + { this.raiseRecoverable(start, "Cannot use 'yield' as identifier inside a generator"); } + if (this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use 'await' as identifier inside an async function"); } + if (this.keywords.test(name)) + { this.raise(start, ("Unexpected keyword '" + name + "'")); } + if (this.options.ecmaVersion < 6 && + this.input.slice(start, end).indexOf("\\") !== -1) { return } + var re = this.strict ? this.reservedWordsStrict : this.reservedWords; + if (re.test(name)) { + if (!this.inAsync && name === "await") + { this.raiseRecoverable(start, "Cannot use keyword 'await' outside an async function"); } + this.raiseRecoverable(start, ("The keyword '" + name + "' is reserved")); + } + }; + + // Parse the next token as an identifier. If `liberal` is true (used + // when parsing properties), it will also convert keywords into + // identifiers. + + pp$3.parseIdent = function(liberal, isBinding) { + var node = this.startNode(); + if (this.type === types.name) { + node.name = this.value; + } else if (this.type.keyword) { + node.name = this.type.keyword; + + // To fix https://github.com/acornjs/acorn/issues/575 + // `class` and `function` keywords push new context into this.context. + // But there is no chance to pop the context if the keyword is consumed as an identifier such as a property name. + // If the previous token is a dot, this does not apply because the context-managing code already ignored the keyword + if ((node.name === "class" || node.name === "function") && + (this.lastTokEnd !== this.lastTokStart + 1 || this.input.charCodeAt(this.lastTokStart) !== 46)) { + this.context.pop(); + } + } else { + this.unexpected(); + } + this.next(!!liberal); + this.finishNode(node, "Identifier"); + if (!liberal) { + this.checkUnreserved(node); + if (node.name === "await" && !this.awaitIdentPos) + { this.awaitIdentPos = node.start; } + } + return node + }; + + // Parses yield expression inside generator. + + pp$3.parseYield = function(noIn) { + if (!this.yieldPos) { this.yieldPos = this.start; } + + var node = this.startNode(); + this.next(); + if (this.type === types.semi || this.canInsertSemicolon() || (this.type !== types.star && !this.type.startsExpr)) { + node.delegate = false; + node.argument = null; + } else { + node.delegate = this.eat(types.star); + node.argument = this.parseMaybeAssign(noIn); + } + return this.finishNode(node, "YieldExpression") + }; + + pp$3.parseAwait = function() { + if (!this.awaitPos) { this.awaitPos = this.start; } + + var node = this.startNode(); + this.next(); + node.argument = this.parseMaybeUnary(null, false); + return this.finishNode(node, "AwaitExpression") + }; + + var pp$4 = Parser.prototype; + + // This function is used to raise exceptions on parse errors. It + // takes an offset integer (into the current `input`) to indicate + // the location of the error, attaches the position to the end + // of the error message, and then raises a `SyntaxError` with that + // message. + + pp$4.raise = function(pos, message) { + var loc = getLineInfo(this.input, pos); + message += " (" + loc.line + ":" + loc.column + ")"; + var err = new SyntaxError(message); + err.pos = pos; err.loc = loc; err.raisedAt = this.pos; + throw err + }; + + pp$4.raiseRecoverable = pp$4.raise; + + pp$4.curPosition = function() { + if (this.options.locations) { + return new Position(this.curLine, this.pos - this.lineStart) + } + }; + + var pp$5 = Parser.prototype; + + var Scope = function Scope(flags) { + this.flags = flags; + // A list of var-declared names in the current lexical scope + this.var = []; + // A list of lexically-declared names in the current lexical scope + this.lexical = []; + // A list of lexically-declared FunctionDeclaration names in the current lexical scope + this.functions = []; + }; + + // The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names. + + pp$5.enterScope = function(flags) { + this.scopeStack.push(new Scope(flags)); + }; + + pp$5.exitScope = function() { + this.scopeStack.pop(); + }; + + // The spec says: + // > At the top level of a function, or script, function declarations are + // > treated like var declarations rather than like lexical declarations. + pp$5.treatFunctionsAsVarInScope = function(scope) { + return (scope.flags & SCOPE_FUNCTION) || !this.inModule && (scope.flags & SCOPE_TOP) + }; + + pp$5.declareName = function(name, bindingType, pos) { + var redeclared = false; + if (bindingType === BIND_LEXICAL) { + var scope = this.currentScope(); + redeclared = scope.lexical.indexOf(name) > -1 || scope.functions.indexOf(name) > -1 || scope.var.indexOf(name) > -1; + scope.lexical.push(name); + if (this.inModule && (scope.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + } else if (bindingType === BIND_SIMPLE_CATCH) { + var scope$1 = this.currentScope(); + scope$1.lexical.push(name); + } else if (bindingType === BIND_FUNCTION) { + var scope$2 = this.currentScope(); + if (this.treatFunctionsAsVar) + { redeclared = scope$2.lexical.indexOf(name) > -1; } + else + { redeclared = scope$2.lexical.indexOf(name) > -1 || scope$2.var.indexOf(name) > -1; } + scope$2.functions.push(name); + } else { + for (var i = this.scopeStack.length - 1; i >= 0; --i) { + var scope$3 = this.scopeStack[i]; + if (scope$3.lexical.indexOf(name) > -1 && !((scope$3.flags & SCOPE_SIMPLE_CATCH) && scope$3.lexical[0] === name) || + !this.treatFunctionsAsVarInScope(scope$3) && scope$3.functions.indexOf(name) > -1) { + redeclared = true; + break + } + scope$3.var.push(name); + if (this.inModule && (scope$3.flags & SCOPE_TOP)) + { delete this.undefinedExports[name]; } + if (scope$3.flags & SCOPE_VAR) { break } + } + } + if (redeclared) { this.raiseRecoverable(pos, ("Identifier '" + name + "' has already been declared")); } + }; + + pp$5.checkLocalExport = function(id) { + // scope.functions must be empty as Module code is always strict. + if (this.scopeStack[0].lexical.indexOf(id.name) === -1 && + this.scopeStack[0].var.indexOf(id.name) === -1) { + this.undefinedExports[id.name] = id; + } + }; + + pp$5.currentScope = function() { + return this.scopeStack[this.scopeStack.length - 1] + }; + + pp$5.currentVarScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & SCOPE_VAR) { return scope } + } + }; + + // Could be useful for `this`, `new.target`, `super()`, `super.property`, and `super[property]`. + pp$5.currentThisScope = function() { + for (var i = this.scopeStack.length - 1;; i--) { + var scope = this.scopeStack[i]; + if (scope.flags & SCOPE_VAR && !(scope.flags & SCOPE_ARROW)) { return scope } + } + }; + + var Node = function Node(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + if (parser.options.locations) + { this.loc = new SourceLocation(parser, loc); } + if (parser.options.directSourceFile) + { this.sourceFile = parser.options.directSourceFile; } + if (parser.options.ranges) + { this.range = [pos, 0]; } + }; + + // Start an AST node, attaching a start offset. + + var pp$6 = Parser.prototype; + + pp$6.startNode = function() { + return new Node(this, this.start, this.startLoc) + }; + + pp$6.startNodeAt = function(pos, loc) { + return new Node(this, pos, loc) + }; + + // Finish an AST node, adding `type` and `end` properties. + + function finishNodeAt(node, type, pos, loc) { + node.type = type; + node.end = pos; + if (this.options.locations) + { node.loc.end = loc; } + if (this.options.ranges) + { node.range[1] = pos; } + return node + } + + pp$6.finishNode = function(node, type) { + return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc) + }; + + // Finish node at given position + + pp$6.finishNodeAt = function(node, type, pos, loc) { + return finishNodeAt.call(this, node, type, pos, loc) + }; + + // The algorithm used to determine whether a regexp can appear at a + + var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) { + this.token = token; + this.isExpr = !!isExpr; + this.preserveSpace = !!preserveSpace; + this.override = override; + this.generator = !!generator; + }; + + var types$1 = { + b_stat: new TokContext("{", false), + b_expr: new TokContext("{", true), + b_tmpl: new TokContext("${", false), + p_stat: new TokContext("(", false), + p_expr: new TokContext("(", true), + q_tmpl: new TokContext("`", true, true, function (p) { return p.tryReadTemplateToken(); }), + f_stat: new TokContext("function", false), + f_expr: new TokContext("function", true), + f_expr_gen: new TokContext("function", true, false, null, true), + f_gen: new TokContext("function", false, false, null, true) + }; + + var pp$7 = Parser.prototype; + + pp$7.initialContext = function() { + return [types$1.b_stat] + }; + + pp$7.braceIsBlock = function(prevType) { + var parent = this.curContext(); + if (parent === types$1.f_expr || parent === types$1.f_stat) + { return true } + if (prevType === types.colon && (parent === types$1.b_stat || parent === types$1.b_expr)) + { return !parent.isExpr } + + // The check for `tt.name && exprAllowed` detects whether we are + // after a `yield` or `of` construct. See the `updateContext` for + // `tt.name`. + if (prevType === types._return || prevType === types.name && this.exprAllowed) + { return lineBreak.test(this.input.slice(this.lastTokEnd, this.start)) } + if (prevType === types._else || prevType === types.semi || prevType === types.eof || prevType === types.parenR || prevType === types.arrow) + { return true } + if (prevType === types.braceL) + { return parent === types$1.b_stat } + if (prevType === types._var || prevType === types._const || prevType === types.name) + { return false } + return !this.exprAllowed + }; + + pp$7.inGeneratorContext = function() { + for (var i = this.context.length - 1; i >= 1; i--) { + var context = this.context[i]; + if (context.token === "function") + { return context.generator } + } + return false + }; + + pp$7.updateContext = function(prevType) { + var update, type = this.type; + if (type.keyword && prevType === types.dot) + { this.exprAllowed = false; } + else if (update = type.updateContext) + { update.call(this, prevType); } + else + { this.exprAllowed = type.beforeExpr; } + }; + + // Token-specific context update code + + types.parenR.updateContext = types.braceR.updateContext = function() { + if (this.context.length === 1) { + this.exprAllowed = true; + return + } + var out = this.context.pop(); + if (out === types$1.b_stat && this.curContext().token === "function") { + out = this.context.pop(); + } + this.exprAllowed = !out.isExpr; + }; + + types.braceL.updateContext = function(prevType) { + this.context.push(this.braceIsBlock(prevType) ? types$1.b_stat : types$1.b_expr); + this.exprAllowed = true; + }; + + types.dollarBraceL.updateContext = function() { + this.context.push(types$1.b_tmpl); + this.exprAllowed = true; + }; + + types.parenL.updateContext = function(prevType) { + var statementParens = prevType === types._if || prevType === types._for || prevType === types._with || prevType === types._while; + this.context.push(statementParens ? types$1.p_stat : types$1.p_expr); + this.exprAllowed = true; + }; + + types.incDec.updateContext = function() { + // tokExprAllowed stays unchanged + }; + + types._function.updateContext = types._class.updateContext = function(prevType) { + if (prevType.beforeExpr && prevType !== types.semi && prevType !== types._else && + !(prevType === types._return && lineBreak.test(this.input.slice(this.lastTokEnd, this.start))) && + !((prevType === types.colon || prevType === types.braceL) && this.curContext() === types$1.b_stat)) + { this.context.push(types$1.f_expr); } + else + { this.context.push(types$1.f_stat); } + this.exprAllowed = false; + }; + + types.backQuote.updateContext = function() { + if (this.curContext() === types$1.q_tmpl) + { this.context.pop(); } + else + { this.context.push(types$1.q_tmpl); } + this.exprAllowed = false; + }; + + types.star.updateContext = function(prevType) { + if (prevType === types._function) { + var index = this.context.length - 1; + if (this.context[index] === types$1.f_expr) + { this.context[index] = types$1.f_expr_gen; } + else + { this.context[index] = types$1.f_gen; } + } + this.exprAllowed = true; + }; + + types.name.updateContext = function(prevType) { + var allowed = false; + if (this.options.ecmaVersion >= 6 && prevType !== types.dot) { + if (this.value === "of" && !this.exprAllowed || + this.value === "yield" && this.inGeneratorContext()) + { allowed = true; } + } + this.exprAllowed = allowed; + }; + + // This file contains Unicode properties extracted from the ECMAScript + // specification. The lists are extracted like so: + // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText) + + // #table-binary-unicode-properties + var ecma9BinaryProperties = "ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS"; + var ecma10BinaryProperties = ecma9BinaryProperties + " Extended_Pictographic"; + var ecma11BinaryProperties = ecma10BinaryProperties; + var unicodeBinaryProperties = { + 9: ecma9BinaryProperties, + 10: ecma10BinaryProperties, + 11: ecma11BinaryProperties + }; + + // #table-unicode-general-category-values + var unicodeGeneralCategoryValues = "Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu"; + + // #table-unicode-script-values + var ecma9ScriptValues = "Adlam Adlm Ahom Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb"; + var ecma10ScriptValues = ecma9ScriptValues + " Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd"; + var ecma11ScriptValues = ecma10ScriptValues + " Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho"; + var unicodeScriptValues = { + 9: ecma9ScriptValues, + 10: ecma10ScriptValues, + 11: ecma11ScriptValues + }; + + var data = {}; + function buildUnicodeData(ecmaVersion) { + var d = data[ecmaVersion] = { + binary: wordsRegexp(unicodeBinaryProperties[ecmaVersion] + " " + unicodeGeneralCategoryValues), + nonBinary: { + General_Category: wordsRegexp(unicodeGeneralCategoryValues), + Script: wordsRegexp(unicodeScriptValues[ecmaVersion]) + } + }; + d.nonBinary.Script_Extensions = d.nonBinary.Script; + + d.nonBinary.gc = d.nonBinary.General_Category; + d.nonBinary.sc = d.nonBinary.Script; + d.nonBinary.scx = d.nonBinary.Script_Extensions; + } + buildUnicodeData(9); + buildUnicodeData(10); + buildUnicodeData(11); + + var pp$8 = Parser.prototype; + + var RegExpValidationState = function RegExpValidationState(parser) { + this.parser = parser; + this.validFlags = "gim" + (parser.options.ecmaVersion >= 6 ? "uy" : "") + (parser.options.ecmaVersion >= 9 ? "s" : ""); + this.unicodeProperties = data[parser.options.ecmaVersion >= 11 ? 11 : parser.options.ecmaVersion]; + this.source = ""; + this.flags = ""; + this.start = 0; + this.switchU = false; + this.switchN = false; + this.pos = 0; + this.lastIntValue = 0; + this.lastStringValue = ""; + this.lastAssertionIsQuantifiable = false; + this.numCapturingParens = 0; + this.maxBackReference = 0; + this.groupNames = []; + this.backReferenceNames = []; + }; + + RegExpValidationState.prototype.reset = function reset (start, pattern, flags) { + var unicode = flags.indexOf("u") !== -1; + this.start = start | 0; + this.source = pattern + ""; + this.flags = flags; + this.switchU = unicode && this.parser.options.ecmaVersion >= 6; + this.switchN = unicode && this.parser.options.ecmaVersion >= 9; + }; + + RegExpValidationState.prototype.raise = function raise (message) { + this.parser.raiseRecoverable(this.start, ("Invalid regular expression: /" + (this.source) + "/: " + message)); + }; + + // If u flag is given, this returns the code point at the index (it combines a surrogate pair). + // Otherwise, this returns the code unit of the index (can be a part of a surrogate pair). + RegExpValidationState.prototype.at = function at (i) { + var s = this.source; + var l = s.length; + if (i >= l) { + return -1 + } + var c = s.charCodeAt(i); + if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l) { + return c + } + var next = s.charCodeAt(i + 1); + return next >= 0xDC00 && next <= 0xDFFF ? (c << 10) + next - 0x35FDC00 : c + }; + + RegExpValidationState.prototype.nextIndex = function nextIndex (i) { + var s = this.source; + var l = s.length; + if (i >= l) { + return l + } + var c = s.charCodeAt(i), next; + if (!this.switchU || c <= 0xD7FF || c >= 0xE000 || i + 1 >= l || + (next = s.charCodeAt(i + 1)) < 0xDC00 || next > 0xDFFF) { + return i + 1 + } + return i + 2 + }; + + RegExpValidationState.prototype.current = function current () { + return this.at(this.pos) + }; + + RegExpValidationState.prototype.lookahead = function lookahead () { + return this.at(this.nextIndex(this.pos)) + }; + + RegExpValidationState.prototype.advance = function advance () { + this.pos = this.nextIndex(this.pos); + }; + + RegExpValidationState.prototype.eat = function eat (ch) { + if (this.current() === ch) { + this.advance(); + return true + } + return false + }; + + function codePointToString(ch) { + if (ch <= 0xFFFF) { return String.fromCharCode(ch) } + ch -= 0x10000; + return String.fromCharCode((ch >> 10) + 0xD800, (ch & 0x03FF) + 0xDC00) + } + + /** + * Validate the flags part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ + pp$8.validateRegExpFlags = function(state) { + var validFlags = state.validFlags; + var flags = state.flags; + + for (var i = 0; i < flags.length; i++) { + var flag = flags.charAt(i); + if (validFlags.indexOf(flag) === -1) { + this.raise(state.start, "Invalid regular expression flag"); + } + if (flags.indexOf(flag, i + 1) > -1) { + this.raise(state.start, "Duplicate regular expression flag"); + } + } + }; + + /** + * Validate the pattern part of a given RegExpLiteral. + * + * @param {RegExpValidationState} state The state to validate RegExp. + * @returns {void} + */ + pp$8.validateRegExpPattern = function(state) { + this.regexp_pattern(state); + + // The goal symbol for the parse is |Pattern[~U, ~N]|. If the result of + // parsing contains a |GroupName|, reparse with the goal symbol + // |Pattern[~U, +N]| and use this result instead. Throw a *SyntaxError* + // exception if _P_ did not conform to the grammar, if any elements of _P_ + // were not matched by the parse, or if any Early Error conditions exist. + if (!state.switchN && this.options.ecmaVersion >= 9 && state.groupNames.length > 0) { + state.switchN = true; + this.regexp_pattern(state); + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Pattern + pp$8.regexp_pattern = function(state) { + state.pos = 0; + state.lastIntValue = 0; + state.lastStringValue = ""; + state.lastAssertionIsQuantifiable = false; + state.numCapturingParens = 0; + state.maxBackReference = 0; + state.groupNames.length = 0; + state.backReferenceNames.length = 0; + + this.regexp_disjunction(state); + + if (state.pos !== state.source.length) { + // Make the same messages as V8. + if (state.eat(0x29 /* ) */)) { + state.raise("Unmatched ')'"); + } + if (state.eat(0x5D /* ] */) || state.eat(0x7D /* } */)) { + state.raise("Lone quantifier brackets"); + } + } + if (state.maxBackReference > state.numCapturingParens) { + state.raise("Invalid escape"); + } + for (var i = 0, list = state.backReferenceNames; i < list.length; i += 1) { + var name = list[i]; + + if (state.groupNames.indexOf(name) === -1) { + state.raise("Invalid named capture referenced"); + } + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Disjunction + pp$8.regexp_disjunction = function(state) { + this.regexp_alternative(state); + while (state.eat(0x7C /* | */)) { + this.regexp_alternative(state); + } + + // Make the same message as V8. + if (this.regexp_eatQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + if (state.eat(0x7B /* { */)) { + state.raise("Lone quantifier brackets"); + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Alternative + pp$8.regexp_alternative = function(state) { + while (state.pos < state.source.length && this.regexp_eatTerm(state)) + { } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Term + pp$8.regexp_eatTerm = function(state) { + if (this.regexp_eatAssertion(state)) { + // Handle `QuantifiableAssertion Quantifier` alternative. + // `state.lastAssertionIsQuantifiable` is true if the last eaten Assertion + // is a QuantifiableAssertion. + if (state.lastAssertionIsQuantifiable && this.regexp_eatQuantifier(state)) { + // Make the same message as V8. + if (state.switchU) { + state.raise("Invalid quantifier"); + } + } + return true + } + + if (state.switchU ? this.regexp_eatAtom(state) : this.regexp_eatExtendedAtom(state)) { + this.regexp_eatQuantifier(state); + return true + } + + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-Assertion + pp$8.regexp_eatAssertion = function(state) { + var start = state.pos; + state.lastAssertionIsQuantifiable = false; + + // ^, $ + if (state.eat(0x5E /* ^ */) || state.eat(0x24 /* $ */)) { + return true + } + + // \b \B + if (state.eat(0x5C /* \ */)) { + if (state.eat(0x42 /* B */) || state.eat(0x62 /* b */)) { + return true + } + state.pos = start; + } + + // Lookahead / Lookbehind + if (state.eat(0x28 /* ( */) && state.eat(0x3F /* ? */)) { + var lookbehind = false; + if (this.options.ecmaVersion >= 9) { + lookbehind = state.eat(0x3C /* < */); + } + if (state.eat(0x3D /* = */) || state.eat(0x21 /* ! */)) { + this.regexp_disjunction(state); + if (!state.eat(0x29 /* ) */)) { + state.raise("Unterminated group"); + } + state.lastAssertionIsQuantifiable = !lookbehind; + return true + } + } + + state.pos = start; + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Quantifier + pp$8.regexp_eatQuantifier = function(state, noError) { + if ( noError === void 0 ) noError = false; + + if (this.regexp_eatQuantifierPrefix(state, noError)) { + state.eat(0x3F /* ? */); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-QuantifierPrefix + pp$8.regexp_eatQuantifierPrefix = function(state, noError) { + return ( + state.eat(0x2A /* * */) || + state.eat(0x2B /* + */) || + state.eat(0x3F /* ? */) || + this.regexp_eatBracedQuantifier(state, noError) + ) + }; + pp$8.regexp_eatBracedQuantifier = function(state, noError) { + var start = state.pos; + if (state.eat(0x7B /* { */)) { + var min = 0, max = -1; + if (this.regexp_eatDecimalDigits(state)) { + min = state.lastIntValue; + if (state.eat(0x2C /* , */) && this.regexp_eatDecimalDigits(state)) { + max = state.lastIntValue; + } + if (state.eat(0x7D /* } */)) { + // SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-term + if (max !== -1 && max < min && !noError) { + state.raise("numbers out of order in {} quantifier"); + } + return true + } + } + if (state.switchU && !noError) { + state.raise("Incomplete quantifier"); + } + state.pos = start; + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Atom + pp$8.regexp_eatAtom = function(state) { + return ( + this.regexp_eatPatternCharacters(state) || + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) + ) + }; + pp$8.regexp_eatReverseSolidusAtomEscape = function(state) { + var start = state.pos; + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatAtomEscape(state)) { + return true + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatUncapturingGroup = function(state) { + var start = state.pos; + if (state.eat(0x28 /* ( */)) { + if (state.eat(0x3F /* ? */) && state.eat(0x3A /* : */)) { + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + return true + } + state.raise("Unterminated group"); + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatCapturingGroup = function(state) { + if (state.eat(0x28 /* ( */)) { + if (this.options.ecmaVersion >= 9) { + this.regexp_groupSpecifier(state); + } else if (state.current() === 0x3F /* ? */) { + state.raise("Invalid group"); + } + this.regexp_disjunction(state); + if (state.eat(0x29 /* ) */)) { + state.numCapturingParens += 1; + return true + } + state.raise("Unterminated group"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedAtom + pp$8.regexp_eatExtendedAtom = function(state) { + return ( + state.eat(0x2E /* . */) || + this.regexp_eatReverseSolidusAtomEscape(state) || + this.regexp_eatCharacterClass(state) || + this.regexp_eatUncapturingGroup(state) || + this.regexp_eatCapturingGroup(state) || + this.regexp_eatInvalidBracedQuantifier(state) || + this.regexp_eatExtendedPatternCharacter(state) + ) + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-InvalidBracedQuantifier + pp$8.regexp_eatInvalidBracedQuantifier = function(state) { + if (this.regexp_eatBracedQuantifier(state, true)) { + state.raise("Nothing to repeat"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-SyntaxCharacter + pp$8.regexp_eatSyntaxCharacter = function(state) { + var ch = state.current(); + if (isSyntaxCharacter(ch)) { + state.lastIntValue = ch; + state.advance(); + return true + } + return false + }; + function isSyntaxCharacter(ch) { + return ( + ch === 0x24 /* $ */ || + ch >= 0x28 /* ( */ && ch <= 0x2B /* + */ || + ch === 0x2E /* . */ || + ch === 0x3F /* ? */ || + ch >= 0x5B /* [ */ && ch <= 0x5E /* ^ */ || + ch >= 0x7B /* { */ && ch <= 0x7D /* } */ + ) + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-PatternCharacter + // But eat eager. + pp$8.regexp_eatPatternCharacters = function(state) { + var start = state.pos; + var ch = 0; + while ((ch = state.current()) !== -1 && !isSyntaxCharacter(ch)) { + state.advance(); + } + return state.pos !== start + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ExtendedPatternCharacter + pp$8.regexp_eatExtendedPatternCharacter = function(state) { + var ch = state.current(); + if ( + ch !== -1 && + ch !== 0x24 /* $ */ && + !(ch >= 0x28 /* ( */ && ch <= 0x2B /* + */) && + ch !== 0x2E /* . */ && + ch !== 0x3F /* ? */ && + ch !== 0x5B /* [ */ && + ch !== 0x5E /* ^ */ && + ch !== 0x7C /* | */ + ) { + state.advance(); + return true + } + return false + }; + + // GroupSpecifier[U] :: + // [empty] + // `?` GroupName[?U] + pp$8.regexp_groupSpecifier = function(state) { + if (state.eat(0x3F /* ? */)) { + if (this.regexp_eatGroupName(state)) { + if (state.groupNames.indexOf(state.lastStringValue) !== -1) { + state.raise("Duplicate capture group name"); + } + state.groupNames.push(state.lastStringValue); + return + } + state.raise("Invalid group"); + } + }; + + // GroupName[U] :: + // `<` RegExpIdentifierName[?U] `>` + // Note: this updates `state.lastStringValue` property with the eaten name. + pp$8.regexp_eatGroupName = function(state) { + state.lastStringValue = ""; + if (state.eat(0x3C /* < */)) { + if (this.regexp_eatRegExpIdentifierName(state) && state.eat(0x3E /* > */)) { + return true + } + state.raise("Invalid capture group name"); + } + return false + }; + + // RegExpIdentifierName[U] :: + // RegExpIdentifierStart[?U] + // RegExpIdentifierName[?U] RegExpIdentifierPart[?U] + // Note: this updates `state.lastStringValue` property with the eaten name. + pp$8.regexp_eatRegExpIdentifierName = function(state) { + state.lastStringValue = ""; + if (this.regexp_eatRegExpIdentifierStart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + while (this.regexp_eatRegExpIdentifierPart(state)) { + state.lastStringValue += codePointToString(state.lastIntValue); + } + return true + } + return false + }; + + // RegExpIdentifierStart[U] :: + // UnicodeIDStart + // `$` + // `_` + // `\` RegExpUnicodeEscapeSequence[?U] + pp$8.regexp_eatRegExpIdentifierStart = function(state) { + var start = state.pos; + var ch = state.current(); + state.advance(); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierStart(ch)) { + state.lastIntValue = ch; + return true + } + + state.pos = start; + return false + }; + function isRegExpIdentifierStart(ch) { + return isIdentifierStart(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ + } + + // RegExpIdentifierPart[U] :: + // UnicodeIDContinue + // `$` + // `_` + // `\` RegExpUnicodeEscapeSequence[?U] + // + // + pp$8.regexp_eatRegExpIdentifierPart = function(state) { + var start = state.pos; + var ch = state.current(); + state.advance(); + + if (ch === 0x5C /* \ */ && this.regexp_eatRegExpUnicodeEscapeSequence(state)) { + ch = state.lastIntValue; + } + if (isRegExpIdentifierPart(ch)) { + state.lastIntValue = ch; + return true + } + + state.pos = start; + return false + }; + function isRegExpIdentifierPart(ch) { + return isIdentifierChar(ch, true) || ch === 0x24 /* $ */ || ch === 0x5F /* _ */ || ch === 0x200C /* */ || ch === 0x200D /* */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-AtomEscape + pp$8.regexp_eatAtomEscape = function(state) { + if ( + this.regexp_eatBackReference(state) || + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) || + (state.switchN && this.regexp_eatKGroupName(state)) + ) { + return true + } + if (state.switchU) { + // Make the same message as V8. + if (state.current() === 0x63 /* c */) { + state.raise("Invalid unicode escape"); + } + state.raise("Invalid escape"); + } + return false + }; + pp$8.regexp_eatBackReference = function(state) { + var start = state.pos; + if (this.regexp_eatDecimalEscape(state)) { + var n = state.lastIntValue; + if (state.switchU) { + // For SyntaxError in https://www.ecma-international.org/ecma-262/8.0/#sec-atomescape + if (n > state.maxBackReference) { + state.maxBackReference = n; + } + return true + } + if (n <= state.numCapturingParens) { + return true + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatKGroupName = function(state) { + if (state.eat(0x6B /* k */)) { + if (this.regexp_eatGroupName(state)) { + state.backReferenceNames.push(state.lastStringValue); + return true + } + state.raise("Invalid named reference"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-CharacterEscape + pp$8.regexp_eatCharacterEscape = function(state) { + return ( + this.regexp_eatControlEscape(state) || + this.regexp_eatCControlLetter(state) || + this.regexp_eatZero(state) || + this.regexp_eatHexEscapeSequence(state) || + this.regexp_eatRegExpUnicodeEscapeSequence(state) || + (!state.switchU && this.regexp_eatLegacyOctalEscapeSequence(state)) || + this.regexp_eatIdentityEscape(state) + ) + }; + pp$8.regexp_eatCControlLetter = function(state) { + var start = state.pos; + if (state.eat(0x63 /* c */)) { + if (this.regexp_eatControlLetter(state)) { + return true + } + state.pos = start; + } + return false + }; + pp$8.regexp_eatZero = function(state) { + if (state.current() === 0x30 /* 0 */ && !isDecimalDigit(state.lookahead())) { + state.lastIntValue = 0; + state.advance(); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlEscape + pp$8.regexp_eatControlEscape = function(state) { + var ch = state.current(); + if (ch === 0x74 /* t */) { + state.lastIntValue = 0x09; /* \t */ + state.advance(); + return true + } + if (ch === 0x6E /* n */) { + state.lastIntValue = 0x0A; /* \n */ + state.advance(); + return true + } + if (ch === 0x76 /* v */) { + state.lastIntValue = 0x0B; /* \v */ + state.advance(); + return true + } + if (ch === 0x66 /* f */) { + state.lastIntValue = 0x0C; /* \f */ + state.advance(); + return true + } + if (ch === 0x72 /* r */) { + state.lastIntValue = 0x0D; /* \r */ + state.advance(); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ControlLetter + pp$8.regexp_eatControlLetter = function(state) { + var ch = state.current(); + if (isControlLetter(ch)) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false + }; + function isControlLetter(ch) { + return ( + (ch >= 0x41 /* A */ && ch <= 0x5A /* Z */) || + (ch >= 0x61 /* a */ && ch <= 0x7A /* z */) + ) + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-RegExpUnicodeEscapeSequence + pp$8.regexp_eatRegExpUnicodeEscapeSequence = function(state) { + var start = state.pos; + + if (state.eat(0x75 /* u */)) { + if (this.regexp_eatFixedHexDigits(state, 4)) { + var lead = state.lastIntValue; + if (state.switchU && lead >= 0xD800 && lead <= 0xDBFF) { + var leadSurrogateEnd = state.pos; + if (state.eat(0x5C /* \ */) && state.eat(0x75 /* u */) && this.regexp_eatFixedHexDigits(state, 4)) { + var trail = state.lastIntValue; + if (trail >= 0xDC00 && trail <= 0xDFFF) { + state.lastIntValue = (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000; + return true + } + } + state.pos = leadSurrogateEnd; + state.lastIntValue = lead; + } + return true + } + if ( + state.switchU && + state.eat(0x7B /* { */) && + this.regexp_eatHexDigits(state) && + state.eat(0x7D /* } */) && + isValidUnicode(state.lastIntValue) + ) { + return true + } + if (state.switchU) { + state.raise("Invalid unicode escape"); + } + state.pos = start; + } + + return false + }; + function isValidUnicode(ch) { + return ch >= 0 && ch <= 0x10FFFF + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-IdentityEscape + pp$8.regexp_eatIdentityEscape = function(state) { + if (state.switchU) { + if (this.regexp_eatSyntaxCharacter(state)) { + return true + } + if (state.eat(0x2F /* / */)) { + state.lastIntValue = 0x2F; /* / */ + return true + } + return false + } + + var ch = state.current(); + if (ch !== 0x63 /* c */ && (!state.switchN || ch !== 0x6B /* k */)) { + state.lastIntValue = ch; + state.advance(); + return true + } + + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalEscape + pp$8.regexp_eatDecimalEscape = function(state) { + state.lastIntValue = 0; + var ch = state.current(); + if (ch >= 0x31 /* 1 */ && ch <= 0x39 /* 9 */) { + do { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } while ((ch = state.current()) >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClassEscape + pp$8.regexp_eatCharacterClassEscape = function(state) { + var ch = state.current(); + + if (isCharacterClassEscape(ch)) { + state.lastIntValue = -1; + state.advance(); + return true + } + + if ( + state.switchU && + this.options.ecmaVersion >= 9 && + (ch === 0x50 /* P */ || ch === 0x70 /* p */) + ) { + state.lastIntValue = -1; + state.advance(); + if ( + state.eat(0x7B /* { */) && + this.regexp_eatUnicodePropertyValueExpression(state) && + state.eat(0x7D /* } */) + ) { + return true + } + state.raise("Invalid property name"); + } + + return false + }; + function isCharacterClassEscape(ch) { + return ( + ch === 0x64 /* d */ || + ch === 0x44 /* D */ || + ch === 0x73 /* s */ || + ch === 0x53 /* S */ || + ch === 0x77 /* w */ || + ch === 0x57 /* W */ + ) + } + + // UnicodePropertyValueExpression :: + // UnicodePropertyName `=` UnicodePropertyValue + // LoneUnicodePropertyNameOrValue + pp$8.regexp_eatUnicodePropertyValueExpression = function(state) { + var start = state.pos; + + // UnicodePropertyName `=` UnicodePropertyValue + if (this.regexp_eatUnicodePropertyName(state) && state.eat(0x3D /* = */)) { + var name = state.lastStringValue; + if (this.regexp_eatUnicodePropertyValue(state)) { + var value = state.lastStringValue; + this.regexp_validateUnicodePropertyNameAndValue(state, name, value); + return true + } + } + state.pos = start; + + // LoneUnicodePropertyNameOrValue + if (this.regexp_eatLoneUnicodePropertyNameOrValue(state)) { + var nameOrValue = state.lastStringValue; + this.regexp_validateUnicodePropertyNameOrValue(state, nameOrValue); + return true + } + return false + }; + pp$8.regexp_validateUnicodePropertyNameAndValue = function(state, name, value) { + if (!has(state.unicodeProperties.nonBinary, name)) + { state.raise("Invalid property name"); } + if (!state.unicodeProperties.nonBinary[name].test(value)) + { state.raise("Invalid property value"); } + }; + pp$8.regexp_validateUnicodePropertyNameOrValue = function(state, nameOrValue) { + if (!state.unicodeProperties.binary.test(nameOrValue)) + { state.raise("Invalid property name"); } + }; + + // UnicodePropertyName :: + // UnicodePropertyNameCharacters + pp$8.regexp_eatUnicodePropertyName = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyNameCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); + } + return state.lastStringValue !== "" + }; + function isUnicodePropertyNameCharacter(ch) { + return isControlLetter(ch) || ch === 0x5F /* _ */ + } + + // UnicodePropertyValue :: + // UnicodePropertyValueCharacters + pp$8.regexp_eatUnicodePropertyValue = function(state) { + var ch = 0; + state.lastStringValue = ""; + while (isUnicodePropertyValueCharacter(ch = state.current())) { + state.lastStringValue += codePointToString(ch); + state.advance(); + } + return state.lastStringValue !== "" + }; + function isUnicodePropertyValueCharacter(ch) { + return isUnicodePropertyNameCharacter(ch) || isDecimalDigit(ch) + } + + // LoneUnicodePropertyNameOrValue :: + // UnicodePropertyValueCharacters + pp$8.regexp_eatLoneUnicodePropertyNameOrValue = function(state) { + return this.regexp_eatUnicodePropertyValue(state) + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-CharacterClass + pp$8.regexp_eatCharacterClass = function(state) { + if (state.eat(0x5B /* [ */)) { + state.eat(0x5E /* ^ */); + this.regexp_classRanges(state); + if (state.eat(0x5D /* ] */)) { + return true + } + // Unreachable since it threw "unterminated regular expression" error before. + state.raise("Unterminated character class"); + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassRanges + // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRanges + // https://www.ecma-international.org/ecma-262/8.0/#prod-NonemptyClassRangesNoDash + pp$8.regexp_classRanges = function(state) { + while (this.regexp_eatClassAtom(state)) { + var left = state.lastIntValue; + if (state.eat(0x2D /* - */) && this.regexp_eatClassAtom(state)) { + var right = state.lastIntValue; + if (state.switchU && (left === -1 || right === -1)) { + state.raise("Invalid character class"); + } + if (left !== -1 && right !== -1 && left > right) { + state.raise("Range out of order in character class"); + } + } + } + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtom + // https://www.ecma-international.org/ecma-262/8.0/#prod-ClassAtomNoDash + pp$8.regexp_eatClassAtom = function(state) { + var start = state.pos; + + if (state.eat(0x5C /* \ */)) { + if (this.regexp_eatClassEscape(state)) { + return true + } + if (state.switchU) { + // Make the same message as V8. + var ch$1 = state.current(); + if (ch$1 === 0x63 /* c */ || isOctalDigit(ch$1)) { + state.raise("Invalid class escape"); + } + state.raise("Invalid escape"); + } + state.pos = start; + } + + var ch = state.current(); + if (ch !== 0x5D /* ] */) { + state.lastIntValue = ch; + state.advance(); + return true + } + + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassEscape + pp$8.regexp_eatClassEscape = function(state) { + var start = state.pos; + + if (state.eat(0x62 /* b */)) { + state.lastIntValue = 0x08; /* */ + return true + } + + if (state.switchU && state.eat(0x2D /* - */)) { + state.lastIntValue = 0x2D; /* - */ + return true + } + + if (!state.switchU && state.eat(0x63 /* c */)) { + if (this.regexp_eatClassControlLetter(state)) { + return true + } + state.pos = start; + } + + return ( + this.regexp_eatCharacterClassEscape(state) || + this.regexp_eatCharacterEscape(state) + ) + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-ClassControlLetter + pp$8.regexp_eatClassControlLetter = function(state) { + var ch = state.current(); + if (isDecimalDigit(ch) || ch === 0x5F /* _ */) { + state.lastIntValue = ch % 0x20; + state.advance(); + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence + pp$8.regexp_eatHexEscapeSequence = function(state) { + var start = state.pos; + if (state.eat(0x78 /* x */)) { + if (this.regexp_eatFixedHexDigits(state, 2)) { + return true + } + if (state.switchU) { + state.raise("Invalid escape"); + } + state.pos = start; + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-DecimalDigits + pp$8.regexp_eatDecimalDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isDecimalDigit(ch = state.current())) { + state.lastIntValue = 10 * state.lastIntValue + (ch - 0x30 /* 0 */); + state.advance(); + } + return state.pos !== start + }; + function isDecimalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigits + pp$8.regexp_eatHexDigits = function(state) { + var start = state.pos; + var ch = 0; + state.lastIntValue = 0; + while (isHexDigit(ch = state.current())) { + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return state.pos !== start + }; + function isHexDigit(ch) { + return ( + (ch >= 0x30 /* 0 */ && ch <= 0x39 /* 9 */) || + (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) || + (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) + ) + } + function hexToInt(ch) { + if (ch >= 0x41 /* A */ && ch <= 0x46 /* F */) { + return 10 + (ch - 0x41 /* A */) + } + if (ch >= 0x61 /* a */ && ch <= 0x66 /* f */) { + return 10 + (ch - 0x61 /* a */) + } + return ch - 0x30 /* 0 */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-annexB-LegacyOctalEscapeSequence + // Allows only 0-377(octal) i.e. 0-255(decimal). + pp$8.regexp_eatLegacyOctalEscapeSequence = function(state) { + if (this.regexp_eatOctalDigit(state)) { + var n1 = state.lastIntValue; + if (this.regexp_eatOctalDigit(state)) { + var n2 = state.lastIntValue; + if (n1 <= 3 && this.regexp_eatOctalDigit(state)) { + state.lastIntValue = n1 * 64 + n2 * 8 + state.lastIntValue; + } else { + state.lastIntValue = n1 * 8 + n2; + } + } else { + state.lastIntValue = n1; + } + return true + } + return false + }; + + // https://www.ecma-international.org/ecma-262/8.0/#prod-OctalDigit + pp$8.regexp_eatOctalDigit = function(state) { + var ch = state.current(); + if (isOctalDigit(ch)) { + state.lastIntValue = ch - 0x30; /* 0 */ + state.advance(); + return true + } + state.lastIntValue = 0; + return false + }; + function isOctalDigit(ch) { + return ch >= 0x30 /* 0 */ && ch <= 0x37 /* 7 */ + } + + // https://www.ecma-international.org/ecma-262/8.0/#prod-Hex4Digits + // https://www.ecma-international.org/ecma-262/8.0/#prod-HexDigit + // And HexDigit HexDigit in https://www.ecma-international.org/ecma-262/8.0/#prod-HexEscapeSequence + pp$8.regexp_eatFixedHexDigits = function(state, length) { + var start = state.pos; + state.lastIntValue = 0; + for (var i = 0; i < length; ++i) { + var ch = state.current(); + if (!isHexDigit(ch)) { + state.pos = start; + return false + } + state.lastIntValue = 16 * state.lastIntValue + hexToInt(ch); + state.advance(); + } + return true + }; + + // Object type used to represent tokens. Note that normally, tokens + // simply exist as properties on the parser object. This is only + // used for the onToken callback and the external tokenizer. + + var Token = function Token(p) { + this.type = p.type; + this.value = p.value; + this.start = p.start; + this.end = p.end; + if (p.options.locations) + { this.loc = new SourceLocation(p, p.startLoc, p.endLoc); } + if (p.options.ranges) + { this.range = [p.start, p.end]; } + }; + + // ## Tokenizer + + var pp$9 = Parser.prototype; + + // Move to the next token + + pp$9.next = function(ignoreEscapeSequenceInKeyword) { + if (!ignoreEscapeSequenceInKeyword && this.type.keyword && this.containsEsc) + { this.raiseRecoverable(this.start, "Escape sequence in keyword " + this.type.keyword); } + if (this.options.onToken) + { this.options.onToken(new Token(this)); } + + this.lastTokEnd = this.end; + this.lastTokStart = this.start; + this.lastTokEndLoc = this.endLoc; + this.lastTokStartLoc = this.startLoc; + this.nextToken(); + }; + + pp$9.getToken = function() { + this.next(); + return new Token(this) + }; + + // If we're in an ES6 environment, make parsers iterable + if (typeof Symbol !== "undefined") + { pp$9[Symbol.iterator] = function() { + var this$1 = this; + + return { + next: function () { + var token = this$1.getToken(); + return { + done: token.type === types.eof, + value: token + } + } + } + }; } + + // Toggle strict mode. Re-reads the next number or string to please + // pedantic tests (`"use strict"; 010;` should fail). + + pp$9.curContext = function() { + return this.context[this.context.length - 1] + }; + + // Read a single token, updating the parser object's token-related + // properties. + + pp$9.nextToken = function() { + var curContext = this.curContext(); + if (!curContext || !curContext.preserveSpace) { this.skipSpace(); } + + this.start = this.pos; + if (this.options.locations) { this.startLoc = this.curPosition(); } + if (this.pos >= this.input.length) { return this.finishToken(types.eof) } + + if (curContext.override) { return curContext.override(this) } + else { this.readToken(this.fullCharCodeAtPos()); } + }; + + pp$9.readToken = function(code) { + // Identifier or keyword. '\uXXXX' sequences are allowed in + // identifiers, so '\' also dispatches to that. + if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */) + { return this.readWord() } + + return this.getTokenFromCode(code) + }; + + pp$9.fullCharCodeAtPos = function() { + var code = this.input.charCodeAt(this.pos); + if (code <= 0xd7ff || code >= 0xe000) { return code } + var next = this.input.charCodeAt(this.pos + 1); + return (code << 10) + next - 0x35fdc00 + }; + + pp$9.skipBlockComment = function() { + var startLoc = this.options.onComment && this.curPosition(); + var start = this.pos, end = this.input.indexOf("*/", this.pos += 2); + if (end === -1) { this.raise(this.pos - 2, "Unterminated comment"); } + this.pos = end + 2; + if (this.options.locations) { + lineBreakG.lastIndex = start; + var match; + while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) { + ++this.curLine; + this.lineStart = match.index + match[0].length; + } + } + if (this.options.onComment) + { this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos, + startLoc, this.curPosition()); } + }; + + pp$9.skipLineComment = function(startSkip) { + var start = this.pos; + var startLoc = this.options.onComment && this.curPosition(); + var ch = this.input.charCodeAt(this.pos += startSkip); + while (this.pos < this.input.length && !isNewLine(ch)) { + ch = this.input.charCodeAt(++this.pos); + } + if (this.options.onComment) + { this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos, + startLoc, this.curPosition()); } + }; + + // Called at the start of the parse and after every token. Skips + // whitespace and comments, and. + + pp$9.skipSpace = function() { + loop: while (this.pos < this.input.length) { + var ch = this.input.charCodeAt(this.pos); + switch (ch) { + case 32: case 160: // ' ' + ++this.pos; + break + case 13: + if (this.input.charCodeAt(this.pos + 1) === 10) { + ++this.pos; + } + case 10: case 8232: case 8233: + ++this.pos; + if (this.options.locations) { + ++this.curLine; + this.lineStart = this.pos; + } + break + case 47: // '/' + switch (this.input.charCodeAt(this.pos + 1)) { + case 42: // '*' + this.skipBlockComment(); + break + case 47: + this.skipLineComment(2); + break + default: + break loop + } + break + default: + if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) { + ++this.pos; + } else { + break loop + } + } + } + }; + + // Called at the end of every token. Sets `end`, `val`, and + // maintains `context` and `exprAllowed`, and skips the space after + // the token, so that the next one's `start` will point at the + // right position. + + pp$9.finishToken = function(type, val) { + this.end = this.pos; + if (this.options.locations) { this.endLoc = this.curPosition(); } + var prevType = this.type; + this.type = type; + this.value = val; + + this.updateContext(prevType); + }; + + // ### Token reading + + // This is the function that is called to fetch the next token. It + // is somewhat obscure, because it works in character codes rather + // than characters, and because operator parsing has been inlined + // into it. + // + // All in the name of speed. + // + pp$9.readToken_dot = function() { + var next = this.input.charCodeAt(this.pos + 1); + if (next >= 48 && next <= 57) { return this.readNumber(true) } + var next2 = this.input.charCodeAt(this.pos + 2); + if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.' + this.pos += 3; + return this.finishToken(types.ellipsis) + } else { + ++this.pos; + return this.finishToken(types.dot) + } + }; + + pp$9.readToken_slash = function() { // '/' + var next = this.input.charCodeAt(this.pos + 1); + if (this.exprAllowed) { ++this.pos; return this.readRegexp() } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.slash, 1) + }; + + pp$9.readToken_mult_modulo_exp = function(code) { // '%*' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + var tokentype = code === 42 ? types.star : types.modulo; + + // exponentiation operator ** and **= + if (this.options.ecmaVersion >= 7 && code === 42 && next === 42) { + ++size; + tokentype = types.starstar; + next = this.input.charCodeAt(this.pos + 2); + } + + if (next === 61) { return this.finishOp(types.assign, size + 1) } + return this.finishOp(tokentype, size) + }; + + pp$9.readToken_pipe_amp = function(code) { // '|&' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { return this.finishOp(code === 124 ? types.logicalOR : types.logicalAND, 2) } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(code === 124 ? types.bitwiseOR : types.bitwiseAND, 1) + }; + + pp$9.readToken_caret = function() { // '^' + var next = this.input.charCodeAt(this.pos + 1); + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.bitwiseXOR, 1) + }; + + pp$9.readToken_plus_min = function(code) { // '+-' + var next = this.input.charCodeAt(this.pos + 1); + if (next === code) { + if (next === 45 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 62 && + (this.lastTokEnd === 0 || lineBreak.test(this.input.slice(this.lastTokEnd, this.pos)))) { + // A `-->` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken() + } + return this.finishOp(types.incDec, 2) + } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.plusMin, 1) + }; + + pp$9.readToken_lt_gt = function(code) { // '<>' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) } + return this.finishOp(types.bitShift, size) + } + if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && + this.input.charCodeAt(this.pos + 3) === 45) { + // `` line comment\n this.skipLineComment(3)\n this.skipSpace()\n return this.nextToken()\n }\n return this.finishOp(tt.incDec, 2)\n }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.plusMin, 1)\n}\n\npp.readToken_lt_gt = function(code) { // '<>'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tt.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `` line comment + this.skipLineComment(3); + this.skipSpace(); + return this.nextToken() + } + return this.finishOp(types.incDec, 2) + } + if (next === 61) { return this.finishOp(types.assign, 2) } + return this.finishOp(types.plusMin, 1) +}; + +pp$9.readToken_lt_gt = function(code) { // '<>' + var next = this.input.charCodeAt(this.pos + 1); + var size = 1; + if (next === code) { + size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(this.pos + size) === 61) { return this.finishOp(types.assign, size + 1) } + return this.finishOp(types.bitShift, size) + } + if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 && + this.input.charCodeAt(this.pos + 3) === 45) { + // `` line comment\n this.skipLineComment(3)\n this.skipSpace()\n return this.nextToken()\n }\n return this.finishOp(tt.incDec, 2)\n }\n if (next === 61) return this.finishOp(tt.assign, 2)\n return this.finishOp(tt.plusMin, 1)\n}\n\npp.readToken_lt_gt = function(code) { // '<>'\n let next = this.input.charCodeAt(this.pos + 1)\n let size = 1\n if (next === code) {\n size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2\n if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)\n return this.finishOp(tt.bitShift, size)\n }\n if (next === 33 && code === 60 && !this.inModule && this.input.charCodeAt(this.pos + 2) === 45 &&\n this.input.charCodeAt(this.pos + 3) === 45) {\n // `DLIS}jKZqcdZht=j2Xsp*;M1$DZ>qPa#>Z1Y< z3z!(zD~9oaH|i($d}yXGGp75_*L^FxnWI5=*BVmziFRTH8h5NAS%23|5_ZQL-vAxW z&ot86x<=@HUn8BZg6@57{IYCEi?p_`A+7IgGXzXpk7_5(t1dKO1>z>5>q~9DfT{Cq z&D_7|!)5q0+8 zGv<9B38U$)*Z)(o`PSmg zHVCuLGQZK?H&6#xH>2{Xz_s`rhCg1udEA5#jm~d9U|x3Bp;q91aU*TF=r8k|1C4}l z2o^**j#g_*iqWz>1G@g|UoYS?z#sU-n>QHwVPnj0CiQeW^bVPuWAAM1;gxin>p8<8v|;`DspVM z@z!l`BLc6j+Ktx3hHt2DHkiYaxVvG*uGPf0&u7lq+hh#c{h$9a3U?d*;pMl@X3Lpx zx3;#vB41{Aqc&lj5dhBykqFRaspjri z&8v*AM>iTxPi!c@tf=^^qJ;~57xpkVH<{y&FWQ-jJ+qCqz8Q;+Z<@zn1t<}pv}Wea z+0$lTJ*#%k{YL5uV@3GNORm215@VY0Tz#8)=t(o(y!rxTY>ScS8>|}-G-2>=G> zX=cD2SLgkB>p!l&4kg{47ARlu+S*SyhE@} z(FGP{fbp|6Cyd`~3FGNC>nn}>o6Svoj1PQfw^z))#@)^43F8yrTjs27#@;n8#w*Rf ziMsJTdd&&1P8bG{!l2r-#@v6u(dh}yto_DvbCbEocoAZZJ-+b(!uSm1vju{D!*rvg znen|*1PKd#=bs6O-&{$F@OTOh*qbY9z@AK5zo33*D~ST%ZsT>NNv9LHpFd+x-NIJi z!0v~>G&VM4694GiZ>($1z-Jjg!%vFI{GBgxyY$|_XUuA2`H8pjHU{kOab@6=`!Be< zuW@s`6L0;KC~h@6o9hp}di|egKHq38SZ^*cpFVIvu$K8>F@iJJ8Nb#LpXn2fEo&0S zyP9u={?TYfrop3!(> zgD4Nr-)i&-8@IvY;bq49Ml-|sAvK&JXuok?2Xn?$UuI9E^L}H6Z;+lp&sd&Oyy&9h z;^JEu3^zV*2pbP|*liyDx3N5Nozb}rHD?3*iWj{0m)Bl9XfA!tDBW*Fj~cIQ8GBwe z?=S}$pEUchh5JlT7`Ltt&o?&s(0so2x7oLq8_%wR2IE|0%B-*6p6kubi;C|&1+ z`DVXj<9tl8O{;-D4E_gKhmF7JW{dFvfW&U&1K{o>nb-P|(ebeH5&WH9_2jv9}w4!`0X*rO8j>LBQ^3>aO)n9MWG0T)g*Qp;ZT4en8X%LL<(tIhqb#`U@x zHv0IobYq2i6kPEJ<3EP)JbXoEI0nP#595D>{!7{9H%=s4Flo#g6Xut{j<-41I0~a$ z(qQsm5=V`P)7~hB5d|I{?e|@xS^rNxG}Az^&w*}YRpeteIwI1 z%s1+GKW*j_c#BbOn+ggu@2$*v11sYGa8I_onTXU#Hh;LUH*LWC+4gP70*r2HomT3|DkbT zr~R|$$199|8ad|kn=RtQSDcQ|E`GBcKF%ofmlHNh|Lwtlo&4s0g8h5xe{+^Z5hWexO~6ymS(<%)#8yl>>_CCI>Xr3g(lqrjg~#1@!T3(-a7e4_3#Z% z-(Y0z$NIY)vu=|)+F0?{iUn}{!w)}x=9vbw$+&yBjvXXb60m?q)!$ zILmw+!51=4_#Y6TzDv6KD}2M#-xL(*b~oRCQT1bYPP#<@sPvarKR$fEq1}BG()SoE zNb4E?6aH-wKm=#_MSy(%pAxm-H(E>yp%7EZEcRt~_hqDi;2YkZ`h6Kae1p=l*1S?D zwpOp}Smi(HWYR>Wl-%aa=)TTJC$4aAeJ$?QB$iLcjhciOX{c$4$D$*(c*Bxql{L}Y zWpo~(OVZUP@ueDFHm|JGB6JN0&Db7edGXktuTNRDq6rx2UbtQ=ktvr^9 zG)2oJrF3;ZQh{sX=!xV0bTlGFhA$O2>DUadygnAIkzI6kK7xzFWtHU(^)an_X|%GQ zPh(AS(BO7%sa8}OZzzGfcm*yd)8E!^Dy^(96%Qz=o8C}Z)RUEuHp7!v?>;9NR(y4Q98S7k=b~1 zrJx?SYsmTK@lr%15~qPc?3)@Z<2a~SRU(a$1st2m^tlo71ONm_$(kBmtyl_8O_8Os z2_0O zSxIGrB2!w?0H<(2tB&rgBNyCLue+)A3A7ea$4wGR!E-417dt>!Y!Hjoem+fl@6J!L_GSOeryNnz~2H z8PpV!HzYO0uB4KvY1$&U#R#L1U|_j^L?V{yBB3z@5|gRW6vUdS4kZxsY8cUgL@2Mp z9dL-P*YKPZCSP4#3r~@wTc*k=1XnG^l_wf!U)!T&6J=8LyUw>6eNHL*9?484<4#X`2w!J3Lzy5vA7} z8r15zM!t)Qsgl8-;q;ds!jr|yAvvp2FDfx5WU*?3@3fRQ;aRLY+=P#-MFvxge5HHz z2tcT|if*rp`Z`jqn;3RkerdJE4c7>Z)o?2xvrX3daERB#HZuj!yda#@3#QMWJTH!j`VhWU-htMpi6T2M7Du2Q^HV%EBxN>9DR4be8$ps|y;V0Dku%7g zk;t_x>_u2qS40uj614O|d8LIzyz;jRj(UtELeFt%2qVpMd2<^Ph}SmMYTCa+@Iwm*_^B z7Bfv&Oc+*KE`6-0!K=UyiJnW)n(*LJ0u>hHh#D@gQKL3Rs>L2mmTRh4v=+%4ChCtS zk`T{R;DG~8Y;;uK#i`N?2ShCtWV9?pgnR@Li1z}V4nw@Kz1(pDBIj)s^UI4y{MqR1|}-?SHas*s|hh|TAm!r766N%N*o zF39J+<^qHLBsM0XhEZa_6bVZ$7#7~_}*`+_1pRZbGmi zSxrd0UJG;7oRTck5D6z%M56HojWx;#t5;(OsXPQ?+KKs4gO!~2YchX%0@J1o14=~! zyDRL0#NkGsb5L1IQ6Modu*Sw|z%aqE+oA_@<*_0h5~k-@(#}fd5N+SoK}l?v?5zV; zplVt zEKpp#loozy#$Q6EjZ$3JePk4hMW(YcQXF~W8poYB=@F4WT!1(Lk^-iw<+oDTh*VaJjck?LIL}FRn zb8G)VY1v2x7ez1S)2D07F{#e7uJ!g3?_Q?v?D`l^be_Q|*b%FDjk zi;>Awrq7y8k*8u|@5ATGRF~ma=;`#Rw-)97DLjj#@~Z{VvYc{PtC71rnNIr1=I7xR9X5Y8nxv`f6nQ)R2~_#g;&AudsI&JW^0SwqbNYr$+)| zDJn9an%7FIO6sd4YJJqglWNpTL<5Wgq}7o=n();Cl=`~ml>Tg_z0zBmp0Cam)5PYh zUYk0nFc8Yl4vfhdjR&?yj>sH4V(f_Qz_98>LrrXgN=YPsso;FkNav7-aS%EiCA zBk??QB02%*9|#y$R#S^6PV0$b;?MvWfP`zMOY!7%Z9?oii2_GvaYlf<)z}i#IAAs* zj99~HHMX9k*QzUG*cv1>xx|7_ZXzP$DORmP6jPKXwP&u6m0>GQ>4@;+3>ub)L#w7y zw5^DsS8T{<%ZC_cmf$QW3X7Vj^Cn}G;y@>sSg}X8Mi^$w%`#Sdp-mngaB`u83!Rnl zG%EgUyRze$g34aiP)%1T#KV&ju?r}xtj93&s*6oo497d{e3}q9$3+vI-f+a5Q`@!{ z(zb?NqnwtTS$jjz!%iE$OpX2@DT@dOr2*$qN;kTUBGw|Bs$#O!p#b$DikXheDCZ3a zs79`GP>8g~rWL6t4#X63M|5E|?MttuDNj>nMQsfdn=ek)moKq4Ggt&sjn#Ip%>^I9 zD5i#7lOuEuQSHdE@Y0p3%n>j_LYWpc(t<`=&}a)9V?kpr=pqZsvY>3N#R;k@;T*9I zRRO>eFL5bd4ztHtY}&*%ypfc?{9G>5RTLNe`46N;4dn%P$(VK&?M6ta3x$r{DZ@n= zN0a?xgDkHsr!1c=mn@GgH?nEcU^&7fWlc9W&>pV1*3>}PZ0R}(t&43+v)FMcYvhF= zYZApZy5y2Cc5d>(ATNz#LMQ5J&p;Ou#PLoZ-o&P|ny!P0bZMf!r^q<94-Mzmic$_f z>}qNC&KJ`Tb3q-OrqK6m#IArAL^&p9;!8JF2&<85v;o88!!#%&F=+~k9Ea87A{9Mr zElxfvtN4nH7HLe-RS{0HaQ^a|QmtBLrnpc|Cn_rURsgVoRMuOkVQd=VX9ISD%V@)= z4w!h%DoD?>Xv@{7PaDz7@O28OYx#o4@!vMp^*f8Ckimlrm7?K~&bD&vJ)4lhBW(yB z!Uf104%mz=>(4gI&BZbw93B*1x>m^Gl_MCH&tP1kq^aC$vI*Vd(^c0w7D=I-0iun8ASxm7;CFc2SbLWX7ue>v6S>l$^^t$izLn7|N!JQaW-!OLtJZ+$G6tD}!JD-K9gcMElVs^yrR$7L z8D9)GgAZD$dho0N@22%0f2OLi z?O>3V=-R@QSJvfxSy+xu z(x@}-P(>^3i(8q-=#i=$_A$uPT^#Pnu>vOVs>T0HA}&_Csx6&`3^pm0Ofhb4un8Hw zsSTmqrW)1D0(32x8E>>?<+{1*M#&hiR-c$43~o>;@6_LyV9dbFsj$Es{b8|6`#F808J z(H5$Z!I*_gswOP^Ys;tt25qh)cNprFz}4#0ubsGlgPRC#?!VTi+v!Ee{kPh5Z+X#i z|5lr>-&G!Zx&L9CuF{K+`*+xMKl7sF{@pg+4_huCymz38}qq)oTOi;nxp+jQ@H(Q*G2n{L>(9)56tu1&Yxi;nvj z*mRq`=(s;>(;f1n2C9)w2Syecb=8O}D^{j{8$C3JNKx2Typ>aerrS zO}@#)KJFi2(=~h1asP!j-LqbFLDj!nebW9)fxpR;uIbvMcNJKYZJ`*9Tc}(H4_K&0 z4F1kS|YYD?Ygla-0w{x41hM^5j>K-I%>KAy?+9i|x>_61 z%GjNjNd+ep@T?;7@~oHgew397`8?(i+9J z&RP=feM-_(wnRNyqMHg5*PqOd<4V%E>eDMl-883?*H?vOiuwd?|C8x<)6&J3WN+M5 zr;1P4@p81DR-Y*U4DPg01q}YEQ1U>^tve@38Q^v2$M*jt@!zx&@0RtV>U~9hBKsL+ zMvrS*%=M}zyMvy5eUhnIphGq@o`!4$dhPnf!tSI*+@^xmZDLRmAXp66U&5$`3^rS+ zLI%IHPzxC}f|5}V2e(Ektj7hlWFrcajkuhRSZ8T0VDJYEbvc8qR<6F>vW>W0xa;_j zjrhV!n>+?tGp+?Q$eML6kHK#(BZ?SgwPZwIE4OSTl8*Ik1iPZm~VO7H05}&C4K1Lh}B1JBry3 zR)aN*K~{sSu?%WfFcvZB3`Vg>Fc!Iu*rF!J4)tkhW?kz5B{)NU3Z$F!A;s~iHMMdX zWMLRM7B$SWb)H*LP<4eZl0pW}NkKu4%w+H!g`$`iww_GZQcG3=gJ)T?7Bc9Rm3&o< z?P39#3k>$MWL?gnQ&!$-*fo!3oo&fl#Gq5wywi{sW?6kLSrG=Evcjh!tC(dmqoHl4 zzf95gRjcCLXvH~~!S0p~N&6Na!;Th7E`vQRR1t%009J*z%JFNZO6`~G6A3yk$u~C< z)(QUg*^|<;6VS;Z>+o2K0?OzamhpuQK5U`#8T?qGWae^fPEJsG2k{I(rBITPTl;K6 z2LIiLkXt|4gbX%J32OB6o;1mB6ePP*oq~y#5s#9v33Cl`qTr9{zlpGlkqU0cW5GDJ|bCPqwyJ9fa-|fkK>*Sz_!OQ9s zg&?YC1*l_~(|F`3yd9p>i4gmxan_u)SR=7z|sed-V%ZcH&%Ewd$PKV}H(PBAF;~5waqU0EO5GA{tJnng%0)td4h@#;h znq!jsba zQAK{hVoN$>)+jsJE>sw|J*?rEmdS+-zGR{D8GKox(I->^`H48GZh*KNl> z)yvc#rvBelcSNb{H!UbE!9`UD8>Ta=h{2T>s*u5l6-q{eTi?#Gcp3arp}cpY$#xVZ z+i`ia9R*%?6tpJWak-Zr$tTnwT=Af_l?}|wn*eDLoINMH+LzRtU2mfHB*qhI76q`Q7wo|0H#YK=VBgkY#4lO>Ykqx_*$vmQ>z7*v!8r zu@$;4<1Wp%t940_%nr)YdW{ISyG0_S(?R9 zvSbx7_^5@-XOIPw_<~k$+2WI8kSsor#mAI*pSDb6_y&ceE&3X6Y?-Z&ja!WB5gdLz16RVCfu5PGk&MDjYO2xXwZqG5ETJli@#FWVxRx zu=`wF!9WEUIdGRLIHEp1CSbCgnU?+=0bLp{h&)q46`G6VuC@opU9FO z$ZTb2*b#~v!?shIt?bklmQzWarz&OS4VDARH#yui9?y0plSIVuJN{#mIx8%N48|?x z_~}8HL6|K^k``o^#a4TaRx(LaDM%(sn$9<=^m*KoWe%SN=%(=qPclhTc#=ty7MNs` zB$tv&l3e=EH6uJ?mrRnRD48Tl(P))*c19+rmYc>ScF813v15`fE6)oV9H&sU(lE>h zd8QW2Vj_?5B$FhCCz&KEJax*lYi*+$e8NKIGq^*cysVA)<7A12f%`H~LoobC^817OTPdnKdYd4F1kS&kXtPZ3ql6(w@`%)Zg0cOt!FI4d0r}3suD6jTWkaL5>4vEQ8lOtSxBe)-9G>MGW3%p$Zw~07~n) zwbvpnV$d0q!BWhiZC4S4Y#*o?v`sBy zuy7cgnzZq}Oqs}mpwwVEvk$WsZ|Wz(JJlyH+1$&Z6|G`jfxXlxqI#^E8^dh6F$!E} zqZqu#X5G@v4GsXbGROfSd;hL@ez3(c*jbI67+-GmwFa|zr~;?kCMn_=A&<8-32R5~WIkH`*u$TNO%p#*KGuItGtB>A2B-h^3-jfg5cUgZC(u z@PZo;+jI;*=cMC?KGagdU{{3_CUawoO~+uNla3q9Z8`?8wduArbK`cKj=@Kqblmux zO~>HBZMq}P+!%ho zz_w3;6V<1%j~mz9bPTpQ>A3N(O~>GmHri)6ji)6jVDXx?jLVXuKVHBtNUS(x__)Wx$cKO>i)6jwY-7?uR|<{;}rdx*zta`^TD->wegy?jLVX zuKQt+x_`Vmx$cKO>i#j0x*zta`^TD->wegy?jQH4`(cl|f4n)l?uR|<{xOfbANHvG z$C{Jte%Pb#ANQ#HVO|0z+I9MPGdH-{BQ+Roanf<)U90Yg8RSwg>L53`*h3zJT+kVqZd_y4=`e#_>V-URaIuFx2D#J=`?&FuEssGi^@5HYT!iL3pZK$9qyiSf#2HR}+EcdcyG%$p2-;c3Kg01ZSsLaCRmgGihh;5uBaP z9GpAs6UNTw(+tke=F<$$&SsC`>}>W3&d%olWpH+R1!tF6aCV(;aCTY2ab(V}(+$q9 z(+$opui)&mf-}S3-a@2mIMQj?|2ATKy&|^PD`I<3H)4CeBDVK*BewT+BevHoVtcKK zO|c94-sYLA;fUDYlSXWdx==y0h2gE%^_5%(x$oC-sgm{tzR>yfo0=8(taqDvt@r4s-1z9PjlXS3w{g4-Qv5(!nq<3q;3-k3&JY z)2VwzcdD|-Q6xHsIf`_Xmn$I$k?0uaAQGLsI1-)vb(%}ctq zyk`2oQ_l45_GH+1x-)&B*G%7M&2-09+V{UoHhA)aS8!hN3eF3s8=M!sg7d;DgTuu^ z7<8)i;#3lZoJ*WH0?CQ2%Oar)hTWI+zrkLu%{Vt*@-Y9uLPPPshxp@`fSW?iIi7Uh&)R5x>l&Y9>Uw z%b7qX*R#ylxdWvAZw!>5f{?EjJJN7_^H*xZrrDQcw|hi7)4t?uU-8`D{IY5+veR&T zb7^uKZcmEzdn&>o*pcpZjx=_l`t%6?dun{XP@mnkh9mmzDe_mLE*jKuO!p5MxR`st zR#a))m73MbNS{*dEkbj>{-f@;@Ipq#o8fe&2Dfw=?5$9S7GKlK4PN{}$7>(2b3pMj z$4eVf?iCFvcLo6E9#)`|Yl}U8Tw6fqt}H-tUEvY}lq(X}(XT`e6Ro`rUuWSmTN(bT zg&Wz*@H-Z6R4c=JKRNvLg(QYAv~Xiu8J=e0#eA?Jnh7YKzLUcS`&QjBca6tuggbC*kG2z@XCfvz_%n3p?Z13d*I8Y;6 zBMN>-ed4w-yO46OO~!C{g~QZhu&;&6V=&i36|tXApBNr#-Ek@Max+WShUw}PrWGo1 ziH%~Ag96JKh}DsPUPV zmn?jjctR-V#-9fNu#@l${K@!#T(AEXrYppOg8ZM_GN~{3Or$>mMH-nEkQ|7$#BG3AS`0Aoy8SlkjDixU`sO(3I{_V zxxq^y|Fxv6L1vI7mGRGmw<>)@;&Cm(Nc z!fMGqEoDs14=RDyPR<&gU}75yw+B?sx;`4lPh_**7Se_o`1rTdlWpQH?)6V!D@eL2ZW# zm%I}jY3*z{d_?EI*Gf3|@*kNW`?NBWhcH!Z^og#1 zt@{-He)Z``3f5`Ke}RUxfHxwve|E=)aPHs`j%N&Cfg+qcJcM({hj8uy5zZYU!ns34 zICqTL$AMPXW_$RM?cqbVN7iP0_>k@4L$-$x*&aS*d-#x@z$TJah;NBwo6R@G@q7I!U>c1bFp0Ne8;q;|@3=#oXNP+})ym zWq0;;hp`cgA95-L8T=3gdu2mxCx%$K$_Z2`M`dFhgR4T3qM!`6fl8EALNFw$1d?F# zclYh7QZ`v3p_`|ro}boWm8CN%lpgeKpc(Byj)ntX4}-k+d(UmC5G zbk}(Y0k8ZgJ>aAqRX!<3kn|2qy@XV$7G$GZz~B)?&Qc5BiCMim!RmMi$J@r5b1Q9> zJPFxgmZfkSWg{PDgF#MXmTU|_{=p{a%OKlpvR#*EhGrHR@BtwqrZ`m9|k4Nz(|DmJ!5NhYcf0`ivm1O*~abkQ|{ABr645a9^WR zD#d?6p6e0KQ~bqUGBFBEC+G?wv#haYXw;nNV_i}1UzRr3@uX&gYnbI5 zVAT&wzCQ$vUf%e&p=pQF-1Lv5-j1YpBurv937A_c)pQt&lx~W0X;INEJU#Al&(pV* ziyi1NZ;Ym6xAQGe%hH5~Ojo;v=Ulg=n0q^{Kymt;+gENkqd|TmXl0)*O$88_OpIgmT2m? zVCqw#2`N4nV~PDdY%^Nl|M#O++R@a_y%u@-H~P?I3;N*^8q{Q>{*l2UM9$Jb#{0eA zdMVb&_13==Tljkaqu6+wG-Z@fvb@9mSWNNAG^xa7k_5>Vo67Z9dwj9(&o_#v6crDH zT#IKZo}WVg6;Nt6eETmE6zjxZMbv8%OKd7{9+tt*2ceyFi%Vns(Ehl*G$zLz8k2qL!;s_l`+qS) zmuXUU`%MnCIk|5ltJG(VN0pMn#}GM7rHmKF+WK=bx38`LKEL2#J5HNg8*_VH*Xla| zCWC#^rdHSAiRp^JFUECsC+O;~KNr&#pAwe3sA!~Fy1x*b2$J=RS)KU|HzUvu5}%GU%I*zbamIi8`E`E6;GN)MI$vOR6J&R0*R8-tC7K{ zyB~`w38{aMrP>^iF2DOFLKN=*s1 zlUe2Z;0<75N9b-*cEOS-!5n7s8sk{!g|BkW(NwI|5!Yp%< z0=4L3R9hHafXG>D%fXcG9-jt%2J}Tx>Er5$EdQOLcZ1#w`eo1uK_3G>3@Y`#1pEl- z>!5Ekf0s>f4(Lgs9iV4`UH~ffFIaBnmw|o|Gz~fingf;cp8$Rr=odim1APee5zudg zJ_hhMTeCg#qHl0e5~RVSJ`xa4EiD{AB&hu z+jy5epQQL+{LJS{PwMBh@uraeU7+`Zeg%{dzmxJ;u1_0i5R}iB;^VGNWYfQEHl$5x zC+Ll!d@xHBtGVSPWxfEuS3%zZP46_=gZLKU*pJ`TLIF0RR5&Hl0JDl3#vRk@^17!QTO#^)erSOi}8u@386fr|kF} zg8W@K$uId1@3iv#l|0FR4dQo#$`8{?e%^1(KmU>YWhMVS?30`i%KKz_cQNm=d>Qdl zzJ$Ftyc3Ui8uFGj$v=2r+CT?D>!4o)mHY>>+u~u+-cBpu2P*k_14kR;d1J^|F%Fgd zyi7k0e%`)!HI~&SKd++Z5YMZ|7h`f-@;|vOZJ-k_uvD(?@wy%_;u+?qf4qXni())$ z&1-IQx$UNlZ8|rD%9S^sNM<{lk}|g!!cJZ=WBt4=Ci$7qWgpA&a+;LqMV%1-<0bd+ zVeVY=^CbDJh|eRRcY;cOo&f#{;(79XALb|}KTnH(4e>me*@mel$^r=bsT($VLB>W^borup?MeC< zE43#HU!pqqCgEqRbRvF^G~I;T)wvG*JO_Th17GUEJ019MIq+pM{5V36S8u*6BdF$3 zD~kJh3E^$(G__x}W$gitKO^uI@QzfP?i$xdx;;*vttR15ZHK;w=ut-nj? z`J~~G*PlNjJSkrfK@ayiAEvOr9;ZKT&s=P-J>H;7Jpx<-p9}nlM72FUcasMGJW;J@ z-`%4IVg4f&()=&O{sYMH8{pq_Un~FH;NR1graPs64*oWxTF+>=#V9mHb1f!Z+nE;mN&!Cz`=11V5AaU#cLKi>_%!Tizx5NY?c9%aw}bzB@K1{T z-VA(1;FG}10xv`V%PZ4H^CzHx593Hz*FSyj2i^hxA6Qu354^l8ZIGuZtgo*CPh-wy zf1AZ0CS3cCH+Ao~uzD2u7Wjw#@B`pm1^z7XuirarG%&v|XYIFVFvqeS>Ha(Tc`}tM zx4HfY_=7^v2_&cWbYKqTlf0DOzUb^4~B2>dGGy#l`)c$dJ3fnOr< zmw|T*{AS>b1wILU&)!j!pW`|VQM(D(`8{}L+5q=ZSYMiI`$vVIKL&p~oi=gVKeqsX9Qa)5;qrPCdOFuxJ=e~$0?&iLL!|pp;OC<^yHGA~0Y9|a>bVf(?_;ZGTff^~Np}~>|3?6^(=-4DZ-z0ve&WMc@4jVo3 z@xYJ3FUK1%89Y92`GwIFA1BPA3b26cTN>jZxJ@lGxVEYF>U7{M9r%C)&pGgqIPiNN z_@5Kr*=nK*Jw^EGRPH>^;pf-F6EuH(T=X-C{x==?-PAr7B&2)117EE1w$s#h`1w-E zE+xE!?CIJ&+M;c~NjE-Ty~v?|jRPNW;5i5W5eI&U1OJQzf6#$H>cF3N;IBCFe{0Q<+yh#;YsDS!hvsg;KL5QKzL_M3EIGI4*t6w_ydHW-nK+tBI?5-2mkjpKjoO; zU#Qxc>sbf?5eNRZ1D|(dvfmaNoSyGPX_H=HlT{Zw_*Xmd0SA7A1J60|+a35{QNPzg z{lGpvzhI_XZ1PLvPmJ?FfQUOCdhT=J2Oaps4*V$x{!<73uMYeq>d}!|dqpX$Sw`JMf=7`t!FP z{HLB|+oSaJ62g=0SwVPGKeNe!|E>dHYRWx6A5wGh|Dgl_k^?_PxPCs4qMxDc+bdHE zt6^ zDG`l$(^an;R&-;~vH|ZC%`JkeL;*{s-D+Q&aE99fG z+Ju)6rh>dG?Jjy`W{?SUrJ~xMD`rc(4O=zz3uTqfRm*vQMp;eXv`(7*r!x7#uQUl3 zOJQz&#^glRs{TZvDuJJ+aG8wBQ4*maj@8ChrdFwtAIX}0iLze`sYEOjmC&t0r8J(e zRVUS0K!rnIHknG5{YseXQu)%vcrG6(;v6rL{BAWt8TZ3d!85MWnKM=!OciSRFh>P! zLm|072&v$SogARc-QH`L+q+^dpSO3laJ<*vMcPw6y(?F#4EbRq@TfG(K_#3?WlF_r zs6(k9Rq&_1O7MH^DkP|?wQ{*sp<3oKGI;HPH@t4==Dy(}wcDrSZ1`VS$x^LIyuq~1 zn#p5>LFYIM87^HlGC{TKaemnV8E%M?l{NBIDp#%esTI@?ieau;3vB7>%G6*j`?(6W z9#amgSmHZV3#++_s-nsk6|U!P+PQ9^&+8l9NG;JeOTKSu99iXUykT(NK>r5fYKo!K ztAqq?9=z7;+X8J{Httm3=B?Y-uiNTv+q7w@ZunsQyU;x zPzCmNqiKz$CRxmsXIeq8e|W%a^i0D88+5-k?2l1xu7+9iq2Sm4ZG{TEvbjntl&kt- zC{psN;^fGMLDmm_(p||1!obXAOcCWjq~1qo-W&IG`9?A;74~h?}O2Cm3d|7^cLPHd6}^>Ic-w z&`dF-&D7cHH~qioO}QJG&XC9>m3`cBDwUjhe6`x{d1KV~*;3b)f;t6PQy$qsio;+i zryu**+b11W<8hxJ6gx|$5DRGhe_P;TuEmM_etp<#2GEXdeAczV{PY5ce zR%Y+&DQ_pnCmZs9wQ2?@nQ5P%Ht{yEYq9kF`0h$B6ef5c^(fry>aK=|KrJ1OE+w1A zsBkHPBqKfDvj-u$pw)VU{cM(ETH%omrQ#Gl4x>_3=6~ZK&kr!NoNk)sdHpzq{BJWOsFdGG_^j}YTvOKR_cg(Z#c^%nw zN&nqUaql+S&+FT_ooa>dgDl(6=`h_z@xN@6=XLPKr&+;K$V>YHt6S+t`;_(ZdigZu zw}6q;m-+uV95i=fug?-`mgn{S&LuXU?FD;eKZn04N*JtN9$@4ykxkoAg3dw5wIep#_(Q%aW zM@UxJU6$v46N@4LGW^H&o9*X%a6qKb`zzkMog(OBej93p8UF=EG}|BT!`NdbI=Ny% z0n0IcOUU!Qb?06yz;;4BX3sAvLhIuEr}vH;)-K3z;f~UvN_B!VX(!{g{ap-zviwSc zYhHaZJq7X>ZT!z7{d5B|cPz*7IS%;;A@A>JPD`cy#SZy7XIRcJbH@oaQht>~{;PUp z0bL)*a{%H|zB#-O^3s1FxX8*6oW-1$TD0N6t&nf!Qfjx}kU-ZLKh+w;@{HPj2pnqA zh2OWFUGHK4=_JB+ry;G>{jXd3KqM%F#vg6Xg1FzJHwMtPACsXM(tVl!xZZQM)ctEx Q`Y-&Qm48BXz%u>+1%L4+cmMzZ literal 0 HcmV?d00001 diff --git a/tic-tac-toe-app/node_modules/clipboardy/fallbacks/windows/.DS_Store b/tic-tac-toe-app/node_modules/clipboardy/fallbacks/windows/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 Bg3|y1 literal 0 HcmV?d00001 diff --git a/tic-tac-toe-app/node_modules/clipboardy/fallbacks/windows/clipboard_x86_64.exe b/tic-tac-toe-app/node_modules/clipboardy/fallbacks/windows/clipboard_x86_64.exe new file mode 100755 index 0000000000000000000000000000000000000000..e69bcc2f1dc0be5c8a3fdfdf545bf002cef0c7db GIT binary patch literal 331438 zcmdSC3wV=77C)S{q_jYJ16lF{#Q$G{u28nEum_lb zUz2UCC8H1XZ+PI^`T+8(W}zJY60iiJ-8}qyg-`MtJeO@A)D_-iD{dY>_L51&QOiGd$Y+&>-QhgV!viKemaSx4E60xw(J6?g zB9~=Gj?0XE)0$P8kq!>y2GDMC>vu)GSKdemk(MI3#KgmaM)F0}`)Eos)n>kHSdCXFHjw8_8J zEYYvgN9p#B^Gm5%w1yz6(N^h$YUc0jYY$ZLlchCWiPUft8{A*J=MqGsjU9-TY-`x0 z-SyIp{90DO5gSG;s&mTd`|S-MUe8bVbz?_}?!$y29X zs?Yyw8LMtyosW+mn}lMCyA+WnrxXt!a1~Outr-_ByGUV9_B@x1b%n^=MtL zKYG&GOS5gs0eV@B7C8xUs|DoI+xeDmh<06j_AI@jIk;1gp4}+RM03I&b}e!Q0HZl* zZ{#Y3S{*N(pDm@t%+5n%!)`6&#ux2)ZG-GRU<&lBC~01UR9nfW&aL7zc6}`WraoD= z&VuJILCd2BHq-+-5Vb&pysHjCL_S1)VpSHgIF=BZ;V2nTXvd=_>Zpy_XOwJ87HC6l zk!^ut;T`tCDN-!-aI;-o=?v|6-Tj5v*ys(n+e7z)&I2I** z2I?*U2(3Kw6WxgG;dOTLEnvK5AI^K-7v7zFVQcy6paCp4PQL_*Meu-~Jh^*48C7r& zlA`%u)(GwxPJh(lmXU&!2s~&wx-h>Ff`%g(e<3H4H9!_E*n1vg+k$a>kWcc&B@>SOFqNvvUatQlV0Kss1+MDB{l&k$az^4GC`V>6vQ9Tz_2>kr z7?=wj;T9K#@QWOZ);=-(db>^Q3ze4Qmuf$NRQp*D6-d(V2i6q9enr|K@f14lFr?L{ z3y?GyNjuUcjS=WP+mxwbcdc%`u1Ck^a-dJuW22x-`!%q$^k{!QR_;c3l)DS{R`8dy z-Wf-(ecG1D-TlMH^r~lLl{A1R*^-YY>}V4=^wbdVe`mTgIPguPFJ!ADii} z_O0c>g*ZXy>BiSf^rDYL^G>h@PLbS_#f*SkM-i0&L2GyyNeK>ibH1yLR@i*@?Q6cr z)ao~O_#mA3FJ;B$?mF3v?9^&@s!I>gb-V1r^N}@7kGEl{h32{oIo5nyMT?#n_m}Mp z4((bm$7rFL3Kc>Ml9w!zf$#m*PVk3e-^EhQW! zLZzD4Fo`i>)rB2cllgiS%|p`yBXs+>dRbBnUjzs;lWfu=n`P-@obfiDfWPACS?v3WdpRPcwN7(JWIoBQ7S8XLBoC6=ak23` zN<$0z8^M6Km^aSJCRS?$a>U1gpzK>Ee$Nt|?16zx(7yy|=c??{?Q1x+4nB zX6Tr&>T)qrx6KEIhVGP5es_%t=6BDOaDI2Slo6n^wM5(@e6j#q)415Z5Me^ktT7h5 zIigXZ8o~Jp>PE!f$Zx|3L09sk6bf=)*PJ$OfWk$siD3f{7JaNO_!~>Kj%Pz`fur>3 z#9ZC}s&2fGDOEfPV?#Fp2-Zo=V4YM7^=bLB1^OtN7>gM|56^P~i!U0qi5I>li{xNz z7dIoa1T!Ot$1ktAat3Ec?+ovi>%ff#f58m(_+7I1sF6sCR_OR07HQf5swqwjViJ}E z7>Tj`@B;w9Re?k6ym$=@CQnNiQ3w59#fGr=P|PDLfeaQKvVNzsvXZiEky$UcB9q#? zUS^>TEs&_0c#TYieEXb*Oo~t+d}B zbR=^2AxqBBiC<#9lQ|ziJ!9nE4&8N(9xV||f!bmdmEDZQ7^EzbL8;HX!OuJdeqa~) z4Emnk4@|X@9wgrwBCm&M!tvwmF!M^LcJtI@?k@HKboL?@`8#=YfL*!S~G5xGV z=JY*tIS`>Q%sIVe93j!8JxOzw1uB1H7)1>&mA#3Pv) zzI%`q-n*TmJTvphc9~gf3mga4Uo1{ZXHxZ-V*Y#!Amlc}YG%j0!4}0ZQ#(2KLCUnN zq;Sf4zgUk>DHSbJNcM>fWKNg)-sHD<0f@VH?Dee5J4MZKg+AkTUv!+4Gp5%UJsvh| zE|hS#9vk7w#HWYPlTEv`L$G{`8OI@lGJ{}&h~WFa@ZAuo<9*SQVr&|UZ7hUc;GL1! z{f%m-imuDBPrArQPS?Va#^=p~E?O6m4<%1&`F#udU7NWevjpJhe??8K8<^vDW0Jen zOI-xL>%t(P@EApewg6O%M~^vflAusnOm)e51*w0?M`HmoP3miEwmQJck{+tP5F@Qh zNhyP(;30__+EF}Er+QCn1ebX5M@|`gMEFW3V|?5FQEx8HXx(@vaqxCK25Tn&t??t0 zUw3cl{YY720xyp#c*JW`Ej@gx%c(Q(Qkk!gv^Na|7_x&!N9uanJ% zuC*&oD^+00rKDJrm+rrA_6HYBu&$nW7b8IX3Y@Wtd8ma;UN9>z{>jKSP>$qS8}so` z$0Q=;H{x#R7d6)Dv856~oH7VSFfZ51DUnmbx7w_L8%~ReEQJAmn!=@P6E{LRLMLvZ zPSmxriPdV7gmtz=p`q2#8N6IK9&#@y6`+t)My?E- zt>N6w%)}Ri6$F>lgs9QJX@+$gapxjIk1m!C5wCt_wC(BCh*HxjGy zv|COCsA)UmfJ0G}2av30#L-sOI50NiUO@;5r%u5u1ibfU7V^I2!e5$jb^h3k5-K?e z_V|Uy^fNlX9iz<~afYw6#TVW%NH@NRVdjUmz4a)vbvoJlffga#6UNNQZoh&vFCIzD4mI-YI>8aATgIt0WpNvzeaaq(FK^wMIzgQLhOM&-8~#1t2+ zhuCe#y3T?}B<9u#WU~Y)+V#%f+ONk0TzrDUnM=PvSjbM7$Y35grlW9Tzk?(?9=KVy zP>Z|_<&26JA?|I$V#+2a!$(Of{w#AGUla0h-FNo(hnX8t=5a>%>0{BB*!i1eVJtm* z==&Z@4V0xEPyL4~dnonc7}n)@=6@^ogevuy|E*LVOBw%lgS@H|a`$jN?4dz@RjG&m zw^DC=|0mL(Ab8Ai-Tzie9ZMZLECb#yLsCwNDSu1G_$>P}V|;$~1#n4wiQ|)sgR_J! zFi;FkgSCqd0MiQ9^ojKfHAt8Big@T`JKT*M{FpbWib^(#_dmBw5q|s#n{83KdrV`w z`vPqhR8S2Bd6aZFie5OS(UTnnL!C?)x$f<=e7fF~6 zlxa`K_=k4$8@u#3_Umu#QcImzeqpou!k-_kw0~Z*`-KD8o77{F9XJ+}$ENKC9V+T+4$#OLp@f!z7~Y*5p|0&Ues1V6OdX5XP;k~z?q@ite*fV6<0! zJO5w^&71>+9~9{4p)p#+)wCC2ZC`#OC}(=23Mumsa&AZC>rlX^h3De0cSZBFL;XhQ z8uH@>@XeNZk(snlCB0~gtwLKhLeg7q>;auW+ms7dQK&WS00^4&dc3UxESc}-LIVhMmwQL_X{C%OA31S8Unu13x5cZ+2sv8od7(MU; z*(J{V4BEXl5$`K7Igk;e>a^SRLpzSyvl+RBQ~NV7kxX1Isw+E$6O`$ zEmeehdRQg?=+3qUE&{F}5Wwse9D&*7Z=63f5NtjN2&4xJ8fP~)Id$$lz+8*Ncl;6y z#`6C@3EL=JVVKAAA45=lK`{Ccc5y&UMZ z`;?`N^g2M^+8A;FgUJ96)S!o+K?Lx12>um8Kl-K}-xojvXn5Y;hA%9GA1aOSXj8e+ z)se2zFy5s{r&jx;vugciyMlf6vRTu#dwz{mCTyi8oq-m zYTw4%Ph~oLw{eoYUR$|THVJ0B`}W2uS=y?lvRyUCQK)0?YQUl+%Ku&OM|JfOHox(D z;7r<+A>>%-71Yyeg@C?jMqXkI{$LPet%kiGzcH&8&b?}+agiP!Kh0ORL0kATMys#r zZ9RKxm9K2KUmLsI7d~JQ9w{BtuOd@hndNQlo$QbGi{HQ!K#0es_k4V{-!3o`YW1>> zx;8$p8{?}jYFG#7uO@se;n{BZE%uud_ajCPLv}PSm6`0{*>upZX4=JQ{3Lf>jWGaa zsm0|8@*9!2hzLy&=-NuP3K|6`vMLqm7ikV$sz=pgAylRX$BoL;7W@J=5~LX=#hU?e zV*vNWxEyBv)LJR(zJt3GgGG-%BnOMH=);oT$szvepA|d7YGQebJhouCNTKxkjX$e3 zBihA&XZyCxbTud|jdowrc5T5ya1s-}Fa8aN#!@x0V`x$AL@)+vlS(QuYf;4gCW>Ro z{~jN0RmA-Uz8v*%+=B(X12>j8&UAYKM*t|1u>@i!^@z6|3agyLp@@O5OG83%(~xzE z?@-37uAEYB)dj)y8{a10V}-GT*1M=u7fY^rn@&Wccxx($hvEtw973X8kdd=$)({&% zQpo}5@2JTQ*I{JK}qI_-*hYHV=*oY_JDycwtkEJ(45Md4#g>* z>7KMR{dd2jxob5ZPIYC1p>3SbIO4p|XT2o*5nhFMl7^No$5*VtAryem21ljE1}TKa z#!=8P5yz_Z)@IE3(y!Z_iYA!PlFL}~ZeE8I3(H{Le(g?9|~ggV=1AEB4MADE}DJX7y{CHw{RlDEcp4T@y7Zv2IkdAmv_GUZ+zzuxk4--4FWaj{Zb3v_Ir)I`X6V!A&`-#| zMrL1ez+d()Y-5>y)6e10d&fV|NlZYL2Ic$lww%0n(A2JIItNW5O4?HyO{@93- z;>q{T1qn2SxCRj^p=}14?Ar`(^J1oUq!^lN(e|?n>segI@#x%4Mf|Q=NK57Y6o0 zrzX!Xfl)3Q-2ph0(Ou!dx_-(0ZcK#4!@O=S2On{e<+J2D)_EMo&+;@wy^5n=lcg2L z&tPk-b>71lySr0AZ?3yOc&)`|9c)g3&GdqGW%EYezC~Mb9R;uKN3i{%&p1$N->s5- z;e+;IvG~P%sZJ2$zAt|^hzkf%zEN}#df?IA)i~Yz)2PF$cy9%-7zYvt! zBwH?BX%r8X>DKmus0EO?=qONx{GHkv~#q!a$DZ6_|BZr4g@#ly&8OLIoJK9IKFc^I); z1QVvs+c;_@2fqoCpw@MdF4;C8oeWz4@CuY^_WVw+XJ6ughI4k8Ui7s}u}V>0A`+$t#V`3g2z+_^zDLPA#;#4JM@rWD~#}+7wy~{bZ91(PT+{ zSHIBC-l5Iygh7*7WOQhA2vM(DWDJWyZf$Zk+E{7hD)mT+83i9A@T((0Dom{qK=jxM zh>zlcTqOGKd*sG~&*%{I;b|uzyI(ARTh6U>(2+Y)P{V9|3wyB*k?34^K&NF}@_`t2 zq_ju~lhNmdvih9P@rKXAhVn*b$3a9W8vuU}ABqS?gW%8Ni}~+)d}ypuu1IY&zcBPD za%&2zy63=b}aGAVe+WOYMp45ReN5t}^3XWhN#eNw!NIKY(T~H)_nqd*V9U z#NfqtwjJNCk_Y*x-+@(c@eH*yc1Z4Dre)dI0F_M)!G;*N-MKDf4LTH&9coC~GRe!a ze!epWyQf~l#`3q~1crF?3dU$FFK3mQ)1Jf^vTsYC;5YVQohh8Mel8j^LBK~CPSm0v ztx#3Oa{zKl=n)@&hO?$Xo8YqX-b+*+JH!TA8_4-;szv(M7CG0$<0cnj;u8rkO5x8+ z8)TN{(d!cJsTykUYV@rHad4Ox~7YeUo$XZquY zfY7r*)tX-*L#)1ytq@nA3_Lh%^tC15rh%@6o5q1@kEX;ZcwI__?t2esXQn}%{hSG^ zfWllVbX@=_0d;N55YRW@=s`f0sk@QXod?Y2jhJ1~Tw2Oldw>?X@Q~{cgJUC>zkUi2 z?1EowPGTv?PIeQH=J;_mr*JwODA^_3Bzcw5ARL@f2KKcn1AD`}XwMWq7Li8nB0cQ{ zkc=c{XybpFDGtX(%(|)RgC{V|sUsg;NKGBhTQTMvXZFoy>H+$@0h%TQtudWM)5r!p3(j4Mgz zqcRr;+M#yI4Uj})yi|fG@05(j)F}22QA|A7#3=dCDMsjQiPafTnaw&P1qNg}W+X0t zhUv)G#>HM4O7xK&GkG$+m#X6(6RIUy&+|*I$-ar5lH}G(;|o^Rh8Tz1YxH8l9(&v> zU}bXE=K^Z+l!Uj8!3;QoZMuA z)3ok7uPK*>7%!{eBOW#(9HUX(Yhm}wQ-b=J!0V-jAPw;*9!3}v@^Y ztH$A69IMU)nKscrNuk#wf07m5oeLwnKm}bep$0J6T2V~&pv@!B$e^u1GouwARObS9 z6*!JOuL8dJ|KF$`lcM$@_y>Pg1)NrFZ?wV%BHD5442D_5GGyv8oOEs-mkVjaz~>ov z@Cl4K{t!m=vrdeEcByO*PG^jzFRY>syv){HxhW2G`6od-MH{=jwPLwUi#p!xi|!70 zWNVSnp!ZrTu*{1NS&u}24A)L#!A+^og1h1L$7(q#UF-D6&d>c8IC;cGqrMFP1PqU= z5YE$Ho(-FMdl)CrxGU4Zt5%}*8^9SAZ7mh;B!EI~`5Q7o;nxDxc0JsN!yOfn$?ffa z?b)->B$>v#;M;OPZc#;hq#4_79KdxFEsoh;u^lI^3q|#1NPO@(5{D5Xj{wl*?WafU zbCdnl`D(DG7%qs|MTNRikFAtW?Y`zkmlj91EtuQ)#T@EjL9RSlUEp%i?xOt zw#%q&Zmih2sA6Q}xEyU&#fTbXT(4+Fv5^zHvxG~|@Vb)3df6loeV7%^$$=T`{VTS! zKbqOsIPAy&i%Xh$zh{mI2S3Z&wT3n}Jo-zV(>lMQ4+m~%5N8|*1EW0HvrCM}B{+;( zC!p>ci(W{*_Rc!AraazM2RHL!V?c$b;G1J|M7*tql zzZ@5$z%m=#mtUVJdroWE0_!AsJf=$n<%VujXjo| zZI#;r-ItiDVtUCo5y!$2YHM$9HZ^7VB*db@)73??w_WX z^@v3i0a2h({QVLW#oO0O6bJEHa|ThATSVNckUvf2Bballm6PByt{*HoN$dxV9h_)c zE9IEaV0x}a2^ueFt0*Xz(UTEP-ouRJWQH`FASxGZL6>9lkwA7;X1P=&uz#TK68$LJ zDE2ubK>vF)?;REWjTvnv=);iY#6QiHe<^@JAew+FFY!M@s51$*Sf;?HD!4Bv+a_1f zV(iJtB|NLURTfuNIz=fA>I7UiGV7NLGi)P7VQND0cTw4}a;Ck`ygj1W!XjPa(1A## z2c?lJ4%d{NWN%mp8?>1|Ui-1aXDIOGy5vMDf zrl%k-F+(l#Tn0;fQh6h-JhW$pShfqja2k3tc@)70r@%BBGEd+`Bh3OJ8~)>2Y`B%) zCKkF?<)6s(#Aa$Ru5T)f#c@ehWW6f#uhjWldA@zzx-`#pd7A#aSJc7h)cNJ~{irFJ zPPPSf^G=j>z$^bQx*CdT)IhJCP<`m(kyK4Evd*O^1ok0)6GhyAhILrVTOn1+5n>an z;;A?o1ZY)U%txG7Ku;HUsuyk1 z%UZSYeZ*~#YYTp7(x{j1gCB7pTY?SZ?zg+xl5{KTPEiD%h1mzTT19fED3CORS~~Ey z#?b&|HRB49Dh25!!O#=BlNNS{W>(s08}j6YLq<7 z^W7{7Zpqdbivr}UWzSC~1WM1phd=*()puMoceB57Ub;}sYUVy%&>?1^1=!-ptwqa! zA1ce5V_zrlYs9DEW~yutLCb{mc7A19lpTL zVsIIS7=e4N5nn>klTa;2Tm~J)4ZY~ay>M#YO|L(|_lXzYXEi*c5_6pKF~cSyZia9) z$noAhjvkzr&miRNE`-3w>q>~HJ0Y|Q6d_Md<7rTOKa1scy8!NgeX=$^%*1aI!ATk( zqNhTNdLXZRJFAL~b+8TRuU`U8yqgGKdM=cc&{cHN6(U)zg+ikg$klG4@Q~$D2Lk#~ zibT1(Z&0Tj?~rdUvPYZRY+eg8F9>kCra661&3Q4dpH1TBHXM=S@C1trejbk=-~f{j z8u8Io@CE{0ESbfDj54NFf(d)YFjhg5a1%|@*Jf{JHqz-bZmow9e^`)*dMycOrvUe<$|%<#aYnO=sAWf)E)S zDUcm#D3*^|x84Y;esCNa5Rr!_ z6t7v1c^7110Wi-d^?a(vsN=SSK!UD1AB^wIdf|fb0HL?(NT3q6&~9`UF^P570wtE^ ziYBlc=giI~hFE?MKDfNUN&^5}JIHFSMz_BG)}uTtvl2@&VRW0qqmEugz{TD|H_BkQ zJC;A0Sgz?cAI~*(wt=z_B}bOJn@I(lx)I<0k|K**#>BZ#V}W<0TQ7&F*3ZspBMdr6 z;OklRwB%%}Ig29hi_k1MuNNSjo^T(cbY6!LFOUA&O~nWU1znDS*5HT7&C__J^f|K# zT*Q~M7{Tc!zPQ|&>7E2G&vj43kt9x#HZ<5`sW=bLXpV?ts+`m&ed!A}#9w9_H)*PP zv7#7f)^I4^HfKb#AU$8$Kd_SFRexG_)5|QJ#F+5lI=(D38)w|!_ZRKL0!`e04ck8* z>H)6uVxRF5Ze;k3kFn;s4jXOIvAVI#i(S#dFUVOXU*sZS#7mkn-4$c!(^vKhye;1X zHr#Os4$#BUL6YD2Y0hse%YMA|WE`2ID{e356Rj_bqWgA>^#J!8>#0XeZNV#&H<1A$ zHqY3F6KG=QV_+jXgGuOvFh1ymZTOIx^YLXLY{i#-5W$yc02}4^MR}JM_k|^L>_Cl1 zWhrm=UdR?!|G{H`miW*?a#Mh~*gt`5*-6PzS^xggpUTOu{SR5(6d$buAcU`Ym})Ol>V9dc{Nx$8Oq33TGGX zqokg2)g;PPKN2oha4u1pibR|Qn_TPbS()t%clHV#i@)|D%n8R8FbaKT>w`rlKU9Jd z=O!;iqE96T`grG$a@PcJyfHWgdV~4LBv18*M!AaveSnGydC9@DBzS!;w3_5KFXZfA z1tEy4G0&~gHZ-{$;?Dzyx+n4j7~X>J0MS~-M(D4GeOVaQ0rwfy>BYz>hp)9A`Nq@k z?+6y1gNsc2I^Ti4xaNr`W`6wCzNug9Wm~b%-Vz+3NAVvo)h(4*X>baMp!(_?E~-9w z;E}u=aC{Ih!Kj84iOys{sJ0u%WZBGz1Qx5?H{jtQR10YCC1_n`5=QH9t|zO3W&j14gZgazw(=HVBXZO-r=Lk zzK!JE?F_Ah&I!z_(dwEfFuDN?;LgeDrMuw2nMUWB^R^4b@Bfw32iue9!)?m@u)$pH zktR;!qAxmO5EdDF%-0#rgNNv0xqf7B6LQ5gl=er*nh!kmL5#!(*(ayNogu2!E(={o z@YA9NnsYq7`sOHY9gj{zTA_;548)TZ<8xIaA{JyOM4e<3{_+6}C@5SHF5>nDx5&3~{U!+ce=D-*;Pk?en3->6@*O5-%Mxe2dMY4P| zrIf_LyjRo=mllR1M-zWVRo1KwXXOKkrk$03#Pq1c@g3yDv^?YIrDesmJiq47PKM?A zCk#;tUZ&-_?pv11UyM)ZR>F3GT>Gt;VjgKELMQ;KO~7_)5&S17Dryk^1K2I_R1!=o z4S-Q!s4UZjUM58gMs%UNGAXt|#A(=ZKyj(F5OKERRCX?F<3Fr+hMvXMj!CUG6)ut| zIy!z{ugoaQ0R zb>pByY;tf4_IXxwujjQQNMtSSVSKKVADB`LkYSlpA%vwVC8=G6s|YY}U@lQDlsEB<&75bYDB`+Wyf0E(EOTip8(LBHBITRH!W#dPjzm=O!^dnpIs>r8?pT6G$dk3BQ^A=TzAT(g5Z`f<_E9QW=st zHA|j{qvL2im?R*EZTP>7e~12J?DXZ|a6B{$R)9EIn|~$3;!G)>adG0)QrQKZ=t9g9 zdd!mxmE4iMOf(^fYH^Us`8q;^e(Y$CgDM$JjPRbejsq`2Q8d4IMjby5K^?E7lrI^fEYFP6|N#==mp+fG-mB={Y9THzO8bA`dqyZ<;c**Y(--a$n5 zzs0ITX*l|$P?1!K&|Brww|JJUx?DLq3z5#Fp%16@%=DM5Ry2~ES-N5z(DoO_fpiuT7K}( zcoPq&fRKM<#ULw3xXBE&di*~R2+akm^!(90s}@I0M3tDDb)K5`up8-he`&du3ahOY z2dKv*u5QL+Ii?^JSsB>FEN&oGRb;nV7g2uf<|ziSzVD$ zfjM*xU;Z~r24rQg7|$RK@qC|p2heAX%T4x1ghaIDAnyY#5C;RwvPZg{R|?h2b}n#4EDBo5g%@pTB-D1FrRp&FP48{DJLQLu-BZ1+QgmDadM*^ z4mbvm;_om3l7kt|LKK@mN1G$sB`&@dO~kNF3|6urM|7#U!>^LJsbs!a7|RdBlE6&& zgaeL2Al|REdc! zq;W|{d{c4-+;fQT6Tic9n)^$r&c*7wzE_i+6m1IVYzJhe8)7e}$J^k1siqC8SS zxCX(ADdp|plUMyX$Zr=L&y+(9axD2vAukkj)8%RcPzG8P=z)C=ai%->4xGsT>ZA)?Y1(*>pk4}5x)YxPyn&~ z`>_WlUX*(%bij)NifnNC#{#7p;$k;K)D}3W$42!32MnJp*%5CcBXKk+W~5a@CC4)S zf>k1UDx*&$nq0!rqYCJFITpG%0BYvZzXNwRb1^!C5*YVg`TiN$adZ!lx|IyK+17R2 z|Jaz%RVy!;B7i~QGv1a@efEZpjJ>d_7|nR`F?ywoGhiJoeoR;ImEePDJ)^j`7m{C0 zjPkqGy~K>A22ke3M|COE#^rw`(i%T}NiwBG}cr6Sbo~ zJEYb!IShi?zpO&`0K)tSuz_+b79GHTV+W+NRHG&Hk(OpYTW8ZEsLh5BV8`OJbB?SO z(t~f}JJf^e@LtLQ`HeKMd53G4xV{#d;0p_~-4Y#+!NC-fh3^6O^2V9&>wuxO3x+8-|%Y0ZYvzwNJv< zrzOYnC?^5Fd76G-_%}clm;{VVh|zS$l*78VMA<}h715BNK*Nrm&v8v>3_Bhg2yXNV z#1PBx9FTf$;yVPzZBhfo#pvY_HW0#waO_eO&_Bk;(mzJbsT$5m@X#8<23r zQ2k)Do$9FTdo?$*3Y?{%B)`&#R}#R{xK%EM_K8(13A9h#_As4c<|}H`K!kLW>sFxD z3Sin&S%a)Vt`+D&C&^O63T(Fm8?8W-6@by9fR|Z;Mk`Qn1!@r>kN9H{#_AQt0kxmQi500i+p-p+UZF_jCUDql3$ zeVx`orJ%VYn5iw`3LG2jz1)^NwTrVl zdEDXi_%?~U8Yk`dI@xI(Nq_jjwOV-Ei5M=SPMiq7*+uUJc_GCy=D3VQ0X;z}<op~*BicY0cR0>zobn&5s?P4{~%R%M)Hz$^0JKN<>}-nGm=-NlbbS=FO5&Lw%ItZmTmi6d)*g6Yb z8^zP_n2-+s0~3>4^x#N6-x9wLbQHtXz>=9t*D_eKja>zUNxtQ?Pn5dK}X=Vne)BoJEpkNxC>^^ zk66KaJEs=18r6WsQY)C%q|~?8@D6I?yE1KPvM;>ei7Vp%^ZqRLlhzOz1eWQ5sN{w6 zb>s>fS4*3Sx=0Tn?4{ka7a?zGUUsv#cn=d{Iv4VoKx<%#m(q)r{M|_5o1(qIF}6=? zavVSI+~hYp0tHyz;-G-GR{J$pRH!5Fi}lic2DVo7|A~^EV)8OPR zJ9FHKG9^ikGgc=o%LU1=?9;8s@>WWF(t zm+WxtjK0!38c5YJ+cM=1mXAt=@l&DB;3X#DOsXv9i_U`pLsCEwmRa~JDc%AnJ+JMk zw8UV*!#j9gw$?z?k=CC}jY(zZ=+UK8SU999MQ|lUdyeIPeet=<{BLGC$W|4;H2+ud z3vxYXe7PAfHsjUutIS2sxzrt!@rT??B-}&t)QDE3&faK6YSV-G+EG0Zcg+MGPm{ff zxTz%(YeFp3%%OQ$&jAV$QbsPwxZ$m(l_{wk;01Rh@*Ijbz^hA!vKj=;dJ9cD3Qf8O zTvn zXIwg8aw0d`Pg^8C@iI*H9RT{)2biN5*Uco-cUcR#ZEb2jzI7N?`l?teQ!0;A3Z@$@!l7t zAH>4Pxtxtqc!`arlY=3q#K(WCgavqEY}m<*aw=nU-MB^93jXmi&Pa2;LtD8qS!cWw z+Bvjj6HbomMl#SJv(Ct@F|c$-+R>$Wlx9@h?13;+0!QMNr)<4*otJY-KIV$NH_Cyc_=T|>N7`fFt>KP7vxm;#7XrDn z$BVQ3bE2>sqv#J5gD5THITCGMSz#LmAwP%ChgYhGH}+F&J62 zqau45Fm_ZH?a}UOMtDqU)JPQl7lNS+PV-|c)A%+xkgqXmkrpJv8Exk)Pwc*;_6aff zNT0D6QgxCGQdRUyrF}2n;X<2YRa;j}Io;o9_VKZ*hgVBE-G9vN0kNvJtEHUoAFM6> z`w{5Vcz9o)w(v0oVg2}i{Pdq$K0GNET8ac8pNNVg0A8X2!N)CW_7`=)2(u>p!14aF z_Q2rEvJUN@b3x^Wv0fLzg34JtFE4Sb8TZ@eqEVUx;m)k!;7Z)WIaNNCd;XPf_)Cw+ zvzdt#VPfNaXZGxq#)RgM%xb<1;`Mo=A5uei*}#}@NK_~0(ytOfV&ag7;63>eqP0{l ziBFN1o`xvuJh=exfn)Sg*ffVq`|~Kv2i+QegOaE?M_Z5ug1wle9BZ|E??h^159;h0 z=>~2=AByx!AoW3ldjVlDErPR)w$Nx`E9E%ca#(DS_Ka-+u;E$p2A)Gv6y8b{CWY@2 z=e38$S=ckqm-=;~5S}bWA+Hc7J~}M6oSw1G0yfD+e~QG;foT#)lEkl>kTMW5duA2( z?t5V3F+j>@cYq|-?05#wog{R{VR4S^8D|STtQj3cS(F{~FlFcG!(uzOXKeMrCYwDu zMdFAI5=WE7UmO}&eAeTeH-aK~})L$X6<0LrJ7WHzE8Xi2Gy^O^~ zC)8#x3TP{}&^~Z-yv9Y&s8RT3t;TE7KjD4DwT3Tq!G@>srwiIaSO{(7TwV5WEkXzD zC^sIK!gpe<*QkL-K;xCJ9kte`LJ$5lnl);e?Zol1M_DaBsc$T*Ec01N8KI086 zXP~j;Dchu=5?CT9RjA%7ze22sLOZ3nI2Kuj z&c!cd$(qKq&@jY$DD;dfbh%aNNvn{b&3T|pAvrL5HP4+3(uS)7>NbS?k}7wwrt4r= z)|&>f9{Tt9WK((~t4B3bU(P}x(Sa_8WtDhBP1%mwH<-MSO~MM5VftWVARNyjPVcGK zxkvX{>n=w|t)>b*jT2V5^=AlfVj=QzN)cSbGO~#KO88w6pn?L>B7dL-VEK8@Mk?P< zJMNFt&l9-=na{DHBQOYmG1>3JHCdAC0I44%jC(=2oN6KaNFqaZ=;i#cj#9|BV9SKp z)9C)>q4f`fLx@X?hPL4T41_TvBz3D$R8m)sqo>{`6X7E!!n;j`W0CosovJkxp`L+o zlttl<7Q%mKBAj9(Jl#ZiA2JW6@W*e{O->>#DLlbKn2iICDGK|V2tR}mh)w>YM+%?F zK==R=l85hLOItR%cP7GSq_RVzCc<4kQaCvSq0gc)Y9XAKi7;p)Jl8~c9x@N*VXq8? z9eYg*Jr=^hWggO;E%C+(n0P@;xa1aq$B53JsEkeZmogdR{nbVQFRVQ@(sgLXkLZNbr) zXQV>G+|*Z2)ax;q(JnZU_!J_`Zo{tVN3u@DCW z@rzw}Y&Ox7r1I{;37K+ubaP-{gtCdtdn^TyMRHwtuSaFsMm*Go$3k%qhQ26!Wzj}| z_G0OU_v18?bZf!SLbq1pdil&~S85WoVL18VmdO?Oo{4Dy{xa!fvpiWThgo{Z2R-p! zDb~`l`~&!iX}C;?QlnCbZLnj5n`QgNL@c({cFlCmpz;C%o>grY3vo|9?T?A9{gN(_ z&P9{l*M;_H`=a<=nW*254WH-bon$V-J&+ZijneVuCVdaPfF+!A_ zVU1)dW=Psce>AgbJu{2eGztOyA$Q13YfOQwpQ4i*$Hb;q*u`WD+XD~RPxt{It63;0 z>FmH)U2e>1lWc#?@wst^5%3>{RxxI&8UbJ!^Wc^hMW-X*Vl=%yWGl8W za3wLR7p=oY$6p!##U~(%2fvPCAm+HHpXz*Ku^38HWgn$#b(HhCQ#S@$1d-ToN9j;I zQ^69|hAyWZB9EE)yRe1L0!LMsa@(O937t#jb$>>;A}Suo;vmufewwRDgbM5eoP0xV zgx~_!4>C96h73vSe~mA99#|K53PSi=>}8`Rz4ss>m4|M8lKAeUbX|l{TPX;s*MZd4 zSzOut3fE5L>CXqxz>deu4j%7ZGn43X)@zH*{3n)~o5k;-S+u^DMc?`DKPW|wLpZQ9 z_ydHkePl5giirmm!c+xO8Bd{{E2HuqHf&Vy6N_b0_(@d~f9d6RnPkNUp=xB3H9zpj z8JSvTm9;3@BhEJgDFC?V&%^eo%A}HQiILE&%1$?PoH7UPk>xjIBTF2}ljmE}G0Ta; zzQ?LlR``j`wQyKuY%)`!Qc=E{s9#enWBZi6|VbAC>b#RZV z**&K2&LuyT*_LkGyFI4HdrW=GOzp~@`+7{B*JJASJ*HkNQ?XMnE=x!eMrdLxRFMju zmkO1nLZ_rcLsFq5QlY$5s1x&)x*PF*DwIrxcBDe@rb4f!LhDkY)v3@wQlZCFp$Ai; z-=sndQ=z+3p*gA0^{LR6snBE@N={FNAa03;_(RT&R;l9{J}U)Vq*AZtdtPyIY$|<# zO7|v5Cr?feOqM0jVg65Fk_Soace$0u5@(+R+pd}??@bMt9F=sTP%i)uW3lzB*sBaT zsqk8Plf?Yl*Y8dSf}!e3F^u{9iV$_0093Cc>|z`Ch&yHB)O#X_xgW9n*3=o{_SEnB zZbxF~?F-zGXh2ez`w{B?60eZqMV#n4xZHt@%Q)26g4(U0t)Af&u{8ee!h?t&oq@9@ z4o4HFmoN^sUWLC|+?Br-Ti^x1$2%x`EdA5k?`(!PhE37aPiw!jDog&f_OZP612@`x zVhQkzV>4@fJ*a9Fj?C01m0BvkLBKpAyYuCf;OVw{r z--6U7sVMHuwBm4pI16(HZN{HIS7V?RZzq6Bdju4?%-AV2{@eR8{*0>A_hUvPHM56s zX(q8VKqD`GKZfrNfQ~t`x~}(ea1`^@|8yzmU7)hANTn-{Bei>_H+8M__k8sdl^*Tq*I#g#0`L7wUdP34bI^21 zUk_JbDn%cO(A!jK4(?Y73_iiQ$3Q*DdK!WEiY&ai%K?zMZX8q(U+fq8vXJb2zWK$& z5J1N(Ki7N@O^+*85MN$TjQq>G>$3k-^1ynp4Ue-eBLOkTrh}}X*W!4f)+rMiLy`yC zzheTzx*j7^gsPBQIY<@a9dJ9&{K%7@7(*~n{y*GLoXS%}Ah%jf{!U40TwEl{P3a50 z6+FPbkQDu0eoy@G2T*YreUQ4(^D6vrTRz1=yd2c&(X;qQNaS&#YH_SZGLjs*&zpmP zEC;_9fiDB(6x@FRZOj<_@3kC$@NakyH;f|EYK}UZ5kdFMUrh{{Iz1E3h9TItrdJvjI<$NdN zlo6W!6@)VIn@rwZGR?Rh*JB*-{}bJmzAtBZbLC^S>yRAW1IaSl^@Z6jj=yn#4B+1) zU24S9iYX7Uo>)QT=dSHpzv1vqSpgJ*Yk}(@#APz%nr>VT6M@AL+yd*ukXuDF@@q1L`EUDy%L@0p!P@pfO?&7uv99 zINBqg*eFLwEdO*QA!i(Oj$zJXm1CVK$G|#fuNqk9UAoi$$)YLwl=>5T7557rP0w~^ z-F(G5A8OAO1!Mi;Sr-I~0Dfb_F_*YZ*5!6Xpc8?`y7RiRZY&GpU?Qf6D`)6<$PD`F zIufETVtq9WKfi*9wS#?I#^vG!jJoCwRe1z5z^bnls~lv=P%`9BoT$iXuX*2c@;=G8 zCjhPPTTW77srNPIWQ_NOYQ;bxrodWyZ}ZI*Sb0l(GUrr}Zj5uOmjazQd#VkX;M4}- z&C5Na5s>O>XedY=#$?(EU=wSZu?i(!SF7PHKECyH@Y5jaJHZ?%S8gzk8%$Cn%@NF6l`(iPcJkNl= zM!{mq<^!Oduc5({nzWgC7Y{qO^1dAIVDAwXA1kG8-cNK%0Xtp~--&ChKiy@opnSKOaD5CgXQ1daL^GR%UqzI;gIAC0`C=w?y zj}tg*iC*dwKDg;PnLhiG($SpS1x`EwXrFjUCZ_d^W#5ToyJ4P@*n~SJOS<1Lwcyua zpQ2Mtz*e>zy4HKLrvAtITJ!#?dB4`r9~RvxhU9fAfcu=tuaevvh`Skl6j68LPnC;L zS9*9;8Sf5Z*5v(Um%#p|SzpzR)csa<8J;-sFerW%rW`+3gnx&ktM2j==BXGG?D{&Q z_J}uo$)lm@nYsM2BS;1C;0;C?$q;ZS=IWdTp5cWX06S**NHDE|)>)z-(_;m>5~I2# z?`^_9v`st%D~c|b36%~aP&wAr@A2z zWs?O|CpS*e2;;6XCgcOeWlYG!@OPR_;{C@E>NRg*H6kc(z#r>oylL`ykVKPb`B!Ri z!$d)C;x|uo$eOPlqaTE{X)u^N-lyO~WtW2k;oC8UazeK|&39`D;U)YGeW2_ImpR^| z7v*AfIpr7wk-Rj{F$Q~_FCb}R{|}N=d5B=`X6y#L^71NN!*Zuftp}O zVlYxndss3JzvfdS$`1kCTdUNW9IP>m$&p-2s$=(XZl@u(MOuHoM-s1T?rV9 z#|1d=1C}D<;>!f3qNq3f1u7Rh6i&=6#+vDj(`IkB{Rx=kD-xSW@vYS`!kUm>l&xy-o4 z#kQ+`+g*S1C2PJ0*hi0E;>2D+B6$pZIA!li`$VTW%UNl6HirNvDO*53vt26n27X@y z(haL1poQ*sX3fS!_qdwAhpz^;!b$)?Eq$@Vp3K6TNNb|)nn|J;zblFETK_cE4>dZB zJrmwP?>4P*l6#n9PU1I6o4>!aH-7T{SU+eSW^Bd#?e3xdn$-@}YF3}T%Ge4ZY%|<; za{71SP0-OSc6z^%^6SYnrubpL)Q`hUDC@`JPgmGwk>M;tx7KPf1-~w6w|=^>-!Q3A zC@sUp3$)e2F+AKMIi{0i(B?gHY%S;b435E=>7C-(G^xGP9AhRqcKJKxSZaL}{;HOD zfeJNemgc+=GsPux>gw{yM#0VBDv36q*|-jV<|XKq+I5G{uUxO{7`bNub7uK(`yUL? zYz^m&RBM!>m2M3)W&gk3WB*4>{;%zS$i{!&|2XrL$+7>g|FNmot^c7zF}MF`5x8Mb z7ZI5Gvn2vu^+ozU1?ydQKNkY>l^-mW?&ib4xaTpKX3LH4>-893ox#twq{c5??LuHX zUfO4{Oy#dQ;`gsiIjXh=Ts)gqJIapV3=HH!6XJNxxyD z`J=g8HB^R;!zTd?FUo5CWpss#?x38+)UR^O>qg4ZmWjXE#Zx(8>-lL5bi(Q!5GoijE3R%A7wFDyp80T*#M%etRe zyO%NL?dL}SR;DAqQRXjJSEl%5OH09K^e~dq!*~D`9k7g%U}d5|AA!9AO^5Jb4Y5Xb zUA=QYOThqz2cxP<_3tmq3o(n95P$uFZFiGRqS zCMwtuE1s0GQ@u^c;IC+fkY%oNJejMUV$qD!nJ%z;#I2EiCZz_<@K_@oIyguCx?72H zEI~2N26&6DADU2Oj_#S}=&nwW?j=d$m!rD|Y`~9V`P~5XyGLMjS9fCvmpLQB4!O=5 zL3VJVgLlm*VswvpCRW3$5=XIq46_$dJq}ouZ1WjI^}ILqJa{xF<|gi=d)i1ICd z{v&k=3sobFtEyjpqLfUn0yyts0{H2L-Yf2gzEvA)e|}Ac@Q9e|I)Sq;AZ3qOBy-aC zOqpD6<(kVaXW{`IElbZYYCV%)Uwk$_y^vAMkl!MO#*MkYNcpeF$X=n*4dM$=Bk}m5 ziX!Q!W-7QszP*~DHU;0v59oV}1}?u0QG6p0%bfqMANz3ZycZZ0w_>J`Brd}LCWDrw z=U@Du1GcI7x?c2LfAs3yn&{=u8Xkz43n3`kUCDFKIKrYA?bqYG@bl}h5Ti>xNEHVO za#5-aYYe>Y#t7OWe@v&C5+ucllent}XSL-G=ZaZcyoROE~%b2e*^F58zL_H zcWnXFyRM6xaeuDtBJS+njOba~ng^jZ-(mznP4zPhE^w>o3X(;Xsg27u7 z94nZzIb86ADAFQHw)o3-bYtCq#kws}&&GRU{Gd2)5rP{#$qn2Fd_{8OU0glhk&_%z zvKwGLawvF8zX!11@g0h3I}nmLk44@_W1Y5YUDW#kh}Z zjCG0Usa5%q;~rt#tj1_u{IJOiePxE^<9{x37c@=s%`WRjifOga*d|x#|B&`3@KKfb{{Kui5(G}L zfT$?ZMocPVqNoW(nF$G;kqJhNh^^XK5%-EXVR0QyBALYL<@V~&F1FIWz1?i=n?T~`Guqx#Ov~^pHN@J<)Au)Kp@?a9_&8~pMqLt*gA!wn%>6^gYZ$4 zysw%2j#@ql=!P0y$?}Qq-#YICX@V=AV`rsN*=FapOF=lu^G6#n70Rk|aWR!RfBBwp ztWl%M0ZnWH+i+TWF##0s-uJZYU}_e}u#LNTc$9g|z^BGvAb1Wm0~OuLWtpJv@;B}3 zjaJJKHI@EXt$QEVOMDmyC|>2b`4$Y0Y=5tHuQq-Wys4Y6kb8S*rbLZ(8FJm%b>Gu& z!ZSFPE7#n~Tb$GAU`pKVygQQ*@20CKO+QI>d@`ifSfvX`0y<=88{VD*nnA2c{BfGs zvbs^jifD22KT_S^cffQuK6o=q31{nex9chh`3@sbK|+;P&eHFiy$qhZV676F`$<~* z??1=kL$`0d`r&6dWjbGrtt1dIrw$a|`L&UC9k-8~6MHMRt^1?my4e2c+qu#G{zz@> zrsg@7U32P%!{yeT+d5VVPJ-P#ii1U~D!Dawj#c;mpK>C(qEWx9Jr~psxG#-G`Ged8G{_`Vmkkh>oAd<7rNgmu8+MNY(NAB@`HH!n;pl5s@bR3=oy>IN z8x&R9rMI!B&@GWum7BW0P=FH4QG$c)|W(J#1rG}Y{ycZ{~tlE~zK8P3r@ecq8$ zU*9kFVZ| z4ChP(Av(Z^?lO52AOb8$rdrFdbU|l_37^E7J_<#iTNm46AO*q#`8x%Ls=Ff7IR{u6 z>g@`0QURx!$vRE@GC>Nb8jhH2O21qNSXLNd!QTn%_w9oEqV+)$CnLf*aW07jId{j| z=`P4WRWn}GU&A&?>h2woe=lSvo}HceQYF431u7~$ShO-&w5dM!DsZx@P9)8GB#c3q zrlFr1aAL@s;9{4q0rdeVuO=QLb*en7FIrXfYB07nUD#9qtHPE_xapEfZ+5vmO1JY$ z`fZK(X2_&6XC|kClCQe{Vj+*fm~5{@dcEr-TjVS_ac`qo3Y4SMiyhbF|32q#Qw#_$ zEl=yW-&}`0#z^B{lzP$SUOID)iiv}l<(N>vZ+GvX1fhdZ0KMkfE&Dm%f|LaT1?U*3 zGon&p2}S>(x|Gd;9selwAE&|(nGym21Q%w>JofJCz%YW5GD-T;0_4mqL~Q2_z}TEm za2hJHkPZmeto~p{!(qG28_Fxc}iV^$-CR5p|;x( zY}fAIlXy%J8~d%1Kbli3!j0j$d;6Q*+dOJ2+vgNcg#i+-NN*$WLunUcqc-+_2XG8^~?2>LSq zID5?x@M_nikNK0nV}gGHtv- znPm9Gp=~nt6ci)JoYFpJfW(-X4NS=glman`sMy_waA_kqE5nrHj6q#P8QvH<&O$x{ z|COT-pRNX_B#w;b5Bt(>b{bW2YM?X=0j|HZi}s4hx1~F7)G)a?tkK!Ojcw+67{6O- zW925DaJlvxH6(u-H@C~{5Z@oKFeZy8Dy-ZuuW6xKZq!cs6`1AOS&`E+TQa?_eB zp5~=OF9c{VOhAcVDxZJShd3W+fI%3p!6CU?7h^LJl-v=-?rt&ZuPA(sUxTko! zt7{FkW@5bvPOh-&PL$Z+6)l4Ucz~I~@}b$cyOSe%Oq&C<8iIH8>Hz*`g=4dk-ZJRI zHmdFIsoun@wg>qT>tZKvR0XLb5!1f_n~c0NMbUH&Y|}g zwpMY0@KHtQm5qB=n+*M>KY_}w)O{}8(B1t}Ui57%x_{swE9T|=@lxN$_WSe1WXTH}#;Jdm zgry}BMM$=o(A(-+EO}ju|7^1>K#{~2gz|Ufi7p3hj1)9HKa`+?ZC_f7*p-c76=jqN z+?7bSz|p=I}~qbkr55m>mx(0 z``CqaHh2(cgJ0uSQM2KdBZGRmEz^qqg3eEiUp}ZeT)iVQds=)H9^39Xgy^BGCfYp9 zj!!-muHGJ*0Ymlm&+B5FP4F~=KUc6#=)sm917H%8=Nol+AAD7AZG9eJYPPK<4NZ*=lhIJo4Of-O5N`AZ2#cT9q9+8Qj{idd&05PfeFn@4Y5(Kh_8 zw7fg1=n&V#93PG$8APx83RxRXg=u(Rd`R8|w7m8@$+G*ShQ(`|CDHTq~#r#ItPC<~tZ&Lhm* zDBMjGP4A@7LDvS+tq_6(5Cpxi2+3;GCe-w)kGZt%d zy4mDhA?xFR(wmWIH9*^8>xJBa7wlt)hGRK(u?y(?N<7c5vt!Vd!NSTetlOe=!PUQC z5<~-UDDGML+L6&0APz@j{1Ut1I)Z5Z*l_2K5;y;RJ;T6mD+~_p5$t_kn}fmU_!(VW zuYJ%xFFK32#5DuBT%hBz(hZanj2_~QHuOIQ;Bwy?L1C*eC9TAt_t%iQNx~z{Lp_rcV!> zwaH}QYvz>fB1Lq_QxbNrOVtaj^*cOd7NOxVW)U3d-|WaOl4>?x<<1WXL7jXrG37sP zuCEncSE3{Rzfyl;TbA+U)W7H_5su;59vuU#K@zW#i4v=6NMAqD&c|~Kl7SoKY_Ei3 zw~b0p&&FTq1-!U<;~A4M+DRrcN*3qeaWkN+QkN<}qoBZ0tTz<aaA3B zM%6$@Uw1y#m`oX*^CyYkY#!EbN%-n>^lVE*U)N_ zXN89953ME3G$3HH3JMdMbl<6Jf{+Bzx}9>wCt>LAsnF^FqXg=o=+5nWl5ibQbFNy@ zXO4i224f?bni_kE;Hz`ZbP2xmt+tE6z==kJoUhVA4Xg?#PS>Uw3XXD7j`*HaSh&-j z7ICVYCKao37nyh9yfpp3+4(&mItX?OfT2=ybg;j~y7yfMPUGE0m~+*u)cqPEa(t;& zVmcKgP*h*ch=>R)qjCYX;Kk{{NY)gW0&T`jvWazYp?=yO#i~_~Ft*DzM5g7v(gAyE1h(T!6nq0iqIi5}m>y3^c*~C5cr=YO757 zhCW={u0n=BU@!%OU)hKw{5|YaP=zNsym?IHj{Dv`{_z8kjr|Z%DiW^aYu@o*vlzMAUHGT}(C6C0vxIN#*`rot>+LEtaeAjs?e*kqU|(z&oN1V~aVp_N?qL`G^PlFc z7(NQFNzB$$Y~bmW(^1;&B>t+d?{DY;pAJuW}1ULa!1bBekLlo=*>0ajo)sk@;sK)4D;xgyAYf+1d}=|!`Qaj$ z?e9tAAPA6Rcm3G;t|1q&|6tE?3D`Zqbl*IykEvdQZ6;U{mgZNy^CcT>JVi#n6?~$Q zriRM9!F~G2r@ zxm-f$ccKe>DQut$lYil^Q1!~@q;k!>sv+LEtD$=1f?43Ke5vAj4*o#TjQ)L6Yuz$z zATe9!Sg&oKV{LnNjp5(LkhAfauQ?T5fi_$MfMCiKOyw zkvYl936&?jfdpp;sExNK;9ey@Z?(y0(_lB(s<(QZd)aJ-v%%yt#wGNnC$9<#4e~E9 zAfSC9N+GVih3?K(>72=X+63Fx`>lKLBVL^x#8>m#YQo&))leE@hFRiHz1r-aJl*T; zJ;A*vK0+Hq+IMxoRM21N#?*-f7Gu6PV&H*t;a3F-tc- z_{^0lgBXYXNbA~Eq4D9ZDLG92V!(JeaxBF+2}?9O3z}1gF*|>%tjRGF_6dbKHR>>% z&1)utU|ks7?W{?CDpiF8-DOh!-UMgC6Y9_s_fVZVA6CkkcmuS{0Apg)nVI&R>GNwE zQ)drx*{Oe)nVR)JQ|DLM%z#z2tz<$01t%uLfd2IXpB=9`+65ww@VgJ05!S6=q|`1L zNRLUC8K>lUXOXGgJp!aYSMsfC`OK+IQcp z>Cc!i^yjt8jNa3qEcsmph%4u|Ivu(w)kZWRoMDf7HCqwXuokKeWn^jed{oIT0m&!FiKt z5;81}Z9M<(RCGRz$3%}a(R+wiy|f^2-o4b0P;k^3Q{$mruf|V#nTFGU+QM)!3TsRZ ziW6K>J9^@|gHc>4XjzwQB5zgXy{2;0 zocSe*i2Id8{QRR6bKEbJddX#c02_(($rWmO(T_)2GF(9@UtBV@nhY1ZU%B!&yQG$n z1`s<^<&_QP>#cjwSAc&vpf^;mxA*7GyO22$sH}76!0%4x_stXvaDHUoG?_o)?Fe(= zXV9C6CYF*S9DB*kK�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') + .option('-r, --recursive', 'Remove recursively') + .action(function (dir, cmd) { + console.log('remove ' + dir + (cmd.recursive ? ' recursively' : '')) + }) + +program.parse(process.argv) +``` + +A command's options are validated when the command is used. Any unknown options will be reported as an error. However, if an action-based command does not define an action, then the options are not validated. + +## Coercion + +```js +function range(val) { + return val.split('..').map(Number); +} + +function list(val) { + return val.split(','); +} + +function collect(val, memo) { + memo.push(val); + return memo; +} + +function increaseVerbosity(v, total) { + return total + 1; +} + +program + .version('0.1.0') + .usage('[options] ') + .option('-i, --integer ', 'An integer argument', parseInt) + .option('-f, --float ', 'A float argument', parseFloat) + .option('-r, --range ..', 'A range', range) + .option('-l, --list ', 'A list', list) + .option('-o, --optional [value]', 'An optional value') + .option('-c, --collect [value]', 'A repeatable value', collect, []) + .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0) + .parse(process.argv); + +console.log(' int: %j', program.integer); +console.log(' float: %j', program.float); +console.log(' optional: %j', program.optional); +program.range = program.range || []; +console.log(' range: %j..%j', program.range[0], program.range[1]); +console.log(' list: %j', program.list); +console.log(' collect: %j', program.collect); +console.log(' verbosity: %j', program.verbose); +console.log(' args: %j', program.args); +``` + +## Regular Expression +```js +program + .version('0.1.0') + .option('-s --size ', 'Pizza size', /^(large|medium|small)$/i, 'medium') + .option('-d --drink [drink]', 'Drink', /^(coke|pepsi|izze)$/i) + .parse(process.argv); + +console.log(' size: %j', program.size); +console.log(' drink: %j', program.drink); +``` + +## Variadic arguments + + The last argument of a command can be variadic, and only the last argument. To make an argument variadic you have to + append `...` to the argument name. Here is an example: + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.1.0') + .command('rmdir [otherDirs...]') + .action(function (dir, otherDirs) { + console.log('rmdir %s', dir); + if (otherDirs) { + otherDirs.forEach(function (oDir) { + console.log('rmdir %s', oDir); + }); + } + }); + +program.parse(process.argv); +``` + + An `Array` is used for the value of a variadic argument. This applies to `program.args` as well as the argument passed + to your action as demonstrated above. + +## Specify the argument syntax + +```js +#!/usr/bin/env node + +var program = require('commander'); + +program + .version('0.1.0') + .arguments(' [env]') + .action(function (cmd, env) { + cmdValue = cmd; + envValue = env; + }); + +program.parse(process.argv); + +if (typeof cmdValue === 'undefined') { + console.error('no command given!'); + process.exit(1); +} +console.log('command:', cmdValue); +console.log('environment:', envValue || "no environment given"); +``` +Angled brackets (e.g. ``) indicate required input. Square brackets (e.g. `[env]`) indicate optional input. + +## Git-style sub-commands + +```js +// file: ./examples/pm +var program = require('commander'); + +program + .version('0.1.0') + .command('install [name]', 'install one or more packages') + .command('search [query]', 'search with optional query') + .command('list', 'list packages installed', {isDefault: true}) + .parse(process.argv); +``` + +When `.command()` is invoked with a description argument, no `.action(callback)` should be called to handle sub-commands, otherwise there will be an error. This tells commander that you're going to use separate executables for sub-commands, much like `git(1)` and other popular tools. +The commander will try to search the executables in the directory of the entry script (like `./examples/pm`) with the name `program-command`, like `pm-install`, `pm-search`. + +Options can be passed with the call to `.command()`. Specifying `true` for `opts.noHelp` will remove the subcommand from the generated help output. Specifying `true` for `opts.isDefault` will run the subcommand if no other subcommand is specified. + +If the program is designed to be installed globally, make sure the executables have proper modes, like `755`. + +### `--harmony` + +You can enable `--harmony` option in two ways: +* Use `#! /usr/bin/env node --harmony` in the sub-commands scripts. Note some os version don’t support this pattern. +* Use the `--harmony` option when call the command, like `node --harmony examples/pm publish`. The `--harmony` option will be preserved when spawning sub-command process. + +## Automated --help + + The help information is auto-generated based on the information commander already knows about your program, so the following `--help` info is for free: + +``` +$ ./examples/pizza --help +Usage: pizza [options] + +An application for pizzas ordering + +Options: + -h, --help output usage information + -V, --version output the version number + -p, --peppers Add peppers + -P, --pineapple Add pineapple + -b, --bbq Add bbq sauce + -c, --cheese Add the specified type of cheese [marble] + -C, --no-cheese You do not want any cheese +``` + +## Custom help + + You can display arbitrary `-h, --help` information + by listening for "--help". Commander will automatically + exit once you are done so that the remainder of your program + does not execute causing undesired behaviors, for example + in the following executable "stuff" will not output when + `--help` is used. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.1.0') + .option('-f, --foo', 'enable some foo') + .option('-b, --bar', 'enable some bar') + .option('-B, --baz', 'enable some baz'); + +// must be before .parse() since +// node's emit() is immediate + +program.on('--help', function(){ + console.log('') + console.log('Examples:'); + console.log(' $ custom-help --help'); + console.log(' $ custom-help -h'); +}); + +program.parse(process.argv); + +console.log('stuff'); +``` + +Yields the following help output when `node script-name.js -h` or `node script-name.js --help` are run: + +``` +Usage: custom-help [options] + +Options: + -h, --help output usage information + -V, --version output the version number + -f, --foo enable some foo + -b, --bar enable some bar + -B, --baz enable some baz + +Examples: + $ custom-help --help + $ custom-help -h +``` + +## .outputHelp(cb) + +Output help information without exiting. +Optional callback cb allows post-processing of help text before it is displayed. + +If you want to display help by default (e.g. if no command was provided), you can use something like: + +```js +var program = require('commander'); +var colors = require('colors'); + +program + .version('0.1.0') + .command('getstream [url]', 'get stream URL') + .parse(process.argv); + +if (!process.argv.slice(2).length) { + program.outputHelp(make_red); +} + +function make_red(txt) { + return colors.red(txt); //display the help text in red on the console +} +``` + +## .help(cb) + + Output help information and exit immediately. + Optional callback cb allows post-processing of help text before it is displayed. + + +## Custom event listeners + You can execute custom actions by listening to command and option events. + +```js +program.on('option:verbose', function () { + process.env.VERBOSE = this.verbose; +}); + +// error on unknown commands +program.on('command:*', function () { + console.error('Invalid command: %s\nSee --help for a list of available commands.', program.args.join(' ')); + process.exit(1); +}); +``` + +## Examples + +```js +var program = require('commander'); + +program + .version('0.1.0') + .option('-C, --chdir ', 'change the working directory') + .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + .option('-T, --no-tests', 'ignore test hook'); + +program + .command('setup [env]') + .description('run setup commands for all envs') + .option("-s, --setup_mode [mode]", "Which setup mode to use") + .action(function(env, options){ + var mode = options.setup_mode || "normal"; + env = env || 'all'; + console.log('setup for %s env(s) with %s mode', env, mode); + }); + +program + .command('exec ') + .alias('ex') + .description('execute the given remote cmd') + .option("-e, --exec_mode ", "Which exec mode to use") + .action(function(cmd, options){ + console.log('exec "%s" using %s mode', cmd, options.exec_mode); + }).on('--help', function() { + console.log(''); + console.log('Examples:'); + console.log(''); + console.log(' $ deploy exec sequential'); + console.log(' $ deploy exec async'); + }); + +program + .command('*') + .action(function(env){ + console.log('deploying "%s"', env); + }); + +program.parse(process.argv); +``` + +More Demos can be found in the [examples](https://github.com/tj/commander.js/tree/master/examples) directory. + +## License + +[MIT](https://github.com/tj/commander.js/blob/master/LICENSE) diff --git a/tic-tac-toe-app/node_modules/commander/index.js b/tic-tac-toe-app/node_modules/commander/index.js new file mode 100644 index 0000000..ec1d61d --- /dev/null +++ b/tic-tac-toe-app/node_modules/commander/index.js @@ -0,0 +1,1224 @@ +/** + * Module dependencies. + */ + +var EventEmitter = require('events').EventEmitter; +var spawn = require('child_process').spawn; +var path = require('path'); +var dirname = path.dirname; +var basename = path.basename; +var fs = require('fs'); + +/** + * Inherit `Command` from `EventEmitter.prototype`. + */ + +require('util').inherits(Command, EventEmitter); + +/** + * Expose the root command. + */ + +exports = module.exports = new Command(); + +/** + * Expose `Command`. + */ + +exports.Command = Command; + +/** + * Expose `Option`. + */ + +exports.Option = Option; + +/** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {String} flags + * @param {String} description + * @api public + */ + +function Option(flags, description) { + this.flags = flags; + this.required = flags.indexOf('<') >= 0; + this.optional = flags.indexOf('[') >= 0; + this.bool = flags.indexOf('-no-') === -1; + flags = flags.split(/[ ,|]+/); + if (flags.length > 1 && !/^[[<]/.test(flags[1])) this.short = flags.shift(); + this.long = flags.shift(); + this.description = description || ''; +} + +/** + * Return option name. + * + * @return {String} + * @api private + */ + +Option.prototype.name = function() { + return this.long + .replace('--', '') + .replace('no-', ''); +}; + +/** + * Return option name, in a camelcase format that can be used + * as a object attribute key. + * + * @return {String} + * @api private + */ + +Option.prototype.attributeName = function() { + return camelcase(this.name()); +}; + +/** + * Check if `arg` matches the short or long flag. + * + * @param {String} arg + * @return {Boolean} + * @api private + */ + +Option.prototype.is = function(arg) { + return this.short === arg || this.long === arg; +}; + +/** + * Initialize a new `Command`. + * + * @param {String} name + * @api public + */ + +function Command(name) { + this.commands = []; + this.options = []; + this._execs = {}; + this._allowUnknownOption = false; + this._args = []; + this._name = name || ''; +} + +/** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * Examples: + * + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function() { + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd) { + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('teardown [otherDirs...]') + * .description('run teardown commands') + * .action(function(dir, otherDirs) { + * console.log('dir "%s"', dir); + * if (otherDirs) { + * otherDirs.forEach(function (oDir) { + * console.log('dir "%s"', oDir); + * }); + * } + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env) { + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {String} name + * @param {String} [desc] for git-style sub-commands + * @return {Command} the new command + * @api public + */ + +Command.prototype.command = function(name, desc, opts) { + if (typeof desc === 'object' && desc !== null) { + opts = desc; + desc = null; + } + opts = opts || {}; + var args = name.split(/ +/); + var cmd = new Command(args.shift()); + + if (desc) { + cmd.description(desc); + this.executables = true; + this._execs[cmd._name] = true; + if (opts.isDefault) this.defaultExecutable = cmd._name; + } + cmd._noHelp = !!opts.noHelp; + this.commands.push(cmd); + cmd.parseExpectedArgs(args); + cmd.parent = this; + + if (desc) return this; + return cmd; +}; + +/** + * Define argument syntax for the top-level command. + * + * @api public + */ + +Command.prototype.arguments = function(desc) { + return this.parseExpectedArgs(desc.split(/ +/)); +}; + +/** + * Add an implicit `help [cmd]` subcommand + * which invokes `--help` for the given command. + * + * @api private + */ + +Command.prototype.addImplicitHelpCommand = function() { + this.command('help [cmd]', 'display help for [cmd]'); +}; + +/** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {Array} args + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parseExpectedArgs = function(args) { + if (!args.length) return; + var self = this; + args.forEach(function(arg) { + var argDetails = { + required: false, + name: '', + variadic: false + }; + + switch (arg[0]) { + case '<': + argDetails.required = true; + argDetails.name = arg.slice(1, -1); + break; + case '[': + argDetails.name = arg.slice(1, -1); + break; + } + + if (argDetails.name.length > 3 && argDetails.name.slice(-3) === '...') { + argDetails.variadic = true; + argDetails.name = argDetails.name.slice(0, -3); + } + if (argDetails.name) { + self._args.push(argDetails); + } + }); + return this; +}; + +/** + * Register callback `fn` for the command. + * + * Examples: + * + * program + * .command('help') + * .description('display verbose help') + * .action(function() { + * // output help here + * }); + * + * @param {Function} fn + * @return {Command} for chaining + * @api public + */ + +Command.prototype.action = function(fn) { + var self = this; + var listener = function(args, unknown) { + // Parse any so-far unknown options + args = args || []; + unknown = unknown || []; + + var parsed = self.parseOptions(unknown); + + // Output help if necessary + outputHelpIfNecessary(self, parsed.unknown); + + // If there are still any unknown options, then we simply + // die, unless someone asked for help, in which case we give it + // to them, and then we die. + if (parsed.unknown.length > 0) { + self.unknownOption(parsed.unknown[0]); + } + + // Leftover arguments need to be pushed back. Fixes issue #56 + if (parsed.args.length) args = parsed.args.concat(args); + + self._args.forEach(function(arg, i) { + if (arg.required && args[i] == null) { + self.missingArgument(arg.name); + } else if (arg.variadic) { + if (i !== self._args.length - 1) { + self.variadicArgNotLast(arg.name); + } + + args[i] = args.splice(i); + } + }); + + // Always append ourselves to the end of the arguments, + // to make sure we match the number of arguments the user + // expects + if (self._args.length) { + args[self._args.length] = self; + } else { + args.push(self); + } + + fn.apply(self, args); + }; + var parent = this.parent || this; + var name = parent === this ? '*' : this._name; + parent.on('command:' + name, listener); + if (this._alias) parent.on('command:' + this._alias, listener); + return this; +}; + +/** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * Examples: + * + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {String} flags + * @param {String} description + * @param {Function|*} [fn] or default + * @param {*} [defaultValue] + * @return {Command} for chaining + * @api public + */ + +Command.prototype.option = function(flags, description, fn, defaultValue) { + var self = this, + option = new Option(flags, description), + oname = option.name(), + name = option.attributeName(); + + // default as 3rd arg + if (typeof fn !== 'function') { + if (fn instanceof RegExp) { + var regex = fn; + fn = function(val, def) { + var m = regex.exec(val); + return m ? m[0] : def; + }; + } else { + defaultValue = fn; + fn = null; + } + } + + // preassign default value only for --no-*, [optional], or + if (!option.bool || option.optional || option.required) { + // when --no-* we make sure default is true + if (!option.bool) defaultValue = true; + // preassign only if we have a default + if (defaultValue !== undefined) { + self[name] = defaultValue; + option.defaultValue = defaultValue; + } + } + + // register the option + this.options.push(option); + + // when it's passed assign the value + // and conditionally invoke the callback + this.on('option:' + oname, function(val) { + // coercion + if (val !== null && fn) { + val = fn(val, self[name] === undefined ? defaultValue : self[name]); + } + + // unassigned or bool + if (typeof self[name] === 'boolean' || typeof self[name] === 'undefined') { + // if no value, bool true, and we have a default, then use it! + if (val == null) { + self[name] = option.bool + ? defaultValue || true + : false; + } else { + self[name] = val; + } + } else if (val !== null) { + // reassign + self[name] = val; + } + }); + + return this; +}; + +/** + * Allow unknown options on the command line. + * + * @param {Boolean} arg if `true` or omitted, no error will be thrown + * for unknown options. + * @api public + */ +Command.prototype.allowUnknownOption = function(arg) { + this._allowUnknownOption = arguments.length === 0 || arg; + return this; +}; + +/** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {Array} argv + * @return {Command} for chaining + * @api public + */ + +Command.prototype.parse = function(argv) { + // implicit help + if (this.executables) this.addImplicitHelpCommand(); + + // store raw args + this.rawArgs = argv; + + // guess name + this._name = this._name || basename(argv[1], '.js'); + + // github-style sub-commands with no sub-command + if (this.executables && argv.length < 3 && !this.defaultExecutable) { + // this user needs help + argv.push('--help'); + } + + // process argv + var parsed = this.parseOptions(this.normalize(argv.slice(2))); + var args = this.args = parsed.args; + + var result = this.parseArgs(this.args, parsed.unknown); + + // executable sub-commands + var name = result.args[0]; + + var aliasCommand = null; + // check alias of sub commands + if (name) { + aliasCommand = this.commands.filter(function(command) { + return command.alias() === name; + })[0]; + } + + if (this._execs[name] === true) { + return this.executeSubCommand(argv, args, parsed.unknown); + } else if (aliasCommand) { + // is alias of a subCommand + args[0] = aliasCommand._name; + return this.executeSubCommand(argv, args, parsed.unknown); + } else if (this.defaultExecutable) { + // use the default subcommand + args.unshift(this.defaultExecutable); + return this.executeSubCommand(argv, args, parsed.unknown); + } + + return result; +}; + +/** + * Execute a sub-command executable. + * + * @param {Array} argv + * @param {Array} args + * @param {Array} unknown + * @api private + */ + +Command.prototype.executeSubCommand = function(argv, args, unknown) { + args = args.concat(unknown); + + if (!args.length) this.help(); + if (args[0] === 'help' && args.length === 1) this.help(); + + // --help + if (args[0] === 'help') { + args[0] = args[1]; + args[1] = '--help'; + } + + // executable + var f = argv[1]; + // name of the subcommand, link `pm-install` + var bin = basename(f, path.extname(f)) + '-' + args[0]; + + // In case of globally installed, get the base dir where executable + // subcommand file should be located at + var baseDir; + + var resolvedLink = fs.realpathSync(f); + + baseDir = dirname(resolvedLink); + + // prefer local `./` to bin in the $PATH + var localBin = path.join(baseDir, bin); + + // whether bin file is a js script with explicit `.js` or `.ts` extension + var isExplicitJS = false; + if (exists(localBin + '.js')) { + bin = localBin + '.js'; + isExplicitJS = true; + } else if (exists(localBin + '.ts')) { + bin = localBin + '.ts'; + isExplicitJS = true; + } else if (exists(localBin)) { + bin = localBin; + } + + args = args.slice(1); + + var proc; + if (process.platform !== 'win32') { + if (isExplicitJS) { + args.unshift(bin); + // add executable arguments to spawn + args = (process.execArgv || []).concat(args); + + proc = spawn(process.argv[0], args, { stdio: 'inherit', customFds: [0, 1, 2] }); + } else { + proc = spawn(bin, args, { stdio: 'inherit', customFds: [0, 1, 2] }); + } + } else { + args.unshift(bin); + proc = spawn(process.execPath, args, { stdio: 'inherit' }); + } + + var signals = ['SIGUSR1', 'SIGUSR2', 'SIGTERM', 'SIGINT', 'SIGHUP']; + signals.forEach(function(signal) { + process.on(signal, function() { + if (proc.killed === false && proc.exitCode === null) { + proc.kill(signal); + } + }); + }); + proc.on('close', process.exit.bind(process)); + proc.on('error', function(err) { + if (err.code === 'ENOENT') { + console.error('error: %s(1) does not exist, try --help', bin); + } else if (err.code === 'EACCES') { + console.error('error: %s(1) not executable. try chmod or run with root', bin); + } + process.exit(1); + }); + + // Store the reference to the child process + this.runningCommand = proc; +}; + +/** + * Normalize `args`, splitting joined short flags. For example + * the arg "-abc" is equivalent to "-a -b -c". + * This also normalizes equal sign and splits "--abc=def" into "--abc def". + * + * @param {Array} args + * @return {Array} + * @api private + */ + +Command.prototype.normalize = function(args) { + var ret = [], + arg, + lastOpt, + index; + + for (var i = 0, len = args.length; i < len; ++i) { + arg = args[i]; + if (i > 0) { + lastOpt = this.optionFor(args[i - 1]); + } + + if (arg === '--') { + // Honor option terminator + ret = ret.concat(args.slice(i)); + break; + } else if (lastOpt && lastOpt.required) { + ret.push(arg); + } else if (arg.length > 1 && arg[0] === '-' && arg[1] !== '-') { + arg.slice(1).split('').forEach(function(c) { + ret.push('-' + c); + }); + } else if (/^--/.test(arg) && ~(index = arg.indexOf('='))) { + ret.push(arg.slice(0, index), arg.slice(index + 1)); + } else { + ret.push(arg); + } + } + + return ret; +}; + +/** + * Parse command `args`. + * + * When listener(s) are available those + * callbacks are invoked, otherwise the "*" + * event is emitted and those actions are invoked. + * + * @param {Array} args + * @return {Command} for chaining + * @api private + */ + +Command.prototype.parseArgs = function(args, unknown) { + var name; + + if (args.length) { + name = args[0]; + if (this.listeners('command:' + name).length) { + this.emit('command:' + args.shift(), args, unknown); + } else { + this.emit('command:*', args); + } + } else { + outputHelpIfNecessary(this, unknown); + + // If there were no args and we have unknown options, + // then they are extraneous and we need to error. + if (unknown.length > 0) { + this.unknownOption(unknown[0]); + } + if (this.commands.length === 0 && + this._args.filter(function(a) { return a.required; }).length === 0) { + this.emit('command:*'); + } + } + + return this; +}; + +/** + * Return an option matching `arg` if any. + * + * @param {String} arg + * @return {Option} + * @api private + */ + +Command.prototype.optionFor = function(arg) { + for (var i = 0, len = this.options.length; i < len; ++i) { + if (this.options[i].is(arg)) { + return this.options[i]; + } + } +}; + +/** + * Parse options from `argv` returning `argv` + * void of these options. + * + * @param {Array} argv + * @return {Array} + * @api public + */ + +Command.prototype.parseOptions = function(argv) { + var args = [], + len = argv.length, + literal, + option, + arg; + + var unknownOptions = []; + + // parse options + for (var i = 0; i < len; ++i) { + arg = argv[i]; + + // literal args after -- + if (literal) { + args.push(arg); + continue; + } + + if (arg === '--') { + literal = true; + continue; + } + + // find matching Option + option = this.optionFor(arg); + + // option is defined + if (option) { + // requires arg + if (option.required) { + arg = argv[++i]; + if (arg == null) return this.optionMissingArgument(option); + this.emit('option:' + option.name(), arg); + // optional arg + } else if (option.optional) { + arg = argv[i + 1]; + if (arg == null || (arg[0] === '-' && arg !== '-')) { + arg = null; + } else { + ++i; + } + this.emit('option:' + option.name(), arg); + // bool + } else { + this.emit('option:' + option.name()); + } + continue; + } + + // looks like an option + if (arg.length > 1 && arg[0] === '-') { + unknownOptions.push(arg); + + // If the next argument looks like it might be + // an argument for this option, we pass it on. + // If it isn't, then it'll simply be ignored + if ((i + 1) < argv.length && argv[i + 1][0] !== '-') { + unknownOptions.push(argv[++i]); + } + continue; + } + + // arg + args.push(arg); + } + + return { args: args, unknown: unknownOptions }; +}; + +/** + * Return an object containing options as key-value pairs + * + * @return {Object} + * @api public + */ +Command.prototype.opts = function() { + var result = {}, + len = this.options.length; + + for (var i = 0; i < len; i++) { + var key = this.options[i].attributeName(); + result[key] = key === this._versionOptionName ? this._version : this[key]; + } + return result; +}; + +/** + * Argument `name` is missing. + * + * @param {String} name + * @api private + */ + +Command.prototype.missingArgument = function(name) { + console.error("error: missing required argument `%s'", name); + process.exit(1); +}; + +/** + * `Option` is missing an argument, but received `flag` or nothing. + * + * @param {String} option + * @param {String} flag + * @api private + */ + +Command.prototype.optionMissingArgument = function(option, flag) { + if (flag) { + console.error("error: option `%s' argument missing, got `%s'", option.flags, flag); + } else { + console.error("error: option `%s' argument missing", option.flags); + } + process.exit(1); +}; + +/** + * Unknown option `flag`. + * + * @param {String} flag + * @api private + */ + +Command.prototype.unknownOption = function(flag) { + if (this._allowUnknownOption) return; + console.error("error: unknown option `%s'", flag); + process.exit(1); +}; + +/** + * Variadic argument with `name` is not the last argument as required. + * + * @param {String} name + * @api private + */ + +Command.prototype.variadicArgNotLast = function(name) { + console.error("error: variadic arguments must be last `%s'", name); + process.exit(1); +}; + +/** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {String} str + * @param {String} [flags] + * @return {Command} for chaining + * @api public + */ + +Command.prototype.version = function(str, flags) { + if (arguments.length === 0) return this._version; + this._version = str; + flags = flags || '-V, --version'; + var versionOption = new Option(flags, 'output the version number'); + this._versionOptionName = versionOption.long.substr(2) || 'version'; + this.options.push(versionOption); + this.on('option:' + this._versionOptionName, function() { + process.stdout.write(str + '\n'); + process.exit(0); + }); + return this; +}; + +/** + * Set the description to `str`. + * + * @param {String} str + * @param {Object} argsDescription + * @return {String|Command} + * @api public + */ + +Command.prototype.description = function(str, argsDescription) { + if (arguments.length === 0) return this._description; + this._description = str; + this._argsDescription = argsDescription; + return this; +}; + +/** + * Set an alias for the command + * + * @param {String} alias + * @return {String|Command} + * @api public + */ + +Command.prototype.alias = function(alias) { + var command = this; + if (this.commands.length !== 0) { + command = this.commands[this.commands.length - 1]; + } + + if (arguments.length === 0) return command._alias; + + if (alias === command._name) throw new Error('Command alias can\'t be the same as its name'); + + command._alias = alias; + return this; +}; + +/** + * Set / get the command usage `str`. + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.usage = function(str) { + var args = this._args.map(function(arg) { + return humanReadableArgName(arg); + }); + + var usage = '[options]' + + (this.commands.length ? ' [command]' : '') + + (this._args.length ? ' ' + args.join(' ') : ''); + + if (arguments.length === 0) return this._usage || usage; + this._usage = str; + + return this; +}; + +/** + * Get or set the name of the command + * + * @param {String} str + * @return {String|Command} + * @api public + */ + +Command.prototype.name = function(str) { + if (arguments.length === 0) return this._name; + this._name = str; + return this; +}; + +/** + * Return prepared commands. + * + * @return {Array} + * @api private + */ + +Command.prototype.prepareCommands = function() { + return this.commands.filter(function(cmd) { + return !cmd._noHelp; + }).map(function(cmd) { + var args = cmd._args.map(function(arg) { + return humanReadableArgName(arg); + }).join(' '); + + return [ + cmd._name + + (cmd._alias ? '|' + cmd._alias : '') + + (cmd.options.length ? ' [options]' : '') + + (args ? ' ' + args : ''), + cmd._description + ]; + }); +}; + +/** + * Return the largest command length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestCommandLength = function() { + var commands = this.prepareCommands(); + return commands.reduce(function(max, command) { + return Math.max(max, command[0].length); + }, 0); +}; + +/** + * Return the largest option length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestOptionLength = function() { + var options = [].slice.call(this.options); + options.push({ + flags: '-h, --help' + }); + return options.reduce(function(max, option) { + return Math.max(max, option.flags.length); + }, 0); +}; + +/** + * Return the largest arg length. + * + * @return {Number} + * @api private + */ + +Command.prototype.largestArgLength = function() { + return this._args.reduce(function(max, arg) { + return Math.max(max, arg.name.length); + }, 0); +}; + +/** + * Return the pad width. + * + * @return {Number} + * @api private + */ + +Command.prototype.padWidth = function() { + var width = this.largestOptionLength(); + if (this._argsDescription && this._args.length) { + if (this.largestArgLength() > width) { + width = this.largestArgLength(); + } + } + + if (this.commands && this.commands.length) { + if (this.largestCommandLength() > width) { + width = this.largestCommandLength(); + } + } + + return width; +}; + +/** + * Return help for options. + * + * @return {String} + * @api private + */ + +Command.prototype.optionHelp = function() { + var width = this.padWidth(); + + // Append the help information + return this.options.map(function(option) { + return pad(option.flags, width) + ' ' + option.description + + ((option.bool && option.defaultValue !== undefined) ? ' (default: ' + JSON.stringify(option.defaultValue) + ')' : ''); + }).concat([pad('-h, --help', width) + ' ' + 'output usage information']) + .join('\n'); +}; + +/** + * Return command help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.commandHelp = function() { + if (!this.commands.length) return ''; + + var commands = this.prepareCommands(); + var width = this.padWidth(); + + return [ + 'Commands:', + commands.map(function(cmd) { + var desc = cmd[1] ? ' ' + cmd[1] : ''; + return (desc ? pad(cmd[0], width) : cmd[0]) + desc; + }).join('\n').replace(/^/gm, ' '), + '' + ].join('\n'); +}; + +/** + * Return program help documentation. + * + * @return {String} + * @api private + */ + +Command.prototype.helpInformation = function() { + var desc = []; + if (this._description) { + desc = [ + this._description, + '' + ]; + + var argsDescription = this._argsDescription; + if (argsDescription && this._args.length) { + var width = this.padWidth(); + desc.push('Arguments:'); + desc.push(''); + this._args.forEach(function(arg) { + desc.push(' ' + pad(arg.name, width) + ' ' + argsDescription[arg.name]); + }); + desc.push(''); + } + } + + var cmdName = this._name; + if (this._alias) { + cmdName = cmdName + '|' + this._alias; + } + var usage = [ + 'Usage: ' + cmdName + ' ' + this.usage(), + '' + ]; + + var cmds = []; + var commandHelp = this.commandHelp(); + if (commandHelp) cmds = [commandHelp]; + + var options = [ + 'Options:', + '' + this.optionHelp().replace(/^/gm, ' '), + '' + ]; + + return usage + .concat(desc) + .concat(options) + .concat(cmds) + .join('\n'); +}; + +/** + * Output help information for this command + * + * @api public + */ + +Command.prototype.outputHelp = function(cb) { + if (!cb) { + cb = function(passthru) { + return passthru; + }; + } + process.stdout.write(cb(this.helpInformation())); + this.emit('--help'); +}; + +/** + * Output help information and exit. + * + * @api public + */ + +Command.prototype.help = function(cb) { + this.outputHelp(cb); + process.exit(); +}; + +/** + * Camel-case the given `flag` + * + * @param {String} flag + * @return {String} + * @api private + */ + +function camelcase(flag) { + return flag.split('-').reduce(function(str, word) { + return str + word[0].toUpperCase() + word.slice(1); + }); +} + +/** + * Pad `str` to `width`. + * + * @param {String} str + * @param {Number} width + * @return {String} + * @api private + */ + +function pad(str, width) { + var len = Math.max(0, width - str.length); + return str + Array(len + 1).join(' '); +} + +/** + * Output help information if necessary + * + * @param {Command} command to output help for + * @param {Array} array of options to search for -h or --help + * @api private + */ + +function outputHelpIfNecessary(cmd, options) { + options = options || []; + for (var i = 0; i < options.length; i++) { + if (options[i] === '--help' || options[i] === '-h') { + cmd.outputHelp(); + process.exit(0); + } + } +} + +/** + * Takes an argument an returns its human readable equivalent for help usage. + * + * @param {Object} arg + * @return {String} + * @api private + */ + +function humanReadableArgName(arg) { + var nameOutput = arg.name + (arg.variadic === true ? '...' : ''); + + return arg.required + ? '<' + nameOutput + '>' + : '[' + nameOutput + ']'; +} + +// for versions before node v0.8 when there weren't `fs.existsSync` +function exists(file) { + try { + if (fs.statSync(file).isFile()) { + return true; + } + } catch (e) { + return false; + } +} diff --git a/tic-tac-toe-app/node_modules/commander/package.json b/tic-tac-toe-app/node_modules/commander/package.json new file mode 100644 index 0000000..7147a80 --- /dev/null +++ b/tic-tac-toe-app/node_modules/commander/package.json @@ -0,0 +1,70 @@ +{ + "_from": "commander@^2.11.0", + "_id": "commander@2.20.3", + "_inBundle": false, + "_integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "_location": "/commander", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "commander@^2.11.0", + "name": "commander", + "escapedName": "commander", + "rawSpec": "^2.11.0", + "saveSpec": null, + "fetchSpec": "^2.11.0" + }, + "_requiredBy": [ + "/aria-query" + ], + "_resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "_shasum": "fd485e84c03eb4881c20722ba48035e8531aeb33", + "_spec": "commander@^2.11.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/aria-query", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "bugs": { + "url": "https://github.com/tj/commander.js/issues" + }, + "bundleDependencies": false, + "dependencies": {}, + "deprecated": false, + "description": "the complete solution for node.js command-line programs", + "devDependencies": { + "@types/node": "^12.7.8", + "eslint": "^6.4.0", + "should": "^13.2.3", + "sinon": "^7.5.0", + "standard": "^14.3.1", + "ts-node": "^8.4.1", + "typescript": "^3.6.3" + }, + "files": [ + "index.js", + "typings/index.d.ts" + ], + "homepage": "https://github.com/tj/commander.js#readme", + "keywords": [ + "commander", + "command", + "option", + "parser" + ], + "license": "MIT", + "main": "index", + "name": "commander", + "repository": { + "type": "git", + "url": "git+https://github.com/tj/commander.js.git" + }, + "scripts": { + "lint": "eslint index.js", + "test": "node test/run.js && npm run test-typings", + "test-typings": "tsc -p tsconfig.json" + }, + "typings": "typings/index.d.ts", + "version": "2.20.3" +} diff --git a/tic-tac-toe-app/node_modules/commander/typings/index.d.ts b/tic-tac-toe-app/node_modules/commander/typings/index.d.ts new file mode 100644 index 0000000..bcda277 --- /dev/null +++ b/tic-tac-toe-app/node_modules/commander/typings/index.d.ts @@ -0,0 +1,310 @@ +// Type definitions for commander 2.11 +// Project: https://github.com/visionmedia/commander.js +// Definitions by: Alan Agius , Marcelo Dezem , vvakame , Jules Randolph +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare namespace local { + + class Option { + flags: string; + required: boolean; + optional: boolean; + bool: boolean; + short?: string; + long: string; + description: string; + + /** + * Initialize a new `Option` with the given `flags` and `description`. + * + * @param {string} flags + * @param {string} [description] + */ + constructor(flags: string, description?: string); + } + + class Command extends NodeJS.EventEmitter { + [key: string]: any; + + args: string[]; + + /** + * Initialize a new `Command`. + * + * @param {string} [name] + */ + constructor(name?: string); + + /** + * Set the program version to `str`. + * + * This method auto-registers the "-V, --version" flag + * which will print the version number when passed. + * + * @param {string} str + * @param {string} [flags] + * @returns {Command} for chaining + */ + version(str: string, flags?: string): Command; + + /** + * Add command `name`. + * + * The `.action()` callback is invoked when the + * command `name` is specified via __ARGV__, + * and the remaining arguments are applied to the + * function for access. + * + * When the `name` is "*" an un-matched command + * will be passed as the first arg, followed by + * the rest of __ARGV__ remaining. + * + * @example + * program + * .version('0.0.1') + * .option('-C, --chdir ', 'change the working directory') + * .option('-c, --config ', 'set config path. defaults to ./deploy.conf') + * .option('-T, --no-tests', 'ignore test hook') + * + * program + * .command('setup') + * .description('run remote setup commands') + * .action(function() { + * console.log('setup'); + * }); + * + * program + * .command('exec ') + * .description('run the given remote command') + * .action(function(cmd) { + * console.log('exec "%s"', cmd); + * }); + * + * program + * .command('teardown [otherDirs...]') + * .description('run teardown commands') + * .action(function(dir, otherDirs) { + * console.log('dir "%s"', dir); + * if (otherDirs) { + * otherDirs.forEach(function (oDir) { + * console.log('dir "%s"', oDir); + * }); + * } + * }); + * + * program + * .command('*') + * .description('deploy the given env') + * .action(function(env) { + * console.log('deploying "%s"', env); + * }); + * + * program.parse(process.argv); + * + * @param {string} name + * @param {string} [desc] for git-style sub-commands + * @param {CommandOptions} [opts] command options + * @returns {Command} the new command + */ + command(name: string, desc?: string, opts?: commander.CommandOptions): Command; + + /** + * Define argument syntax for the top-level command. + * + * @param {string} desc + * @returns {Command} for chaining + */ + arguments(desc: string): Command; + + /** + * Parse expected `args`. + * + * For example `["[type]"]` becomes `[{ required: false, name: 'type' }]`. + * + * @param {string[]} args + * @returns {Command} for chaining + */ + parseExpectedArgs(args: string[]): Command; + + /** + * Register callback `fn` for the command. + * + * @example + * program + * .command('help') + * .description('display verbose help') + * .action(function() { + * // output help here + * }); + * + * @param {(...args: any[]) => void} fn + * @returns {Command} for chaining + */ + action(fn: (...args: any[]) => void): Command; + + /** + * Define option with `flags`, `description` and optional + * coercion `fn`. + * + * The `flags` string should contain both the short and long flags, + * separated by comma, a pipe or space. The following are all valid + * all will output this way when `--help` is used. + * + * "-p, --pepper" + * "-p|--pepper" + * "-p --pepper" + * + * @example + * // simple boolean defaulting to false + * program.option('-p, --pepper', 'add pepper'); + * + * --pepper + * program.pepper + * // => Boolean + * + * // simple boolean defaulting to true + * program.option('-C, --no-cheese', 'remove cheese'); + * + * program.cheese + * // => true + * + * --no-cheese + * program.cheese + * // => false + * + * // required argument + * program.option('-C, --chdir ', 'change the working directory'); + * + * --chdir /tmp + * program.chdir + * // => "/tmp" + * + * // optional argument + * program.option('-c, --cheese [type]', 'add cheese [marble]'); + * + * @param {string} flags + * @param {string} [description] + * @param {((arg1: any, arg2: any) => void) | RegExp} [fn] function or default + * @param {*} [defaultValue] + * @returns {Command} for chaining + */ + option(flags: string, description?: string, fn?: ((arg1: any, arg2: any) => void) | RegExp, defaultValue?: any): Command; + option(flags: string, description?: string, defaultValue?: any): Command; + + /** + * Allow unknown options on the command line. + * + * @param {boolean} [arg] if `true` or omitted, no error will be thrown for unknown options. + * @returns {Command} for chaining + */ + allowUnknownOption(arg?: boolean): Command; + + /** + * Parse `argv`, settings options and invoking commands when defined. + * + * @param {string[]} argv + * @returns {Command} for chaining + */ + parse(argv: string[]): Command; + + /** + * Parse options from `argv` returning `argv` void of these options. + * + * @param {string[]} argv + * @returns {ParseOptionsResult} + */ + parseOptions(argv: string[]): commander.ParseOptionsResult; + + /** + * Return an object containing options as key-value pairs + * + * @returns {{[key: string]: any}} + */ + opts(): { [key: string]: any }; + + /** + * Set the description to `str`. + * + * @param {string} str + * @param {{[argName: string]: string}} argsDescription + * @return {(Command | string)} + */ + description(str: string, argsDescription?: {[argName: string]: string}): Command; + description(): string; + + /** + * Set an alias for the command. + * + * @param {string} alias + * @return {(Command | string)} + */ + alias(alias: string): Command; + alias(): string; + + /** + * Set or get the command usage. + * + * @param {string} str + * @return {(Command | string)} + */ + usage(str: string): Command; + usage(): string; + + /** + * Set the name of the command. + * + * @param {string} str + * @return {Command} + */ + name(str: string): Command; + + /** + * Get the name of the command. + * + * @return {string} + */ + name(): string; + + /** + * Output help information for this command. + * + * @param {(str: string) => string} [cb] + */ + outputHelp(cb?: (str: string) => string): void; + + /** Output help information and exit. + * + * @param {(str: string) => string} [cb] + */ + help(cb?: (str: string) => string): never; + } + +} + +declare namespace commander { + + type Command = local.Command + + type Option = local.Option + + interface CommandOptions { + noHelp?: boolean; + isDefault?: boolean; + } + + interface ParseOptionsResult { + args: string[]; + unknown: string[]; + } + + interface CommanderStatic extends Command { + Command: typeof local.Command; + Option: typeof local.Option; + CommandOptions: CommandOptions; + ParseOptionsResult: ParseOptionsResult; + } + +} + +declare const commander: commander.CommanderStatic; +export = commander; diff --git a/tic-tac-toe-app/node_modules/compressible/HISTORY.md b/tic-tac-toe-app/node_modules/compressible/HISTORY.md new file mode 100644 index 0000000..f204ef3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/compressible/HISTORY.md @@ -0,0 +1,111 @@ +2.0.18 / 2020-01-05 +=================== + + * deps: mime-db@'>= 1.43.0 < 2' + - Mark `font/ttf` as compressible + - Remove compressible from `multipart/mixed` + +2.0.17 / 2019-04-24 +=================== + + * deps: mime-db@'>= 1.40.0 < 2' + +2.0.16 / 2019-02-18 +=================== + + * deps: mime-db@'>= 1.38.0 < 2' + - Mark `text/less` as compressible + +2.0.15 / 2018-09-17 +=================== + + * deps: mime-db@'>= 1.36.0 < 2' + +2.0.14 / 2018-06-05 +=================== + + * deps: mime-db@'>= 1.34.0 < 2' + - Mark all XML-derived types as compressible + +2.0.13 / 2018-02-17 +=================== + + * deps: mime-db@'>= 1.33.0 < 2' + +2.0.12 / 2017-10-20 +=================== + + * deps: mime-db@'>= 1.30.0 < 2' + +2.0.11 / 2017-07-27 +=================== + + * deps: mime-db@'>= 1.29.0 < 2' + +2.0.10 / 2017-03-23 +=================== + + * deps: mime-db@'>= 1.27.0 < 2' + +2.0.9 / 2016-10-31 +================== + + * Fix regex fallback to not override `compressible: false` in db + * deps: mime-db@'>= 1.24.0 < 2' + +2.0.8 / 2016-05-12 +================== + + * deps: mime-db@'>= 1.23.0 < 2' + +2.0.7 / 2016-01-18 +================== + + * deps: mime-db@'>= 1.21.0 < 2' + +2.0.6 / 2015-09-29 +================== + + * deps: mime-db@'>= 1.19.0 < 2' + +2.0.5 / 2015-07-30 +================== + + * deps: mime-db@'>= 1.16.0 < 2' + +2.0.4 / 2015-07-01 +================== + + * deps: mime-db@'>= 1.14.0 < 2' + * perf: enable strict mode + +2.0.3 / 2015-06-08 +================== + + * Fix regex fallback to work if type exists, but is undefined + * perf: hoist regex declaration + * perf: use regex to extract mime + * deps: mime-db@'>= 1.13.0 < 2' + +2.0.2 / 2015-01-31 +================== + + * deps: mime-db@'>= 1.1.2 < 2' + +2.0.1 / 2014-09-28 +================== + + * deps: mime-db@1.x + - Add new mime types + - Add additional compressible + - Update charsets + + +2.0.0 / 2014-09-02 +================== + + * use mime-db + * remove .get() + * specifications are now private + * regex is now private + * stricter regex diff --git a/tic-tac-toe-app/node_modules/compressible/LICENSE b/tic-tac-toe-app/node_modules/compressible/LICENSE new file mode 100644 index 0000000..ce00b3f --- /dev/null +++ b/tic-tac-toe-app/node_modules/compressible/LICENSE @@ -0,0 +1,24 @@ +(The MIT License) + +Copyright (c) 2013 Jonathan Ong +Copyright (c) 2014 Jeremiah Senkpiel +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/compressible/README.md b/tic-tac-toe-app/node_modules/compressible/README.md new file mode 100644 index 0000000..dc86ec0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/compressible/README.md @@ -0,0 +1,61 @@ +# compressible + +[![NPM Version][npm-version-image]][npm-url] +[![NPM Downloads][npm-downloads-image]][npm-url] +[![Node.js Version][node-version-image]][node-version-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Compressible `Content-Type` / `mime` checking. + +## Installation + +```sh +$ npm install compressible +``` + +## API + + + +```js +var compressible = require('compressible') +``` + +### compressible(type) + +Checks if the given `Content-Type` is compressible. The `type` argument is expected +to be a value MIME type or `Content-Type` string, though no validation is performed. + +The MIME is looked up in the [`mime-db`](https://www.npmjs.com/package/mime-db) and +if there is compressible information in the database entry, that is returned. Otherwise, +this module will fallback to `true` for the following types: + + * `text/*` + * `*/*+json` + * `*/*+text` + * `*/*+xml` + +If this module is not sure if a type is specifically compressible or specifically +uncompressible, `undefined` is returned. + + + +```js +compressible('text/html') // => true +compressible('image/png') // => false +``` + +## License + +[MIT](LICENSE) + +[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/compressible/master +[coveralls-url]: https://coveralls.io/r/jshttp/compressible?branch=master +[node-version-image]: https://badgen.net/npm/node/compressible +[node-version-url]: https://nodejs.org/en/download +[npm-downloads-image]: https://badgen.net/npm/dm/compressible +[npm-url]: https://npmjs.org/package/compressible +[npm-version-image]: https://badgen.net/npm/v/compressible +[travis-image]: https://badgen.net/travis/jshttp/compressible/master +[travis-url]: https://travis-ci.org/jshttp/compressible diff --git a/tic-tac-toe-app/node_modules/compressible/index.js b/tic-tac-toe-app/node_modules/compressible/index.js new file mode 100644 index 0000000..1184ada --- /dev/null +++ b/tic-tac-toe-app/node_modules/compressible/index.js @@ -0,0 +1,58 @@ +/*! + * compressible + * Copyright(c) 2013 Jonathan Ong + * Copyright(c) 2014 Jeremiah Senkpiel + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var db = require('mime-db') + +/** + * Module variables. + * @private + */ + +var COMPRESSIBLE_TYPE_REGEXP = /^text\/|\+(?:json|text|xml)$/i +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ + +/** + * Module exports. + * @public + */ + +module.exports = compressible + +/** + * Checks if a type is compressible. + * + * @param {string} type + * @return {Boolean} compressible + * @public + */ + +function compressible (type) { + if (!type || typeof type !== 'string') { + return false + } + + // strip parameters + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && match[1].toLowerCase() + var data = db[mime] + + // return database information + if (data && data.compressible !== undefined) { + return data.compressible + } + + // fallback to regexp or unknown + return COMPRESSIBLE_TYPE_REGEXP.test(mime) || undefined +} diff --git a/tic-tac-toe-app/node_modules/compressible/package.json b/tic-tac-toe-app/node_modules/compressible/package.json new file mode 100644 index 0000000..71b419a --- /dev/null +++ b/tic-tac-toe-app/node_modules/compressible/package.json @@ -0,0 +1,91 @@ +{ + "_from": "compressible@~2.0.14", + "_id": "compressible@2.0.18", + "_inBundle": false, + "_integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "_location": "/compressible", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "compressible@~2.0.14", + "name": "compressible", + "escapedName": "compressible", + "rawSpec": "~2.0.14", + "saveSpec": null, + "fetchSpec": "~2.0.14" + }, + "_requiredBy": [ + "/compression" + ], + "_resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "_shasum": "af53cca6b070d4c3c0750fbd77286a6d7cc46fba", + "_spec": "compressible@~2.0.14", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/compression", + "bugs": { + "url": "https://github.com/jshttp/compressible/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + }, + { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com" + }, + { + "name": "Jeremiah Senkpiel", + "email": "fishrock123@rocketmail.com", + "url": "https://searchbeam.jit.su" + } + ], + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "deprecated": false, + "description": "Compressible Content-Type / mime checking", + "devDependencies": { + "eslint": "6.8.0", + "eslint-config-standard": "14.1.0", + "eslint-plugin-import": "2.19.1", + "eslint-plugin-markdown": "1.0.1", + "eslint-plugin-node": "11.0.0", + "eslint-plugin-promise": "4.2.1", + "eslint-plugin-standard": "4.0.1", + "mocha": "7.0.0", + "nyc": "15.0.0" + }, + "engines": { + "node": ">= 0.6" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "index.js" + ], + "homepage": "https://github.com/jshttp/compressible#readme", + "keywords": [ + "compress", + "gzip", + "mime", + "content-type" + ], + "license": "MIT", + "name": "compressible", + "repository": { + "type": "git", + "url": "git+https://github.com/jshttp/compressible.git" + }, + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "test-travis": "nyc --reporter=text npm test", + "version": "node scripts/version-history.js && git add HISTORY.md" + }, + "version": "2.0.18" +} diff --git a/tic-tac-toe-app/node_modules/compression/HISTORY.md b/tic-tac-toe-app/node_modules/compression/HISTORY.md new file mode 100644 index 0000000..69188fc --- /dev/null +++ b/tic-tac-toe-app/node_modules/compression/HISTORY.md @@ -0,0 +1,297 @@ +1.7.3 / 2018-07-15 +================== + + * deps: accepts@~1.3.5 + - deps: mime-types@~2.1.18 + * deps: compressible@~2.0.14 + - Mark all XML-derived types as compressible + - deps: mime-db@'>= 1.34.0 < 2' + * deps: safe-buffer@5.1.2 + +1.7.2 / 2018-02-18 +================== + + * deps: compressible@~2.0.13 + - deps: mime-db@'>= 1.33.0 < 2' + +1.7.1 / 2017-09-26 +================== + + * deps: accepts@~1.3.4 + - deps: mime-types@~2.1.16 + * deps: bytes@3.0.0 + * deps: compressible@~2.0.11 + - deps: mime-db@'>= 1.29.0 < 2' + * deps: debug@2.6.9 + * deps: vary@~1.1.2 + - perf: improve header token parsing speed + +1.7.0 / 2017-07-10 +================== + + * Use `safe-buffer` for improved Buffer API + * deps: bytes@2.5.0 + * deps: compressible@~2.0.10 + - Fix regex fallback to not override `compressible: false` in db + - deps: mime-db@'>= 1.27.0 < 2' + * deps: debug@2.6.8 + - Allow colors in workers + - Deprecated `DEBUG_FD` environment variable set to `3` or higher + - Fix error when running under React Native + - Fix `DEBUG_MAX_ARRAY_LENGTH` + - Use same color for same namespace + - deps: ms@2.0.0 + * deps: vary@~1.1.1 + - perf: hoist regular expression + +1.6.2 / 2016-05-12 +================== + + * deps: accepts@~1.3.3 + - deps: mime-types@~2.1.11 + - deps: negotiator@0.6.1 + * deps: bytes@2.3.0 + - Drop partial bytes on all parsed units + - Fix parsing byte string that looks like hex + - perf: hoist regular expressions + * deps: compressible@~2.0.8 + - deps: mime-db@'>= 1.23.0 < 2' + +1.6.1 / 2016-01-19 +================== + + * deps: bytes@2.2.0 + * deps: compressible@~2.0.7 + - deps: mime-db@'>= 1.21.0 < 2' + * deps: accepts@~1.3.1 + - deps: mime-types@~2.1.9 + +1.6.0 / 2015-09-29 +================== + + * Skip compression when response has `Cache-Control: no-transform` + * deps: accepts@~1.3.0 + - deps: mime-types@~2.1.7 + - deps: negotiator@0.6.0 + * deps: compressible@~2.0.6 + - deps: mime-db@'>= 1.19.0 < 2' + * deps: on-headers@~1.0.1 + - perf: enable strict mode + * deps: vary@~1.1.0 + - Only accept valid field names in the `field` argument + +1.5.2 / 2015-07-30 +================== + + * deps: accepts@~1.2.12 + - deps: mime-types@~2.1.4 + * deps: compressible@~2.0.5 + - deps: mime-db@'>= 1.16.0 < 2' + * deps: vary@~1.0.1 + - Fix setting empty header from empty `field` + - perf: enable strict mode + - perf: remove argument reassignments + +1.5.1 / 2015-07-05 +================== + + * deps: accepts@~1.2.10 + - deps: mime-types@~2.1.2 + * deps: compressible@~2.0.4 + - deps: mime-db@'>= 1.14.0 < 2' + - perf: enable strict mode + +1.5.0 / 2015-06-09 +================== + + * Fix return value from `.end` and `.write` after end + * Improve detection of zero-length body without `Content-Length` + * deps: accepts@~1.2.9 + - deps: mime-types@~2.1.1 + - perf: avoid argument reassignment & argument slice + - perf: avoid negotiator recursive construction + - perf: enable strict mode + - perf: remove unnecessary bitwise operator + * deps: bytes@2.1.0 + - Slight optimizations + - Units no longer case sensitive when parsing + * deps: compressible@~2.0.3 + - Fix regex fallback to work if type exists, but is undefined + - deps: mime-db@'>= 1.13.0 < 2' + - perf: hoist regex declaration + - perf: use regex to extract mime + * perf: enable strict mode + * perf: remove flush reassignment + * perf: simplify threshold detection + +1.4.4 / 2015-05-11 +================== + + * deps: accepts@~1.2.7 + - deps: mime-types@~2.0.11 + - deps: negotiator@0.5.3 + * deps: debug@~2.2.0 + - deps: ms@0.7.1 + +1.4.3 / 2015-03-14 +================== + + * deps: accepts@~1.2.5 + - deps: mime-types@~2.0.10 + * deps: debug@~2.1.3 + - Fix high intensity foreground color for bold + - deps: ms@0.7.0 + +1.4.2 / 2015-03-11 +================== + + * Fix error when code calls `res.end(str, encoding)` + - Specific to Node.js 0.8 + * deps: debug@~2.1.2 + - deps: ms@0.7.0 + +1.4.1 / 2015-02-15 +================== + + * deps: accepts@~1.2.4 + - deps: mime-types@~2.0.9 + - deps: negotiator@0.5.1 + +1.4.0 / 2015-02-01 +================== + + * Prefer `gzip` over `deflate` on the server + - Not all clients agree on what "deflate" coding means + +1.3.1 / 2015-01-31 +================== + + * deps: accepts@~1.2.3 + - deps: mime-types@~2.0.8 + * deps: compressible@~2.0.2 + - deps: mime-db@'>= 1.1.2 < 2' + +1.3.0 / 2014-12-30 +================== + + * Export the default `filter` function for wrapping + * deps: accepts@~1.2.2 + - deps: mime-types@~2.0.7 + - deps: negotiator@0.5.0 + * deps: debug@~2.1.1 + +1.2.2 / 2014-12-10 +================== + + * Fix `.end` to only proxy to `.end` + - Fixes an issue with Node.js 0.11.14 + * deps: accepts@~1.1.4 + - deps: mime-types@~2.0.4 + +1.2.1 / 2014-11-23 +================== + + * deps: accepts@~1.1.3 + - deps: mime-types@~2.0.3 + +1.2.0 / 2014-10-16 +================== + + * deps: debug@~2.1.0 + - Implement `DEBUG_FD` env variable support + +1.1.2 / 2014-10-15 +================== + + * deps: accepts@~1.1.2 + - Fix error when media type has invalid parameter + - deps: negotiator@0.4.9 + +1.1.1 / 2014-10-12 +================== + + * deps: accepts@~1.1.1 + - deps: mime-types@~2.0.2 + - deps: negotiator@0.4.8 + * deps: compressible@~2.0.1 + - deps: mime-db@1.x + +1.1.0 / 2014-09-07 +================== + + * deps: accepts@~1.1.0 + * deps: compressible@~2.0.0 + * deps: debug@~2.0.0 + +1.0.11 / 2014-08-10 +=================== + + * deps: on-headers@~1.0.0 + * deps: vary@~1.0.0 + +1.0.10 / 2014-08-05 +=================== + + * deps: compressible@~1.1.1 + - Fix upper-case Content-Type characters prevent compression + +1.0.9 / 2014-07-20 +================== + + * Add `debug` messages + * deps: accepts@~1.0.7 + - deps: negotiator@0.4.7 + +1.0.8 / 2014-06-20 +================== + + * deps: accepts@~1.0.5 + - use `mime-types` + +1.0.7 / 2014-06-11 +================== + + * use vary module for better `Vary` behavior + * deps: accepts@1.0.3 + * deps: compressible@1.1.0 + +1.0.6 / 2014-06-03 +================== + + * fix regression when negotiation fails + +1.0.5 / 2014-06-03 +================== + + * fix listeners for delayed stream creation + - fixes regression for certain `stream.pipe(res)` situations + +1.0.4 / 2014-06-03 +================== + + * fix adding `Vary` when value stored as array + * fix back-pressure behavior + * fix length check for `res.end` + +1.0.3 / 2014-05-29 +================== + + * use `accepts` for negotiation + * use `on-headers` to handle header checking + * deps: bytes@1.0.0 + +1.0.2 / 2014-04-29 +================== + + * only version compatible with node.js 0.8 + * support headers given to `res.writeHead` + * deps: bytes@0.3.0 + * deps: negotiator@0.4.3 + +1.0.1 / 2014-03-08 +================== + + * bump negotiator + * use compressible + * use .headersSent (drops 0.8 support) + * handle identity;q=0 case diff --git a/tic-tac-toe-app/node_modules/compression/LICENSE b/tic-tac-toe-app/node_modules/compression/LICENSE new file mode 100644 index 0000000..386b7b6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/compression/LICENSE @@ -0,0 +1,23 @@ +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2014-2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/compression/README.md b/tic-tac-toe-app/node_modules/compression/README.md new file mode 100644 index 0000000..8892e5b --- /dev/null +++ b/tic-tac-toe-app/node_modules/compression/README.md @@ -0,0 +1,240 @@ +# compression + +[![NPM Version][npm-image]][npm-url] +[![NPM Downloads][downloads-image]][downloads-url] +[![Build Status][travis-image]][travis-url] +[![Test Coverage][coveralls-image]][coveralls-url] + +Node.js compression middleware. + +The following compression codings are supported: + + - deflate + - gzip + +## Install + +This is a [Node.js](https://nodejs.org/en/) module available through the +[npm registry](https://www.npmjs.com/). Installation is done using the +[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally): + +```bash +$ npm install compression +``` + +## API + + + +```js +var compression = require('compression') +``` + +### compression([options]) + +Returns the compression middleware using the given `options`. The middleware +will attempt to compress response bodies for all request that traverse through +the middleware, based on the given `options`. + +This middleware will never compress responses that include a `Cache-Control` +header with the [`no-transform` directive](https://tools.ietf.org/html/rfc7234#section-5.2.2.4), +as compressing will transform the body. + +#### Options + +`compression()` accepts these properties in the options object. In addition to +those listed below, [zlib](http://nodejs.org/api/zlib.html) options may be +passed in to the options object. + +##### chunkSize + +The default value is `zlib.Z_DEFAULT_CHUNK`, or `16384`. + +See [Node.js documentation](http://nodejs.org/api/zlib.html#zlib_memory_usage_tuning) +regarding the usage. + +##### filter + +A function to decide if the response should be considered for compression. +This function is called as `filter(req, res)` and is expected to return +`true` to consider the response for compression, or `false` to not compress +the response. + +The default filter function uses the [compressible](https://www.npmjs.com/package/compressible) +module to determine if `res.getHeader('Content-Type')` is compressible. + +##### level + +The level of zlib compression to apply to responses. A higher level will result +in better compression, but will take longer to complete. A lower level will +result in less compression, but will be much faster. + +This is an integer in the range of `0` (no compression) to `9` (maximum +compression). The special value `-1` can be used to mean the "default +compression level", which is a default compromise between speed and +compression (currently equivalent to level 6). + + - `-1` Default compression level (also `zlib.Z_DEFAULT_COMPRESSION`). + - `0` No compression (also `zlib.Z_NO_COMPRESSION`). + - `1` Fastest compression (also `zlib.Z_BEST_SPEED`). + - `2` + - `3` + - `4` + - `5` + - `6` (currently what `zlib.Z_DEFAULT_COMPRESSION` points to). + - `7` + - `8` + - `9` Best compression (also `zlib.Z_BEST_COMPRESSION`). + +The default value is `zlib.Z_DEFAULT_COMPRESSION`, or `-1`. + +**Note** in the list above, `zlib` is from `zlib = require('zlib')`. + +##### memLevel + +This specifies how much memory should be allocated for the internal compression +state and is an integer in the range of `1` (minimum level) and `9` (maximum +level). + +The default value is `zlib.Z_DEFAULT_MEMLEVEL`, or `8`. + +See [Node.js documentation](http://nodejs.org/api/zlib.html#zlib_memory_usage_tuning) +regarding the usage. + +##### strategy + +This is used to tune the compression algorithm. This value only affects the +compression ratio, not the correctness of the compressed output, even if it +is not set appropriately. + + - `zlib.Z_DEFAULT_STRATEGY` Use for normal data. + - `zlib.Z_FILTERED` Use for data produced by a filter (or predictor). + Filtered data consists mostly of small values with a somewhat random + distribution. In this case, the compression algorithm is tuned to + compress them better. The effect is to force more Huffman coding and less + string matching; it is somewhat intermediate between `zlib.Z_DEFAULT_STRATEGY` + and `zlib.Z_HUFFMAN_ONLY`. + - `zlib.Z_FIXED` Use to prevent the use of dynamic Huffman codes, allowing + for a simpler decoder for special applications. + - `zlib.Z_HUFFMAN_ONLY` Use to force Huffman encoding only (no string match). + - `zlib.Z_RLE` Use to limit match distances to one (run-length encoding). + This is designed to be almost as fast as `zlib.Z_HUFFMAN_ONLY`, but give + better compression for PNG image data. + +**Note** in the list above, `zlib` is from `zlib = require('zlib')`. + +##### threshold + +The byte threshold for the response body size before compression is considered +for the response, defaults to `1kb`. This is a number of bytes or any string +accepted by the [bytes](https://www.npmjs.com/package/bytes) module. + +**Note** this is only an advisory setting; if the response size cannot be determined +at the time the response headers are written, then it is assumed the response is +_over_ the threshold. To guarantee the response size can be determined, be sure +set a `Content-Length` response header. + +##### windowBits + +The default value is `zlib.Z_DEFAULT_WINDOWBITS`, or `15`. + +See [Node.js documentation](http://nodejs.org/api/zlib.html#zlib_memory_usage_tuning) +regarding the usage. + +#### .filter + +The default `filter` function. This is used to construct a custom filter +function that is an extension of the default function. + +```js +var compression = require('compression') +var express = require('express') + +var app = express() +app.use(compression({filter: shouldCompress})) + +function shouldCompress (req, res) { + if (req.headers['x-no-compression']) { + // don't compress responses with this request header + return false + } + + // fallback to standard filter function + return compression.filter(req, res) +} +``` + +### res.flush + +This module adds a `res.flush()` method to force the partially-compressed +response to be flushed to the client. + +## Examples + +### express/connect + +When using this module with express or connect, simply `app.use` the module as +high as you like. Requests that pass through the middleware will be compressed. + +```js +var compression = require('compression') +var express = require('express') + +var app = express() + +// compress all responses +app.use(compression()) + +// add all routes +``` + +### Server-Sent Events + +Because of the nature of compression this module does not work out of the box +with server-sent events. To compress content, a window of the output needs to +be buffered up in order to get good compression. Typically when using server-sent +events, there are certain block of data that need to reach the client. + +You can achieve this by calling `res.flush()` when you need the data written to +actually make it to the client. + +```js +var compression = require('compression') +var express = require('express') + +var app = express() + +// compress responses +app.use(compression()) + +// server-sent event stream +app.get('/events', function (req, res) { + res.setHeader('Content-Type', 'text/event-stream') + res.setHeader('Cache-Control', 'no-cache') + + // send a ping approx every 2 seconds + var timer = setInterval(function () { + res.write('data: ping\n\n') + + // !!! this is the important part + res.flush() + }, 2000) + + res.on('close', function () { + clearInterval(timer) + }) +}) +``` + +## License + +[MIT](LICENSE) + +[npm-image]: https://img.shields.io/npm/v/compression.svg +[npm-url]: https://npmjs.org/package/compression +[travis-image]: https://img.shields.io/travis/expressjs/compression/master.svg +[travis-url]: https://travis-ci.org/expressjs/compression +[coveralls-image]: https://img.shields.io/coveralls/expressjs/compression/master.svg +[coveralls-url]: https://coveralls.io/r/expressjs/compression?branch=master +[downloads-image]: https://img.shields.io/npm/dm/compression.svg +[downloads-url]: https://npmjs.org/package/compression diff --git a/tic-tac-toe-app/node_modules/compression/index.js b/tic-tac-toe-app/node_modules/compression/index.js new file mode 100644 index 0000000..f190c68 --- /dev/null +++ b/tic-tac-toe-app/node_modules/compression/index.js @@ -0,0 +1,277 @@ +/*! + * compression + * Copyright(c) 2010 Sencha Inc. + * Copyright(c) 2011 TJ Holowaychuk + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2014-2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var accepts = require('accepts') +var Buffer = require('safe-buffer').Buffer +var bytes = require('bytes') +var compressible = require('compressible') +var debug = require('debug')('compression') +var onHeaders = require('on-headers') +var vary = require('vary') +var zlib = require('zlib') + +/** + * Module exports. + */ + +module.exports = compression +module.exports.filter = shouldCompress + +/** + * Module variables. + * @private + */ + +var cacheControlNoTransformRegExp = /(?:^|,)\s*?no-transform\s*?(?:,|$)/ + +/** + * Compress response data with gzip / deflate. + * + * @param {Object} [options] + * @return {Function} middleware + * @public + */ + +function compression (options) { + var opts = options || {} + + // options + var filter = opts.filter || shouldCompress + var threshold = bytes.parse(opts.threshold) + + if (threshold == null) { + threshold = 1024 + } + + return function compression (req, res, next) { + var ended = false + var length + var listeners = [] + var stream + + var _end = res.end + var _on = res.on + var _write = res.write + + // flush + res.flush = function flush () { + if (stream) { + stream.flush() + } + } + + // proxy + + res.write = function write (chunk, encoding) { + if (ended) { + return false + } + + if (!this._header) { + this._implicitHeader() + } + + return stream + ? stream.write(Buffer.from(chunk, encoding)) + : _write.call(this, chunk, encoding) + } + + res.end = function end (chunk, encoding) { + if (ended) { + return false + } + + if (!this._header) { + // estimate the length + if (!this.getHeader('Content-Length')) { + length = chunkLength(chunk, encoding) + } + + this._implicitHeader() + } + + if (!stream) { + return _end.call(this, chunk, encoding) + } + + // mark ended + ended = true + + // write Buffer for Node.js 0.8 + return chunk + ? stream.end(Buffer.from(chunk, encoding)) + : stream.end() + } + + res.on = function on (type, listener) { + if (!listeners || type !== 'drain') { + return _on.call(this, type, listener) + } + + if (stream) { + return stream.on(type, listener) + } + + // buffer listeners for future stream + listeners.push([type, listener]) + + return this + } + + function nocompress (msg) { + debug('no compression: %s', msg) + addListeners(res, _on, listeners) + listeners = null + } + + onHeaders(res, function onResponseHeaders () { + // determine if request is filtered + if (!filter(req, res)) { + nocompress('filtered') + return + } + + // determine if the entity should be transformed + if (!shouldTransform(req, res)) { + nocompress('no transform') + return + } + + // vary + vary(res, 'Accept-Encoding') + + // content-length below threshold + if (Number(res.getHeader('Content-Length')) < threshold || length < threshold) { + nocompress('size below threshold') + return + } + + var encoding = res.getHeader('Content-Encoding') || 'identity' + + // already encoded + if (encoding !== 'identity') { + nocompress('already encoded') + return + } + + // head + if (req.method === 'HEAD') { + nocompress('HEAD request') + return + } + + // compression method + var accept = accepts(req) + var method = accept.encoding(['gzip', 'deflate', 'identity']) + + // we really don't prefer deflate + if (method === 'deflate' && accept.encoding(['gzip'])) { + method = accept.encoding(['gzip', 'identity']) + } + + // negotiation failed + if (!method || method === 'identity') { + nocompress('not acceptable') + return + } + + // compression stream + debug('%s compression', method) + stream = method === 'gzip' + ? zlib.createGzip(opts) + : zlib.createDeflate(opts) + + // add buffered listeners to stream + addListeners(stream, stream.on, listeners) + + // header fields + res.setHeader('Content-Encoding', method) + res.removeHeader('Content-Length') + + // compression + stream.on('data', function onStreamData (chunk) { + if (_write.call(res, chunk) === false) { + stream.pause() + } + }) + + stream.on('end', function onStreamEnd () { + _end.call(res) + }) + + _on.call(res, 'drain', function onResponseDrain () { + stream.resume() + }) + }) + + next() + } +} + +/** + * Add bufferred listeners to stream + * @private + */ + +function addListeners (stream, on, listeners) { + for (var i = 0; i < listeners.length; i++) { + on.apply(stream, listeners[i]) + } +} + +/** + * Get the length of a given chunk + */ + +function chunkLength (chunk, encoding) { + if (!chunk) { + return 0 + } + + return !Buffer.isBuffer(chunk) + ? Buffer.byteLength(chunk, encoding) + : chunk.length +} + +/** + * Default filter function. + * @private + */ + +function shouldCompress (req, res) { + var type = res.getHeader('Content-Type') + + if (type === undefined || !compressible(type)) { + debug('%s not compressible', type) + return false + } + + return true +} + +/** + * Determine if the entity should be transformed. + * @private + */ + +function shouldTransform (req, res) { + var cacheControl = res.getHeader('Cache-Control') + + // Don't compress for Cache-Control: no-transform + // https://tools.ietf.org/html/rfc7234#section-5.2.2.4 + return !cacheControl || + !cacheControlNoTransformRegExp.test(cacheControl) +} diff --git a/tic-tac-toe-app/node_modules/compression/package.json b/tic-tac-toe-app/node_modules/compression/package.json new file mode 100644 index 0000000..3683457 --- /dev/null +++ b/tic-tac-toe-app/node_modules/compression/package.json @@ -0,0 +1,86 @@ +{ + "_from": "compression@1.7.3", + "_id": "compression@1.7.3", + "_inBundle": false, + "_integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "_location": "/compression", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "compression@1.7.3", + "name": "compression", + "escapedName": "compression", + "rawSpec": "1.7.3", + "saveSpec": null, + "fetchSpec": "1.7.3" + }, + "_requiredBy": [ + "/serve" + ], + "_resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "_shasum": "27e0e176aaf260f7f2c2813c3e440adb9f1993db", + "_spec": "compression@1.7.3", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/serve", + "bugs": { + "url": "https://github.com/expressjs/compression/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Douglas Christopher Wilson", + "email": "doug@somethingdoug.com" + }, + { + "name": "Jonathan Ong", + "email": "me@jongleberry.com", + "url": "http://jongleberry.com" + } + ], + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "deprecated": false, + "description": "Node.js compression middleware", + "devDependencies": { + "after": "0.8.2", + "eslint": "4.19.1", + "eslint-config-standard": "11.0.0", + "eslint-plugin-import": "2.13.0", + "eslint-plugin-markdown": "1.0.0-beta.6", + "eslint-plugin-node": "6.0.1", + "eslint-plugin-promise": "3.8.0", + "eslint-plugin-standard": "3.1.0", + "istanbul": "0.4.5", + "mocha": "2.5.3", + "supertest": "1.1.0" + }, + "engines": { + "node": ">= 0.8.0" + }, + "files": [ + "LICENSE", + "HISTORY.md", + "index.js" + ], + "homepage": "https://github.com/expressjs/compression#readme", + "license": "MIT", + "name": "compression", + "repository": { + "type": "git", + "url": "git+https://github.com/expressjs/compression.git" + }, + "scripts": { + "lint": "eslint --plugin markdown --ext js,md .", + "test": "mocha --check-leaks --reporter spec --bail", + "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --check-leaks --reporter dot", + "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --check-leaks --reporter spec" + }, + "version": "1.7.3" +} diff --git a/tic-tac-toe-app/node_modules/concat-map/.travis.yml b/tic-tac-toe-app/node_modules/concat-map/.travis.yml new file mode 100644 index 0000000..f1d0f13 --- /dev/null +++ b/tic-tac-toe-app/node_modules/concat-map/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.4 + - 0.6 diff --git a/tic-tac-toe-app/node_modules/concat-map/LICENSE b/tic-tac-toe-app/node_modules/concat-map/LICENSE new file mode 100644 index 0000000..ee27ba4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/concat-map/LICENSE @@ -0,0 +1,18 @@ +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/concat-map/README.markdown b/tic-tac-toe-app/node_modules/concat-map/README.markdown new file mode 100644 index 0000000..408f70a --- /dev/null +++ b/tic-tac-toe-app/node_modules/concat-map/README.markdown @@ -0,0 +1,62 @@ +concat-map +========== + +Concatenative mapdashery. + +[![browser support](http://ci.testling.com/substack/node-concat-map.png)](http://ci.testling.com/substack/node-concat-map) + +[![build status](https://secure.travis-ci.org/substack/node-concat-map.png)](http://travis-ci.org/substack/node-concat-map) + +example +======= + +``` js +var concatMap = require('concat-map'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); +``` + +*** + +``` +[ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ] +``` + +methods +======= + +``` js +var concatMap = require('concat-map') +``` + +concatMap(xs, fn) +----------------- + +Return an array of concatenated elements by calling `fn(x, i)` for each element +`x` and each index `i` in the array `xs`. + +When `fn(x, i)` returns an array, its result will be concatenated with the +result array. If `fn(x, i)` returns anything else, that value will be pushed +onto the end of the result array. + +install +======= + +With [npm](http://npmjs.org) do: + +``` +npm install concat-map +``` + +license +======= + +MIT + +notes +===== + +This module was written while sitting high above the ground in a tree. diff --git a/tic-tac-toe-app/node_modules/concat-map/example/map.js b/tic-tac-toe-app/node_modules/concat-map/example/map.js new file mode 100644 index 0000000..3365621 --- /dev/null +++ b/tic-tac-toe-app/node_modules/concat-map/example/map.js @@ -0,0 +1,6 @@ +var concatMap = require('../'); +var xs = [ 1, 2, 3, 4, 5, 6 ]; +var ys = concatMap(xs, function (x) { + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; +}); +console.dir(ys); diff --git a/tic-tac-toe-app/node_modules/concat-map/index.js b/tic-tac-toe-app/node_modules/concat-map/index.js new file mode 100644 index 0000000..b29a781 --- /dev/null +++ b/tic-tac-toe-app/node_modules/concat-map/index.js @@ -0,0 +1,13 @@ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; diff --git a/tic-tac-toe-app/node_modules/concat-map/package.json b/tic-tac-toe-app/node_modules/concat-map/package.json new file mode 100644 index 0000000..93e930b --- /dev/null +++ b/tic-tac-toe-app/node_modules/concat-map/package.json @@ -0,0 +1,88 @@ +{ + "_from": "concat-map@0.0.1", + "_id": "concat-map@0.0.1", + "_inBundle": false, + "_integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "_location": "/concat-map", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "concat-map@0.0.1", + "name": "concat-map", + "escapedName": "concat-map", + "rawSpec": "0.0.1", + "saveSpec": null, + "fetchSpec": "0.0.1" + }, + "_requiredBy": [ + "/brace-expansion" + ], + "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b", + "_spec": "concat-map@0.0.1", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/brace-expansion", + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "bugs": { + "url": "https://github.com/substack/node-concat-map/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "concatenative mapdashery", + "devDependencies": { + "tape": "~2.4.0" + }, + "directories": { + "example": "example", + "test": "test" + }, + "homepage": "https://github.com/substack/node-concat-map#readme", + "keywords": [ + "concat", + "concatMap", + "map", + "functional", + "higher-order" + ], + "license": "MIT", + "main": "index.js", + "name": "concat-map", + "repository": { + "type": "git", + "url": "git://github.com/substack/node-concat-map.git" + }, + "scripts": { + "test": "tape test/*.js" + }, + "testling": { + "files": "test/*.js", + "browsers": { + "ie": [ + 6, + 7, + 8, + 9 + ], + "ff": [ + 3.5, + 10, + 15 + ], + "chrome": [ + 10, + 22 + ], + "safari": [ + 5.1 + ], + "opera": [ + 12 + ] + } + }, + "version": "0.0.1" +} diff --git a/tic-tac-toe-app/node_modules/concat-map/test/map.js b/tic-tac-toe-app/node_modules/concat-map/test/map.js new file mode 100644 index 0000000..fdbd702 --- /dev/null +++ b/tic-tac-toe-app/node_modules/concat-map/test/map.js @@ -0,0 +1,39 @@ +var concatMap = require('../'); +var test = require('tape'); + +test('empty or not', function (t) { + var xs = [ 1, 2, 3, 4, 5, 6 ]; + var ixes = []; + var ys = concatMap(xs, function (x, ix) { + ixes.push(ix); + return x % 2 ? [ x - 0.1, x, x + 0.1 ] : []; + }); + t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]); + t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]); + t.end(); +}); + +test('always something', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ]; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('scalars', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function (x) { + return x === 'b' ? [ 'B', 'B', 'B' ] : x; + }); + t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]); + t.end(); +}); + +test('undefs', function (t) { + var xs = [ 'a', 'b', 'c', 'd' ]; + var ys = concatMap(xs, function () {}); + t.same(ys, [ undefined, undefined, undefined, undefined ]); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/confusing-browser-globals/LICENSE b/tic-tac-toe-app/node_modules/confusing-browser-globals/LICENSE new file mode 100644 index 0000000..188fb2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/confusing-browser-globals/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2013-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/confusing-browser-globals/README.md b/tic-tac-toe-app/node_modules/confusing-browser-globals/README.md new file mode 100644 index 0000000..fcc1b64 --- /dev/null +++ b/tic-tac-toe-app/node_modules/confusing-browser-globals/README.md @@ -0,0 +1,45 @@ +# confusing-browser-globals + +A curated list of browser globals that commonly cause confusion and are not recommended to use without an explicit `window.` qualifier. + +## Motivation + +Some global variables in browser are likely to be used by people without the intent of using them as globals, such as `status`, `name`, `event`, etc. + +For example: + +```js +handleClick() { // missing `event` argument + this.setState({ + text: event.target.value // uses the `event` global: oops! + }); +} +``` + +This package exports a list of globals that are often used by mistake. You can feed this list to a static analysis tool like ESLint to prevent their usage without an explicit `window.` qualifier. + +## Installation + +```sh +npm install --save confusing-browser-globals +``` + +## Usage + +If you use Create React App, you don't need to configure anything, as this rule is already included in the default `eslint-config-react-app` preset. + +If you maintain your own ESLint configuration, you can do this: + +```js +var restrictedGlobals = require('confusing-browser-globals'); + +module.exports = { + rules: { + 'no-restricted-globals': ['error'].concat(restrictedGlobals), + }, +}; +``` + +## License + +MIT diff --git a/tic-tac-toe-app/node_modules/confusing-browser-globals/index.js b/tic-tac-toe-app/node_modules/confusing-browser-globals/index.js new file mode 100644 index 0000000..98bf349 --- /dev/null +++ b/tic-tac-toe-app/node_modules/confusing-browser-globals/index.js @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2015-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +'use strict'; + +module.exports = [ + 'addEventListener', + 'blur', + 'close', + 'closed', + 'confirm', + 'defaultStatus', + 'defaultstatus', + 'event', + 'external', + 'find', + 'focus', + 'frameElement', + 'frames', + 'history', + 'innerHeight', + 'innerWidth', + 'length', + 'location', + 'locationbar', + 'menubar', + 'moveBy', + 'moveTo', + 'name', + 'onblur', + 'onerror', + 'onfocus', + 'onload', + 'onresize', + 'onunload', + 'open', + 'opener', + 'opera', + 'outerHeight', + 'outerWidth', + 'pageXOffset', + 'pageYOffset', + 'parent', + 'print', + 'removeEventListener', + 'resizeBy', + 'resizeTo', + 'screen', + 'screenLeft', + 'screenTop', + 'screenX', + 'screenY', + 'scroll', + 'scrollbars', + 'scrollBy', + 'scrollTo', + 'scrollX', + 'scrollY', + 'self', + 'status', + 'statusbar', + 'stop', + 'toolbar', + 'top', +]; diff --git a/tic-tac-toe-app/node_modules/confusing-browser-globals/package.json b/tic-tac-toe-app/node_modules/confusing-browser-globals/package.json new file mode 100644 index 0000000..d6d0623 --- /dev/null +++ b/tic-tac-toe-app/node_modules/confusing-browser-globals/package.json @@ -0,0 +1,55 @@ +{ + "_from": "confusing-browser-globals@^1.0.9", + "_id": "confusing-browser-globals@1.0.9", + "_inBundle": false, + "_integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "_location": "/confusing-browser-globals", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "confusing-browser-globals@^1.0.9", + "name": "confusing-browser-globals", + "escapedName": "confusing-browser-globals", + "rawSpec": "^1.0.9", + "saveSpec": null, + "fetchSpec": "^1.0.9" + }, + "_requiredBy": [ + "/eslint-config-airbnb-base" + ], + "_resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "_shasum": "72bc13b483c0276801681871d4898516f8f54fdd", + "_spec": "confusing-browser-globals@^1.0.9", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint-config-airbnb-base", + "bugs": { + "url": "https://github.com/facebook/create-react-app/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "A list of browser globals that are often used by mistake instead of local variables", + "devDependencies": { + "jest": "24.9.0" + }, + "files": [ + "index.js" + ], + "gitHead": "a825e8f5e3b7ecd84a0bcef61bbc26eb4e8fd9c3", + "homepage": "https://github.com/facebook/create-react-app#readme", + "keywords": [ + "eslint", + "globals" + ], + "license": "MIT", + "main": "index.js", + "name": "confusing-browser-globals", + "repository": { + "type": "git", + "url": "git+https://github.com/facebook/create-react-app.git", + "directory": "packages/confusing-browser-globals" + }, + "scripts": { + "test": "jest" + }, + "version": "1.0.9" +} diff --git a/tic-tac-toe-app/node_modules/contains-path/LICENSE b/tic-tac-toe-app/node_modules/contains-path/LICENSE new file mode 100644 index 0000000..65f90ac --- /dev/null +++ b/tic-tac-toe-app/node_modules/contains-path/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015, Jon Schlinkert. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/contains-path/README.md b/tic-tac-toe-app/node_modules/contains-path/README.md new file mode 100644 index 0000000..d1f6ef3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/contains-path/README.md @@ -0,0 +1,83 @@ +# contains-path [![NPM version](https://badge.fury.io/js/contains-path.svg)](http://badge.fury.io/js/contains-path) + +> Return true if a file path contains the given path. + +## Install + +Install with [npm](https://www.npmjs.com/) + +```sh +$ npm i contains-path --save +``` + +## Usage + +```js +var contains = require('contains-path'); +``` + +**true** + +All of the following return `true`: + +```js +containsPath('./a/b/c', 'a'); +containsPath('./a/b/c', 'a/b'); +containsPath('./b/a/b/c', 'a/b'); +containsPath('/a/b/c', '/a/b'); +containsPath('/a/b/c', 'a/b'); +containsPath('a', 'a'); +containsPath('a/b/c', 'a'); +//=> true +``` + +**false** + +All of the following return `false`: + +```js +containsPath('abc', 'a'); +containsPath('abc', 'a.md'); +containsPath('./b/a/b/c', './a/b'); +containsPath('./b/a/b/c', './a'); +containsPath('./b/a/b/c', '/a/b'); +containsPath('/b/a/b/c', '/a/b'); +//=> false +``` + +## Related projects + +* [ends-with](https://github.com/jonschlinkert/ends-with): Returns `true` if the given `string` or `array` ends with `suffix` using strict equality for… [more](https://github.com/jonschlinkert/ends-with) +* [is-absolute](https://github.com/jonschlinkert/is-absolute): Return true if a file path is absolute. +* [is-relative](https://github.com/jonschlinkert/is-relative): Returns `true` if the path appears to be relative. +* [path-ends-with](https://github.com/jonschlinkert/path-ends-with): Return `true` if a file path ends with the given string/suffix. +* [path-segments](https://github.com/jonschlinkert/path-segments): Get n specific segments of a file path, e.g. first 2, last 3, etc. +* [parse-filepath](https://github.com/jonschlinkert/parse-filepath): Parse a filepath into an object, yielding predictable results for basename and extname. + +## Running tests + +Install dev dependencies: + +```sh +$ npm i -d && npm test +``` + +## Contributing + +Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/contains-path/issues/new) + +## Author + +**Jon Schlinkert** + ++ [github/jonschlinkert](https://github.com/jonschlinkert) ++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert) + +## License + +Copyright © 2015 Jon Schlinkert +Released under the MIT license. + +*** + +_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on July 07, 2015._ \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/contains-path/index.js b/tic-tac-toe-app/node_modules/contains-path/index.js new file mode 100644 index 0000000..24285f6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/contains-path/index.js @@ -0,0 +1,33 @@ +'use strict'; + +var path = require('path'); + +function containsPath(fp, segment) { + if (typeof fp !== 'string' || typeof segment !== 'string') { + throw new TypeError('contains-path expects file paths to be a string.'); + } + + var prefix = '(^|\\/)'; + if (segment.indexOf('./') === 0 || segment.charAt(0) === '/') { + prefix = '^'; + } + + var re = new RegExp(prefix + normalize(segment).join('\\/') + '($|\\/)'); + fp = normalize(fp).join('/'); + return re.test(fp); +} + +/** + * Normalize slashes + */ + +function normalize(str) { + str = path.normalize(str); + return str.split(/[\\\/]+/); +} + +/** + * Expose `containsPath` + */ + +module.exports = containsPath; diff --git a/tic-tac-toe-app/node_modules/contains-path/package.json b/tic-tac-toe-app/node_modules/contains-path/package.json new file mode 100644 index 0000000..e48f97a --- /dev/null +++ b/tic-tac-toe-app/node_modules/contains-path/package.json @@ -0,0 +1,86 @@ +{ + "_from": "contains-path@^0.1.0", + "_id": "contains-path@0.1.0", + "_inBundle": false, + "_integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "_location": "/contains-path", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "contains-path@^0.1.0", + "name": "contains-path", + "escapedName": "contains-path", + "rawSpec": "^0.1.0", + "saveSpec": null, + "fetchSpec": "^0.1.0" + }, + "_requiredBy": [ + "/eslint-plugin-import" + ], + "_resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "_shasum": "fe8cf184ff6670b6baef01a9d4861a5cbec4120a", + "_spec": "contains-path@^0.1.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint-plugin-import", + "author": { + "name": "Jon Schlinkert", + "url": "https://github.com/jonschlinkert" + }, + "bugs": { + "url": "https://github.com/jonschlinkert/contains-path/issues" + }, + "bundleDependencies": false, + "dependencies": {}, + "deprecated": false, + "description": "Return true if a file path contains the given path.", + "devDependencies": { + "mocha": "*" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/jonschlinkert/contains-path", + "keywords": [ + "contains", + "directory", + "dirname", + "exec", + "ext", + "extname", + "file", + "filepath", + "fp", + "has", + "match", + "matches", + "path", + "regex", + "test" + ], + "license": "MIT", + "main": "index.js", + "name": "contains-path", + "repository": { + "type": "git", + "url": "git+https://github.com/jonschlinkert/contains-path.git" + }, + "scripts": { + "test": "mocha" + }, + "verb": { + "related": { + "list": [ + "ends-with", + "path-ends-with", + "path-segments", + "is-absolute", + "is-relative", + "parse-filepath" + ] + } + }, + "version": "0.1.0" +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/README.md b/tic-tac-toe-app/node_modules/core-js-pure/features/README.md new file mode 100644 index 0000000..62c88a0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/README.md @@ -0,0 +1 @@ +This folder contains entry points for all `core-js` features with dependencies. It's the recommended way for usage only required features. diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/aggregate-error.js b/tic-tac-toe-app/node_modules/core-js-pure/features/aggregate-error.js new file mode 100644 index 0000000..65d8afd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/aggregate-error.js @@ -0,0 +1,6 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); +require('../modules/esnext.aggregate-error'); +var path = require('../internals/path'); + +module.exports = path.AggregateError; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/constructor.js new file mode 100644 index 0000000..14f239d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/constructor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer/constructor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/index.js new file mode 100644 index 0000000..cb81bbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/is-view.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/is-view.js new file mode 100644 index 0000000..02091ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/is-view.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer/is-view'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/slice.js new file mode 100644 index 0000000..1259ebf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array-buffer/slice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer/slice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/concat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/concat.js new file mode 100644 index 0000000..56c0625 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/concat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/concat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/copy-within.js new file mode 100644 index 0000000..3db5361 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/copy-within.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/copy-within'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/entries.js new file mode 100644 index 0000000..735b607 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/entries.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/entries'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/every.js new file mode 100644 index 0000000..8831dbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/every.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/every'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/fill.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/fill.js new file mode 100644 index 0000000..b640ccd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/fill.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/fill'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/filter.js new file mode 100644 index 0000000..c6fe56a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/filter.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/filter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/find-index.js new file mode 100644 index 0000000..312a7df --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/find-index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/find-index'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/find.js new file mode 100644 index 0000000..2fc46a5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/find.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/find'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/flat-map.js new file mode 100644 index 0000000..8e3e81a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/flat-map.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/flat-map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/flat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/flat.js new file mode 100644 index 0000000..f74816e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/flat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/flat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/for-each.js new file mode 100644 index 0000000..a99f12c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/for-each.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/for-each'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/from.js new file mode 100644 index 0000000..9142d6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/from.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/from'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/includes.js new file mode 100644 index 0000000..52f040d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/includes.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/includes'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/index-of.js new file mode 100644 index 0000000..13b63f1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/index.js new file mode 100644 index 0000000..213822e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/index.js @@ -0,0 +1,6 @@ +var parent = require('../../es/array'); +require('../../modules/esnext.array.is-template-object'); +require('../../modules/esnext.array.last-item'); +require('../../modules/esnext.array.last-index'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/is-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/is-array.js new file mode 100644 index 0000000..89080ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/is-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/is-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/is-template-object.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/is-template-object.js new file mode 100644 index 0000000..f5eaf81 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/is-template-object.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.array.is-template-object'); +var path = require('../../internals/path'); + +module.exports = path.Array.isTemplateObject; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/iterator.js new file mode 100644 index 0000000..bfa833f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/join.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/join.js new file mode 100644 index 0000000..74fbfc6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/join.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/join'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/keys.js new file mode 100644 index 0000000..40b2e75 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/keys.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/keys'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index-of.js new file mode 100644 index 0000000..bdcd762 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/last-index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index.js new file mode 100644 index 0000000..230cea0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-index.js @@ -0,0 +1 @@ +require('../../modules/esnext.array.last-index'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-item.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-item.js new file mode 100644 index 0000000..5a4b25b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/last-item.js @@ -0,0 +1 @@ +require('../../modules/esnext.array.last-item'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/map.js new file mode 100644 index 0000000..3768704 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/map.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/of.js new file mode 100644 index 0000000..d5b74f1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce-right.js new file mode 100644 index 0000000..f93b6de --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce-right.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/reduce-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce.js new file mode 100644 index 0000000..a3ae7b1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/reduce.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/reduce'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/reverse.js new file mode 100644 index 0000000..fc9faf1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/reverse.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/reverse'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/slice.js new file mode 100644 index 0000000..2c098bd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/slice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/slice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/some.js new file mode 100644 index 0000000..a198c0e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/some.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/some'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/sort.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/sort.js new file mode 100644 index 0000000..5741a92 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/sort.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/sort'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/splice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/splice.js new file mode 100644 index 0000000..e5aeb46 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/splice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/splice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/values.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/values.js new file mode 100644 index 0000000..146bce3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/values.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/values'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/concat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/concat.js new file mode 100644 index 0000000..9c9481b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/concat.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/concat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/copy-within.js new file mode 100644 index 0000000..7d43d5c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/copy-within.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/copy-within'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/entries.js new file mode 100644 index 0000000..008e164 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/entries.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/entries'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/every.js new file mode 100644 index 0000000..3c661eb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/every.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/every'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/fill.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/fill.js new file mode 100644 index 0000000..b0a3b0e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/fill.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/fill'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/filter.js new file mode 100644 index 0000000..b78f806 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/filter.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/filter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find-index.js new file mode 100644 index 0000000..0be7653 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find-index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/find-index'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find.js new file mode 100644 index 0000000..0f28d7c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/find.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/find'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat-map.js new file mode 100644 index 0000000..5adc39b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat-map.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/flat-map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat.js new file mode 100644 index 0000000..cfafee6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/flat.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/flat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/for-each.js new file mode 100644 index 0000000..ca081fb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/for-each.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/for-each'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/includes.js new file mode 100644 index 0000000..fc9bb00 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/includes.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/includes'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index-of.js new file mode 100644 index 0000000..aedd505 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index.js new file mode 100644 index 0000000..98d4718 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/iterator.js new file mode 100644 index 0000000..81ca2a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/join.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/join.js new file mode 100644 index 0000000..fe784ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/join.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/join'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/keys.js new file mode 100644 index 0000000..6ed98ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/keys.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/keys'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/last-index-of.js new file mode 100644 index 0000000..697d588 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/last-index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/last-index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/map.js new file mode 100644 index 0000000..9475976 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/map.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce-right.js new file mode 100644 index 0000000..cf39fca --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce-right.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/reduce-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce.js new file mode 100644 index 0000000..5a08269 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reduce.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/reduce'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reverse.js new file mode 100644 index 0000000..099d13e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/reverse.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/reverse'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/slice.js new file mode 100644 index 0000000..f308e00 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/slice.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/slice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/some.js new file mode 100644 index 0000000..d41a8e7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/some.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/some'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/sort.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/sort.js new file mode 100644 index 0000000..5da0daa --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/sort.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/sort'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/splice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/splice.js new file mode 100644 index 0000000..4cbb494 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/splice.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/splice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/values.js b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/values.js new file mode 100644 index 0000000..ebb6375 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/array/virtual/values.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/values'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/as-indexed-pairs.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/as-indexed-pairs.js new file mode 100644 index 0000000..8fd352b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/as-indexed-pairs.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.as-indexed-pairs'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'asIndexedPairs'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/drop.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/drop.js new file mode 100644 index 0000000..ca33f5b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/drop.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.drop'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'drop'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/every.js new file mode 100644 index 0000000..b090f1d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/every.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.every'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'every'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/filter.js new file mode 100644 index 0000000..4a37bd0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/filter.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.filter'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'filter'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/find.js new file mode 100644 index 0000000..6824ee9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/find.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.find'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'find'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/flat-map.js new file mode 100644 index 0000000..ef26e56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/flat-map.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.flat-map'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'flatMap'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/for-each.js new file mode 100644 index 0000000..ff0a34a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/for-each.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.for-each'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'forEach'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/from.js new file mode 100644 index 0000000..97275d9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/from.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.from'); +require('../../modules/web.dom-collections.iterator'); + +var path = require('../../internals/path'); + +module.exports = path.AsyncIterator.from; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/index.js new file mode 100644 index 0000000..2f188c6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/index.js @@ -0,0 +1,22 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.as-indexed-pairs'); +require('../../modules/esnext.async-iterator.drop'); +require('../../modules/esnext.async-iterator.every'); +require('../../modules/esnext.async-iterator.filter'); +require('../../modules/esnext.async-iterator.find'); +require('../../modules/esnext.async-iterator.flat-map'); +require('../../modules/esnext.async-iterator.for-each'); +require('../../modules/esnext.async-iterator.from'); +require('../../modules/esnext.async-iterator.map'); +require('../../modules/esnext.async-iterator.reduce'); +require('../../modules/esnext.async-iterator.some'); +require('../../modules/esnext.async-iterator.take'); +require('../../modules/esnext.async-iterator.to-array'); +require('../../modules/web.dom-collections.iterator'); + +var path = require('../../internals/path'); + +module.exports = path.AsyncIterator; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/map.js new file mode 100644 index 0000000..a07254f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/map.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.map'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'map'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/reduce.js new file mode 100644 index 0000000..b05022d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/reduce.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.reduce'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'reduce'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/some.js new file mode 100644 index 0000000..1d08566 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/some.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.some'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'some'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/take.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/take.js new file mode 100644 index 0000000..c67587a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/take.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.take'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'take'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/to-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/to-array.js new file mode 100644 index 0000000..30f80b8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/async-iterator/to-array.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.promise'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.async-iterator.constructor'); +require('../../modules/esnext.async-iterator.to-array'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('AsyncIterator', 'toArray'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/clear-immediate.js b/tic-tac-toe-app/node_modules/core-js-pure/features/clear-immediate.js new file mode 100644 index 0000000..15aa13b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/clear-immediate.js @@ -0,0 +1,3 @@ +var parent = require('../stable/clear-immediate'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/composite-key.js b/tic-tac-toe-app/node_modules/core-js-pure/features/composite-key.js new file mode 100644 index 0000000..9fd507b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/composite-key.js @@ -0,0 +1,4 @@ +require('../modules/esnext.composite-key'); +var path = require('../internals/path'); + +module.exports = path.compositeKey; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/composite-symbol.js b/tic-tac-toe-app/node_modules/core-js-pure/features/composite-symbol.js new file mode 100644 index 0000000..fce9600 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/composite-symbol.js @@ -0,0 +1,5 @@ +require('../modules/es.symbol'); +require('../modules/esnext.composite-symbol'); +var path = require('../internals/path'); + +module.exports = path.compositeSymbol; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/data-view/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/data-view/index.js new file mode 100644 index 0000000..0387295 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/data-view/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/data-view'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/date/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/date/index.js new file mode 100644 index 0000000..e9bde08 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/date/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/date'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/date/now.js b/tic-tac-toe-app/node_modules/core-js-pure/features/date/now.js new file mode 100644 index 0000000..a4d8485 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/date/now.js @@ -0,0 +1,3 @@ +var parent = require('../../es/date/now'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-iso-string.js b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-iso-string.js new file mode 100644 index 0000000..a6e6a7f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-iso-string.js @@ -0,0 +1,3 @@ +var parent = require('../../es/date/to-iso-string'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-json.js b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-json.js new file mode 100644 index 0000000..23e8b0c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-json.js @@ -0,0 +1,3 @@ +var parent = require('../../es/date/to-json'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-primitive.js b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-primitive.js new file mode 100644 index 0000000..193421d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-primitive.js @@ -0,0 +1,3 @@ +var parent = require('../../es/date/to-primitive'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-string.js new file mode 100644 index 0000000..f5c9592 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/date/to-string.js @@ -0,0 +1,3 @@ +var parent = require('../../es/date/to-string'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/for-each.js new file mode 100644 index 0000000..dd2ac64 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/for-each.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/dom-collections/for-each'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/index.js new file mode 100644 index 0000000..1ae0660 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/index.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/dom-collections'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/iterator.js new file mode 100644 index 0000000..d63ca43 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/dom-collections/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/dom-collections/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/function/bind.js b/tic-tac-toe-app/node_modules/core-js-pure/features/function/bind.js new file mode 100644 index 0000000..b916d67 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/function/bind.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function/bind'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/function/has-instance.js b/tic-tac-toe-app/node_modules/core-js-pure/features/function/has-instance.js new file mode 100644 index 0000000..9538a80 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/function/has-instance.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function/has-instance'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/function/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/function/index.js new file mode 100644 index 0000000..f906e2e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/function/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/function/name.js b/tic-tac-toe-app/node_modules/core-js-pure/features/function/name.js new file mode 100644 index 0000000..a7729f5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/function/name.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function/name'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/bind.js b/tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/bind.js new file mode 100644 index 0000000..e7b9a3b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/bind.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/function/virtual/bind'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/index.js new file mode 100644 index 0000000..2282ff4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/function/virtual/index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/function/virtual'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator-method.js b/tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator-method.js new file mode 100644 index 0000000..6dd77cb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator-method.js @@ -0,0 +1,5 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); +var getIteratorMethod = require('../internals/get-iterator-method'); + +module.exports = getIteratorMethod; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator.js new file mode 100644 index 0000000..3e52b2c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/get-iterator.js @@ -0,0 +1,5 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); +var getIterator = require('../internals/get-iterator'); + +module.exports = getIterator; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/global-this.js b/tic-tac-toe-app/node_modules/core-js-pure/features/global-this.js new file mode 100644 index 0000000..81d7455 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/global-this.js @@ -0,0 +1,6 @@ +// TODO: remove from `core-js@4` +require('../modules/esnext.global-this'); + +var parent = require('../es/global-this'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/index.js new file mode 100644 index 0000000..9a8b0cb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/index.js @@ -0,0 +1,3 @@ +var parent = require('..'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/at.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/at.js new file mode 100644 index 0000000..f9b4f79 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/at.js @@ -0,0 +1,9 @@ +var at = require('../string/virtual/at'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.at; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.at) ? at : own; +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/bind.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/bind.js new file mode 100644 index 0000000..acb6bbe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/bind.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/bind'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-point-at.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-point-at.js new file mode 100644 index 0000000..1d4435e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-point-at.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/code-point-at'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-points.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-points.js new file mode 100644 index 0000000..6437299 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/code-points.js @@ -0,0 +1,9 @@ +var codePoints = require('../string/virtual/code-points'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.codePoints; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.codePoints) ? codePoints : own; +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/concat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/concat.js new file mode 100644 index 0000000..874d87d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/concat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/concat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/copy-within.js new file mode 100644 index 0000000..9d472b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/copy-within.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/copy-within'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/ends-with.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/ends-with.js new file mode 100644 index 0000000..aaf2c16 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/ends-with.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/ends-with'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/entries.js new file mode 100644 index 0000000..ef42a0e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/entries.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/instance/entries'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/every.js new file mode 100644 index 0000000..3dc4296 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/every.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/every'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/fill.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/fill.js new file mode 100644 index 0000000..4e38c42 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/fill.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/fill'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/filter.js new file mode 100644 index 0000000..5219c64 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/filter.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/filter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/find-index.js new file mode 100644 index 0000000..b207364 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/find-index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/find-index'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/find.js new file mode 100644 index 0000000..024fc81 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/find.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/find'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flags.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flags.js new file mode 100644 index 0000000..064c9ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flags.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/flags'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat-map.js new file mode 100644 index 0000000..bea3d82 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat-map.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/flat-map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat.js new file mode 100644 index 0000000..d61b6ab --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/flat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/flat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/for-each.js new file mode 100644 index 0000000..59d1d80 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/for-each.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/instance/for-each'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/includes.js new file mode 100644 index 0000000..1bccfac --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/includes.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/includes'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/index-of.js new file mode 100644 index 0000000..8ddbaba --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/keys.js new file mode 100644 index 0000000..6320846 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/keys.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/instance/keys'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/last-index-of.js new file mode 100644 index 0000000..c860188 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/last-index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/last-index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/map.js new file mode 100644 index 0000000..1f18a09 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/map.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/match-all.js new file mode 100644 index 0000000..f0ed173 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/match-all.js @@ -0,0 +1,6 @@ +// TODO: remove from `core-js@4` +require('../../modules/esnext.string.match-all'); + +var parent = require('../../es/instance/match-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-end.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-end.js new file mode 100644 index 0000000..afe92b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-end.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/pad-end'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-start.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-start.js new file mode 100644 index 0000000..6a7db7d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/pad-start.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/pad-start'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce-right.js new file mode 100644 index 0000000..6a1bb34 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce-right.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/reduce-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce.js new file mode 100644 index 0000000..908e12e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reduce.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/reduce'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/repeat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/repeat.js new file mode 100644 index 0000000..76f2f4c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/repeat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/repeat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/replace-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/replace-all.js new file mode 100644 index 0000000..d920a60 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/replace-all.js @@ -0,0 +1,9 @@ +var replaceAll = require('../string/virtual/replace-all'); + +var StringPrototype = String.prototype; + +module.exports = function (it) { + var own = it.replaceAll; + return typeof it === 'string' || it === StringPrototype + || (it instanceof String && own === StringPrototype.replaceAll) ? replaceAll : own; +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reverse.js new file mode 100644 index 0000000..ca634dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/reverse.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/reverse'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/slice.js new file mode 100644 index 0000000..2722605 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/slice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/slice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/some.js new file mode 100644 index 0000000..3cd6a8b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/some.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/some'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/sort.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/sort.js new file mode 100644 index 0000000..d06c4bb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/sort.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/sort'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/splice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/splice.js new file mode 100644 index 0000000..46da42c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/splice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/splice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/starts-with.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/starts-with.js new file mode 100644 index 0000000..f2e3a08 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/starts-with.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/starts-with'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-end.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-end.js new file mode 100644 index 0000000..787e52e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-end.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/trim-end'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-left.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-left.js new file mode 100644 index 0000000..7127d67 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-left.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/trim-left'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-right.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-right.js new file mode 100644 index 0000000..760567e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-right.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/trim-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-start.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-start.js new file mode 100644 index 0000000..3c59472 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim-start.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/trim-start'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim.js new file mode 100644 index 0000000..4d99499 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/trim.js @@ -0,0 +1,3 @@ +var parent = require('../../es/instance/trim'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/instance/values.js b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/values.js new file mode 100644 index 0000000..71d1733 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/instance/values.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/instance/values'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/is-iterable.js b/tic-tac-toe-app/node_modules/core-js-pure/features/is-iterable.js new file mode 100644 index 0000000..308da78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/is-iterable.js @@ -0,0 +1,5 @@ +require('../modules/web.dom-collections.iterator'); +require('../modules/es.string.iterator'); +var isIterable = require('../internals/is-iterable'); + +module.exports = isIterable; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/as-indexed-pairs.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/as-indexed-pairs.js new file mode 100644 index 0000000..fdf2d31 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/as-indexed-pairs.js @@ -0,0 +1,10 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.as-indexed-pairs'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'asIndexedPairs'); + diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/drop.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/drop.js new file mode 100644 index 0000000..52b4245 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/drop.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.drop'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'drop'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/every.js new file mode 100644 index 0000000..cc3fbed --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/every.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.every'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'every'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/filter.js new file mode 100644 index 0000000..f744150 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/filter.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.filter'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'filter'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/find.js new file mode 100644 index 0000000..dfed16c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/find.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.find'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'find'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/flat-map.js new file mode 100644 index 0000000..81e3098 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/flat-map.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.flat-map'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'flatMap'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/for-each.js new file mode 100644 index 0000000..e711034 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/for-each.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.for-each'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'forEach'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/from.js new file mode 100644 index 0000000..e79d1a1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/from.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.from'); +require('../../modules/web.dom-collections.iterator'); + +var path = require('../../internals/path'); + +module.exports = path.Iterator.from; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/index.js new file mode 100644 index 0000000..6e86af7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/index.js @@ -0,0 +1,21 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.as-indexed-pairs'); +require('../../modules/esnext.iterator.drop'); +require('../../modules/esnext.iterator.every'); +require('../../modules/esnext.iterator.filter'); +require('../../modules/esnext.iterator.find'); +require('../../modules/esnext.iterator.flat-map'); +require('../../modules/esnext.iterator.for-each'); +require('../../modules/esnext.iterator.from'); +require('../../modules/esnext.iterator.map'); +require('../../modules/esnext.iterator.reduce'); +require('../../modules/esnext.iterator.some'); +require('../../modules/esnext.iterator.take'); +require('../../modules/esnext.iterator.to-array'); +require('../../modules/web.dom-collections.iterator'); + +var path = require('../../internals/path'); + +module.exports = path.Iterator; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/map.js new file mode 100644 index 0000000..060d0f5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/map.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.map'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'map'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/reduce.js new file mode 100644 index 0000000..7049b47 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/reduce.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.reduce'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'reduce'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/some.js new file mode 100644 index 0000000..0a0a20c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/some.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.some'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'some'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/take.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/take.js new file mode 100644 index 0000000..962c4ad --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/take.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.take'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'take'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/to-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/to-array.js new file mode 100644 index 0000000..42f490b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/iterator/to-array.js @@ -0,0 +1,9 @@ +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.iterator.constructor'); +require('../../modules/esnext.iterator.to-array'); +require('../../modules/web.dom-collections.iterator'); + +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Iterator', 'toArray'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/json/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/json/index.js new file mode 100644 index 0000000..c53da9f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/json/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/json'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/json/stringify.js b/tic-tac-toe-app/node_modules/core-js-pure/features/json/stringify.js new file mode 100644 index 0000000..d6d8c52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/json/stringify.js @@ -0,0 +1,3 @@ +var parent = require('../../es/json/stringify'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/json/to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/features/json/to-string-tag.js new file mode 100644 index 0000000..5355956 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/json/to-string-tag.js @@ -0,0 +1,3 @@ +var parent = require('../../es/json/to-string-tag'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/delete-all.js new file mode 100644 index 0000000..ecb2113 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'deleteAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/every.js new file mode 100644 index 0000000..a86e393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/every.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.every'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'every'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/filter.js new file mode 100644 index 0000000..2326526 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/filter.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.filter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'filter'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/find-key.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/find-key.js new file mode 100644 index 0000000..662c423 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/find-key.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.find-key'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'findKey'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/find.js new file mode 100644 index 0000000..993b226 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/find.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.find'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'find'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/from.js new file mode 100644 index 0000000..b7d75f9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.map.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapFrom = Map.from; + +module.exports = function from(source, mapFn, thisArg) { + return mapFrom.call(typeof this === 'function' ? this : Map, source, mapFn, thisArg); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/group-by.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/group-by.js new file mode 100644 index 0000000..c4dfdca --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/group-by.js @@ -0,0 +1,11 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/esnext.map.group-by'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapGroupBy = Map.groupBy; + +module.exports = function groupBy(source, iterable, keyDerivative) { + return mapGroupBy.call(typeof this === 'function' ? this : Map, source, iterable, keyDerivative); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/includes.js new file mode 100644 index 0000000..3ba5acd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/includes.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.includes'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'includes'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/index.js new file mode 100644 index 0000000..73ae0cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/index.js @@ -0,0 +1,23 @@ +var parent = require('../../es/map'); +require('../../modules/esnext.map.from'); +require('../../modules/esnext.map.of'); +require('../../modules/esnext.map.delete-all'); +require('../../modules/esnext.map.every'); +require('../../modules/esnext.map.filter'); +require('../../modules/esnext.map.find'); +require('../../modules/esnext.map.find-key'); +require('../../modules/esnext.map.group-by'); +require('../../modules/esnext.map.includes'); +require('../../modules/esnext.map.key-by'); +require('../../modules/esnext.map.key-of'); +require('../../modules/esnext.map.map-keys'); +require('../../modules/esnext.map.map-values'); +require('../../modules/esnext.map.merge'); +require('../../modules/esnext.map.reduce'); +require('../../modules/esnext.map.some'); +require('../../modules/esnext.map.update'); +require('../../modules/esnext.map.upsert'); +// TODO: remove from `core-js@4` +require('../../modules/esnext.map.update-or-insert'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/key-by.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/key-by.js new file mode 100644 index 0000000..b156f02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/key-by.js @@ -0,0 +1,11 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/esnext.map.key-by'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapKeyBy = Map.keyBy; + +module.exports = function keyBy(source, iterable, keyDerivative) { + return mapKeyBy.call(typeof this === 'function' ? this : Map, source, iterable, keyDerivative); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/key-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/key-of.js new file mode 100644 index 0000000..0d0789a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/key-of.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.key-of'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'keyOf'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/map-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/map-keys.js new file mode 100644 index 0000000..07a49a3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/map-keys.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.map-keys'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'mapKeys'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/map-values.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/map-values.js new file mode 100644 index 0000000..40bf6ca --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/map-values.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.map-values'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'mapValues'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/merge.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/merge.js new file mode 100644 index 0000000..839620d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/merge.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.merge'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'merge'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/of.js new file mode 100644 index 0000000..57f2a76 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.map'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.map.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Map = path.Map; +var mapOf = Map.of; + +module.exports = function of() { + return mapOf.apply(typeof this === 'function' ? this : Map, arguments); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/reduce.js new file mode 100644 index 0000000..272b6f8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/reduce.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.reduce'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'reduce'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/some.js new file mode 100644 index 0000000..48192fe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/some.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.some'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'some'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/update-or-insert.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/update-or-insert.js new file mode 100644 index 0000000..f195f57 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/update-or-insert.js @@ -0,0 +1,6 @@ +// TODO: remove from `core-js@4` +require('../../modules/es.map'); +require('../../modules/esnext.map.update-or-insert'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'updateOrInsert'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/update.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/update.js new file mode 100644 index 0000000..3352690 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/update.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.update'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'update'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/map/upsert.js b/tic-tac-toe-app/node_modules/core-js-pure/features/map/upsert.js new file mode 100644 index 0000000..e658a40 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/map/upsert.js @@ -0,0 +1,5 @@ +require('../../modules/es.map'); +require('../../modules/esnext.map.upsert'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Map', 'upsert'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/acosh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/acosh.js new file mode 100644 index 0000000..f039937 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/acosh.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/acosh'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/asinh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/asinh.js new file mode 100644 index 0000000..95a302a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/asinh.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/asinh'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/atanh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/atanh.js new file mode 100644 index 0000000..f1ebad7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/atanh.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/atanh'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/cbrt.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/cbrt.js new file mode 100644 index 0000000..2c1f825 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/cbrt.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/cbrt'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/clamp.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/clamp.js new file mode 100644 index 0000000..7b81611 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/clamp.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.clamp'); +var path = require('../../internals/path'); + +module.exports = path.Math.clamp; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/clz32.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/clz32.js new file mode 100644 index 0000000..a0ecd15 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/clz32.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/clz32'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/cosh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/cosh.js new file mode 100644 index 0000000..bc8a11f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/cosh.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/cosh'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/deg-per-rad.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/deg-per-rad.js new file mode 100644 index 0000000..c945112 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/deg-per-rad.js @@ -0,0 +1,3 @@ +require('../../modules/esnext.math.deg-per-rad'); + +module.exports = Math.PI / 180; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/degrees.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/degrees.js new file mode 100644 index 0000000..119c327 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/degrees.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.degrees'); +var path = require('../../internals/path'); + +module.exports = path.Math.degrees; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/expm1.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/expm1.js new file mode 100644 index 0000000..0527f81 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/expm1.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/expm1'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/fround.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/fround.js new file mode 100644 index 0000000..5caff7d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/fround.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/fround'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/fscale.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/fscale.js new file mode 100644 index 0000000..2a3cdd8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/fscale.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.fscale'); +var path = require('../../internals/path'); + +module.exports = path.Math.fscale; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/hypot.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/hypot.js new file mode 100644 index 0000000..3db8d78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/hypot.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/hypot'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/iaddh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/iaddh.js new file mode 100644 index 0000000..abfcd8a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/iaddh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.iaddh'); +var path = require('../../internals/path'); + +module.exports = path.Math.iaddh; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/imul.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/imul.js new file mode 100644 index 0000000..4d31d24 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/imul.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/imul'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/imulh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/imulh.js new file mode 100644 index 0000000..b81cf34 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/imulh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.imulh'); +var path = require('../../internals/path'); + +module.exports = path.Math.imulh; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/index.js new file mode 100644 index 0000000..5207e07 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/index.js @@ -0,0 +1,17 @@ +var parent = require('../../es/math'); +require('../../modules/esnext.math.clamp'); +require('../../modules/esnext.math.deg-per-rad'); +require('../../modules/esnext.math.degrees'); +require('../../modules/esnext.math.fscale'); +require('../../modules/esnext.math.rad-per-deg'); +require('../../modules/esnext.math.radians'); +require('../../modules/esnext.math.scale'); +require('../../modules/esnext.math.seeded-prng'); +require('../../modules/esnext.math.signbit'); +// TODO: Remove from `core-js@4` +require('../../modules/esnext.math.iaddh'); +require('../../modules/esnext.math.isubh'); +require('../../modules/esnext.math.imulh'); +require('../../modules/esnext.math.umulh'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/isubh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/isubh.js new file mode 100644 index 0000000..a14e102 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/isubh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.isubh'); +var path = require('../../internals/path'); + +module.exports = path.Math.isubh; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/log10.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/log10.js new file mode 100644 index 0000000..07b9704 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/log10.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/log10'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/log1p.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/log1p.js new file mode 100644 index 0000000..b31d730 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/log1p.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/log1p'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/log2.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/log2.js new file mode 100644 index 0000000..00db8a5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/log2.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/log2'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/rad-per-deg.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/rad-per-deg.js new file mode 100644 index 0000000..3eee674 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/rad-per-deg.js @@ -0,0 +1,3 @@ +require('../../modules/esnext.math.rad-per-deg'); + +module.exports = 180 / Math.PI; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/radians.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/radians.js new file mode 100644 index 0000000..1f02607 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/radians.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.radians'); +var path = require('../../internals/path'); + +module.exports = path.Math.radians; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/scale.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/scale.js new file mode 100644 index 0000000..c44428d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/scale.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.scale'); +var path = require('../../internals/path'); + +module.exports = path.Math.scale; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/seeded-prng.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/seeded-prng.js new file mode 100644 index 0000000..80491b9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/seeded-prng.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.seeded-prng'); +var path = require('../../internals/path'); + +module.exports = path.Math.seededPRNG; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/sign.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/sign.js new file mode 100644 index 0000000..c7bef22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/sign.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/sign'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/signbit.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/signbit.js new file mode 100644 index 0000000..ac2862a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/signbit.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.signbit'); +var path = require('../../internals/path'); + +module.exports = path.Math.signbit; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/sinh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/sinh.js new file mode 100644 index 0000000..96f8f8e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/sinh.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/sinh'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/tanh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/tanh.js new file mode 100644 index 0000000..c9e8bb8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/tanh.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/tanh'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/to-string-tag.js new file mode 100644 index 0000000..02faadf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/to-string-tag.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/to-string-tag'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/trunc.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/trunc.js new file mode 100644 index 0000000..7635c17 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/trunc.js @@ -0,0 +1,3 @@ +var parent = require('../../es/math/trunc'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/math/umulh.js b/tic-tac-toe-app/node_modules/core-js-pure/features/math/umulh.js new file mode 100644 index 0000000..447bf71 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/math/umulh.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.math.umulh'); +var path = require('../../internals/path'); + +module.exports = path.Math.umulh; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/constructor.js new file mode 100644 index 0000000..6b5836e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/constructor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/constructor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/epsilon.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/epsilon.js new file mode 100644 index 0000000..fe2ccd7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/epsilon.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/epsilon'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/from-string.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/from-string.js new file mode 100644 index 0000000..65654be --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/from-string.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.number.from-string'); +var path = require('../../internals/path'); + +module.exports = path.Number.fromString; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/index.js new file mode 100644 index 0000000..e26bfec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/index.js @@ -0,0 +1,5 @@ +var parent = require('../../es/number'); + +module.exports = parent; + +require('../../modules/esnext.number.from-string'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-finite.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-finite.js new file mode 100644 index 0000000..24b9773 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-finite.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-finite'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-integer.js new file mode 100644 index 0000000..b1592d0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-nan.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-nan.js new file mode 100644 index 0000000..fcbec50 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-nan.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-nan'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-safe-integer.js new file mode 100644 index 0000000..b25eb1c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/is-safe-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-safe-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/max-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/max-safe-integer.js new file mode 100644 index 0000000..e6689b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/max-safe-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/max-safe-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/min-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/min-safe-integer.js new file mode 100644 index 0000000..1159a47 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/min-safe-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/min-safe-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-float.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-float.js new file mode 100644 index 0000000..3b49c6a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-float.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/parse-float'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-int.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-int.js new file mode 100644 index 0000000..9e44651 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/parse-int.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/parse-int'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/to-fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/to-fixed.js new file mode 100644 index 0000000..b103de9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/to-fixed.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/to-fixed'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/to-precision.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/to-precision.js new file mode 100644 index 0000000..5183347 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/to-precision.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/to-precision'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/index.js new file mode 100644 index 0000000..88eef4b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/number/virtual'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-fixed.js new file mode 100644 index 0000000..a9f83cc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-fixed.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/number/virtual/to-fixed'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-precision.js b/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-precision.js new file mode 100644 index 0000000..adffb86 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/number/virtual/to-precision.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/number/virtual/to-precision'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/assign.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/assign.js new file mode 100644 index 0000000..ed6863e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/assign.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/assign'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/create.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/create.js new file mode 100644 index 0000000..1e4d353 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/create.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/create'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-getter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-getter.js new file mode 100644 index 0000000..9b734ab --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-getter.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/define-getter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-properties.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-properties.js new file mode 100644 index 0000000..e0d074c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-properties.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/define-properties'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-property.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-property.js new file mode 100644 index 0000000..67a978c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-property.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/define-property'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-setter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-setter.js new file mode 100644 index 0000000..9076fd5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/define-setter.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/define-setter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/entries.js new file mode 100644 index 0000000..c7a831a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/entries.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/entries'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/freeze.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/freeze.js new file mode 100644 index 0000000..0ee7459 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/freeze.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/freeze'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/from-entries.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/from-entries.js new file mode 100644 index 0000000..aec2c7a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/from-entries.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/from-entries'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptor.js new file mode 100644 index 0000000..9b69cdd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/get-own-property-descriptor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptors.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptors.js new file mode 100644 index 0000000..43a193e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-descriptors.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/get-own-property-descriptors'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-names.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-names.js new file mode 100644 index 0000000..42c21d7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-names.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/get-own-property-names'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-symbols.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-symbols.js new file mode 100644 index 0000000..0bc8c26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-own-property-symbols.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/get-own-property-symbols'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-prototype-of.js new file mode 100644 index 0000000..b7cf588 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/get-prototype-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/get-prototype-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/index.js new file mode 100644 index 0000000..e7ea4bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/index.js @@ -0,0 +1,6 @@ +var parent = require('../../es/object'); +require('../../modules/esnext.object.iterate-entries'); +require('../../modules/esnext.object.iterate-keys'); +require('../../modules/esnext.object.iterate-values'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-extensible.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-extensible.js new file mode 100644 index 0000000..694b9a4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-extensible.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/is-extensible'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-frozen.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-frozen.js new file mode 100644 index 0000000..68fe107 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-frozen.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/is-frozen'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-sealed.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-sealed.js new file mode 100644 index 0000000..bbf6472 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is-sealed.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/is-sealed'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/is.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is.js new file mode 100644 index 0000000..3ddd76f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/is.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/is'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-entries.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-entries.js new file mode 100644 index 0000000..ca9cd28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-entries.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.object.iterate-entries'); +var path = require('../../internals/path'); + +module.exports = path.Object.iterateEntries; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-keys.js new file mode 100644 index 0000000..8e8fad4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-keys.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.object.iterate-keys'); +var path = require('../../internals/path'); + +module.exports = path.Object.iterateKeys; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-values.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-values.js new file mode 100644 index 0000000..a77108f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/iterate-values.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.object.iterate-values'); +var path = require('../../internals/path'); + +module.exports = path.Object.iterateValues; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/keys.js new file mode 100644 index 0000000..2cff0ab --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/keys.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/keys'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-getter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-getter.js new file mode 100644 index 0000000..9f10f6b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-getter.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/lookup-getter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-setter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-setter.js new file mode 100644 index 0000000..97389bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/lookup-setter.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/lookup-setter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/prevent-extensions.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/prevent-extensions.js new file mode 100644 index 0000000..7171f2a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/prevent-extensions.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/prevent-extensions'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/seal.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/seal.js new file mode 100644 index 0000000..fa50038 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/seal.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/seal'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/set-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/set-prototype-of.js new file mode 100644 index 0000000..4885ad3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/set-prototype-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/set-prototype-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/to-string.js new file mode 100644 index 0000000..589ffcb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/to-string.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/to-string'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/object/values.js b/tic-tac-toe-app/node_modules/core-js-pure/features/object/values.js new file mode 100644 index 0000000..9e457fc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/object/values.js @@ -0,0 +1,3 @@ +var parent = require('../../es/object/values'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/observable/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/observable/index.js new file mode 100644 index 0000000..9f694bc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/observable/index.js @@ -0,0 +1,8 @@ +require('../../modules/esnext.observable'); +require('../../modules/esnext.symbol.observable'); +require('../../modules/es.object.to-string'); +require('../../modules/es.string.iterator'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +module.exports = path.Observable; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/parse-float.js b/tic-tac-toe-app/node_modules/core-js-pure/features/parse-float.js new file mode 100644 index 0000000..1bc853c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/parse-float.js @@ -0,0 +1,3 @@ +var parent = require('../es/parse-float'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/parse-int.js b/tic-tac-toe-app/node_modules/core-js-pure/features/parse-int.js new file mode 100644 index 0000000..af7cffd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/parse-int.js @@ -0,0 +1,3 @@ +var parent = require('../es/parse-int'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/promise/all-settled.js b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/all-settled.js new file mode 100644 index 0000000..c5e8892 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/all-settled.js @@ -0,0 +1,6 @@ +// TODO: Remove from `core-js@4` +require('../../modules/esnext.promise.all-settled'); + +var parent = require('../../es/promise/all-settled'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/promise/any.js b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/any.js new file mode 100644 index 0000000..7246403 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/any.js @@ -0,0 +1,12 @@ +'use strict'; +require('../../modules/es.promise'); +require('../../modules/esnext.aggregate-error'); +require('../../modules/esnext.promise.any'); +var path = require('../../internals/path'); + +var Promise = path.Promise; +var $any = Promise.any; + +module.exports = function any(iterable) { + return $any.call(typeof this === 'function' ? this : Promise, iterable); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/promise/finally.js b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/finally.js new file mode 100644 index 0000000..835c6c9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/finally.js @@ -0,0 +1,3 @@ +var parent = require('../../es/promise/finally'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/promise/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/index.js new file mode 100644 index 0000000..13393b5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/index.js @@ -0,0 +1,8 @@ +var parent = require('../../es/promise'); +require('../../modules/esnext.aggregate-error'); +// TODO: Remove from `core-js@4` +require('../../modules/esnext.promise.all-settled'); +require('../../modules/esnext.promise.try'); +require('../../modules/esnext.promise.any'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/promise/try.js b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/try.js new file mode 100644 index 0000000..b7a6e3b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/promise/try.js @@ -0,0 +1,11 @@ +'use strict'; +require('../../modules/es.promise'); +require('../../modules/esnext.promise.try'); +var path = require('../../internals/path'); + +var Promise = path.Promise; +var promiseTry = Promise['try']; + +module.exports = { 'try': function (callbackfn) { + return promiseTry.call(typeof this === 'function' ? this : Promise, callbackfn); +} }['try']; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/queue-microtask.js b/tic-tac-toe-app/node_modules/core-js-pure/features/queue-microtask.js new file mode 100644 index 0000000..66c39d6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/queue-microtask.js @@ -0,0 +1,3 @@ +var parent = require('../stable/queue-microtask'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/apply.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/apply.js new file mode 100644 index 0000000..75bf21e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/apply.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/apply'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/construct.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/construct.js new file mode 100644 index 0000000..86ba56e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/construct.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/construct'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-metadata.js new file mode 100644 index 0000000..156cc95 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.define-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.defineMetadata; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-property.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-property.js new file mode 100644 index 0000000..5b66a14 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/define-property.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/define-property'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-metadata.js new file mode 100644 index 0000000..bbb8c48 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.delete-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.deleteMetadata; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-property.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-property.js new file mode 100644 index 0000000..381d7a7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/delete-property.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/delete-property'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata-keys.js new file mode 100644 index 0000000..8137178 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata-keys.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-metadata-keys'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getMetadataKeys; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata.js new file mode 100644 index 0000000..3d00b4e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getMetadata; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata-keys.js new file mode 100644 index 0000000..020828f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata-keys.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-own-metadata-keys'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getOwnMetadataKeys; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata.js new file mode 100644 index 0000000..90f626c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.get-own-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.getOwnMetadata; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-property-descriptor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-property-descriptor.js new file mode 100644 index 0000000..0f9c132 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-own-property-descriptor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/get-own-property-descriptor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-prototype-of.js new file mode 100644 index 0000000..fdc1ccb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get-prototype-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/get-prototype-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get.js new file mode 100644 index 0000000..2914c12 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/get.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/get'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-metadata.js new file mode 100644 index 0000000..3072c51 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.has-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.hasMetadata; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-own-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-own-metadata.js new file mode 100644 index 0000000..09eb765 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has-own-metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.has-own-metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.hasOwnMetadata; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has.js new file mode 100644 index 0000000..26b5f7c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/has.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/has'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/index.js new file mode 100644 index 0000000..6460a70 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/index.js @@ -0,0 +1,12 @@ +var parent = require('../../es/reflect'); +require('../../modules/esnext.reflect.define-metadata'); +require('../../modules/esnext.reflect.delete-metadata'); +require('../../modules/esnext.reflect.get-metadata'); +require('../../modules/esnext.reflect.get-metadata-keys'); +require('../../modules/esnext.reflect.get-own-metadata'); +require('../../modules/esnext.reflect.get-own-metadata-keys'); +require('../../modules/esnext.reflect.has-metadata'); +require('../../modules/esnext.reflect.has-own-metadata'); +require('../../modules/esnext.reflect.metadata'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/is-extensible.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/is-extensible.js new file mode 100644 index 0000000..b04239e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/is-extensible.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/is-extensible'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/metadata.js new file mode 100644 index 0000000..d1faf13 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/metadata.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.reflect.metadata'); +var path = require('../../internals/path'); + +module.exports = path.Reflect.metadata; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/own-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/own-keys.js new file mode 100644 index 0000000..6d56289 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/own-keys.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/own-keys'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/prevent-extensions.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/prevent-extensions.js new file mode 100644 index 0000000..40a8bbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/prevent-extensions.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/prevent-extensions'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set-prototype-of.js new file mode 100644 index 0000000..20fd6f3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set-prototype-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/set-prototype-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set.js b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set.js new file mode 100644 index 0000000..a4cf5f0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/reflect/set.js @@ -0,0 +1,3 @@ +var parent = require('../../es/reflect/set'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/constructor.js new file mode 100644 index 0000000..2cd0149 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/constructor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/constructor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/flags.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/flags.js new file mode 100644 index 0000000..bdf1c8a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/flags.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/flags'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/index.js new file mode 100644 index 0000000..df41f17 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/match.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/match.js new file mode 100644 index 0000000..c995bbb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/match.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/match'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/replace.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/replace.js new file mode 100644 index 0000000..b1a9e65 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/replace.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/replace'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/search.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/search.js new file mode 100644 index 0000000..af17062 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/search.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/search'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/split.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/split.js new file mode 100644 index 0000000..fb0471a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/split.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/split'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/sticky.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/sticky.js new file mode 100644 index 0000000..c1307ad --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/sticky.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/sticky'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/test.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/test.js new file mode 100644 index 0000000..53f9166 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/test.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/test'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/to-string.js new file mode 100644 index 0000000..e2a4442 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/regexp/to-string.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/to-string'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set-immediate.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set-immediate.js new file mode 100644 index 0000000..01530a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set-immediate.js @@ -0,0 +1,3 @@ +var parent = require('../stable/set-immediate'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set-interval.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set-interval.js new file mode 100644 index 0000000..122b8ba --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set-interval.js @@ -0,0 +1,3 @@ +var parent = require('../stable/set-interval'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set-timeout.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set-timeout.js new file mode 100644 index 0000000..310fcd3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set-timeout.js @@ -0,0 +1,3 @@ +var parent = require('../stable/set-timeout'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/add-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/add-all.js new file mode 100644 index 0000000..d045d5e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/add-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.add-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'addAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/delete-all.js new file mode 100644 index 0000000..aa75974 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'deleteAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/difference.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/difference.js new file mode 100644 index 0000000..24a7194 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/difference.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.difference'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'difference'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/every.js new file mode 100644 index 0000000..f22294a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/every.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.every'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'every'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/filter.js new file mode 100644 index 0000000..ffb4a02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/filter.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.filter'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'filter'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/find.js new file mode 100644 index 0000000..8627805 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/find.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.find'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'find'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/from.js new file mode 100644 index 0000000..f18623b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Set = path.Set; +var setFrom = Set.from; + +module.exports = function from(source, mapFn, thisArg) { + return setFrom.call(typeof this === 'function' ? this : Set, source, mapFn, thisArg); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/index.js new file mode 100644 index 0000000..66896f4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/index.js @@ -0,0 +1,21 @@ +var parent = require('../../es/set'); +require('../../modules/esnext.set.from'); +require('../../modules/esnext.set.of'); +require('../../modules/esnext.set.add-all'); +require('../../modules/esnext.set.delete-all'); +require('../../modules/esnext.set.every'); +require('../../modules/esnext.set.difference'); +require('../../modules/esnext.set.filter'); +require('../../modules/esnext.set.find'); +require('../../modules/esnext.set.intersection'); +require('../../modules/esnext.set.is-disjoint-from'); +require('../../modules/esnext.set.is-subset-of'); +require('../../modules/esnext.set.is-superset-of'); +require('../../modules/esnext.set.join'); +require('../../modules/esnext.set.map'); +require('../../modules/esnext.set.reduce'); +require('../../modules/esnext.set.some'); +require('../../modules/esnext.set.symmetric-difference'); +require('../../modules/esnext.set.union'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/intersection.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/intersection.js new file mode 100644 index 0000000..203edfe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/intersection.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.intersection'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'intersection'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-disjoint-from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-disjoint-from.js new file mode 100644 index 0000000..88ca08b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-disjoint-from.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.is-disjoint-from'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'isDisjointFrom'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-subset-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-subset-of.js new file mode 100644 index 0000000..21ab3d4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-subset-of.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.is-subset-of'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'isSubsetOf'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-superset-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-superset-of.js new file mode 100644 index 0000000..4da6ba1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/is-superset-of.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.is-superset-of'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'isSupersetOf'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/join.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/join.js new file mode 100644 index 0000000..b3ae27d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/join.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.join'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'join'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/map.js new file mode 100644 index 0000000..3957002 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/map.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.map'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'map'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/of.js new file mode 100644 index 0000000..114558a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var Set = path.Set; +var setOf = Set.of; + +module.exports = function of() { + return setOf.apply(typeof this === 'function' ? this : Set, arguments); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/reduce.js new file mode 100644 index 0000000..11ab6a4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/reduce.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.reduce'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'reduce'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/some.js new file mode 100644 index 0000000..0b4227a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/some.js @@ -0,0 +1,5 @@ +require('../../modules/es.set'); +require('../../modules/esnext.set.some'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'some'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/symmetric-difference.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/symmetric-difference.js new file mode 100644 index 0000000..fb04d63 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/symmetric-difference.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.symmetric-difference'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'symmetricDifference'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/set/union.js b/tic-tac-toe-app/node_modules/core-js-pure/features/set/union.js new file mode 100644 index 0000000..d180f8b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/set/union.js @@ -0,0 +1,7 @@ +require('../../modules/es.set'); +require('../../modules/es.string.iterator'); +require('../../modules/esnext.set.union'); +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Set', 'union'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/anchor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/anchor.js new file mode 100644 index 0000000..b9b7905 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/anchor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/anchor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/at.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/at.js new file mode 100644 index 0000000..d8bcca8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/at.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.string.at'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'at'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/big.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/big.js new file mode 100644 index 0000000..9c118e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/big.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/big'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/blink.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/blink.js new file mode 100644 index 0000000..23ca24f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/blink.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/blink'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/bold.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/bold.js new file mode 100644 index 0000000..322db3e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/bold.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/bold'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/code-point-at.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/code-point-at.js new file mode 100644 index 0000000..033b94c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/code-point-at.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/code-point-at'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/code-points.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/code-points.js new file mode 100644 index 0000000..8a783f3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/code-points.js @@ -0,0 +1,3 @@ +require('../../modules/esnext.string.code-points'); + +module.exports = require('../../internals/entry-unbind')('String', 'codePoints'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/ends-with.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/ends-with.js new file mode 100644 index 0000000..2ea5594 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/ends-with.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/ends-with'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/fixed.js new file mode 100644 index 0000000..c18b823 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/fixed.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/fixed'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/fontcolor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/fontcolor.js new file mode 100644 index 0000000..bb30ae6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/fontcolor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/fontcolor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/fontsize.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/fontsize.js new file mode 100644 index 0000000..49060de --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/fontsize.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/fontsize'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/from-code-point.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/from-code-point.js new file mode 100644 index 0000000..c56ee7c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/from-code-point.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/from-code-point'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/includes.js new file mode 100644 index 0000000..cf7eea4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/includes.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/includes'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/index.js new file mode 100644 index 0000000..7c7f167 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/index.js @@ -0,0 +1,8 @@ +var parent = require('../../es/string'); +require('../../modules/esnext.string.at'); +require('../../modules/esnext.string.code-points'); +// TODO: remove from `core-js@4` +require('../../modules/esnext.string.match-all'); +require('../../modules/esnext.string.replace-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/italics.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/italics.js new file mode 100644 index 0000000..8bee439 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/italics.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/italics'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/iterator.js new file mode 100644 index 0000000..64110cc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/link.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/link.js new file mode 100644 index 0000000..d507726 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/link.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/link'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/match-all.js new file mode 100644 index 0000000..5188e29 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/match-all.js @@ -0,0 +1,6 @@ +// TODO: remove from `core-js@4` +require('../../modules/esnext.string.match-all'); + +var parent = require('../../es/string/match-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/match.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/match.js new file mode 100644 index 0000000..5b728da --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/match.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/match'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-end.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-end.js new file mode 100644 index 0000000..032903c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-end.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/pad-end'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-start.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-start.js new file mode 100644 index 0000000..440785b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/pad-start.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/pad-start'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/raw.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/raw.js new file mode 100644 index 0000000..2ac2b74 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/raw.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/raw'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/repeat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/repeat.js new file mode 100644 index 0000000..6d6848b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/repeat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/repeat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/replace-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/replace-all.js new file mode 100644 index 0000000..6de7f51 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/replace-all.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.string.replace-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('String', 'replaceAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/replace.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/replace.js new file mode 100644 index 0000000..48389e6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/replace.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/replace'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/search.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/search.js new file mode 100644 index 0000000..aaf356f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/search.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/search'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/small.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/small.js new file mode 100644 index 0000000..47b79e0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/small.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/small'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/split.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/split.js new file mode 100644 index 0000000..5ffbab7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/split.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/split'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/starts-with.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/starts-with.js new file mode 100644 index 0000000..f718778 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/starts-with.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/starts-with'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/strike.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/strike.js new file mode 100644 index 0000000..6c625c8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/strike.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/strike'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/sub.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/sub.js new file mode 100644 index 0000000..a4a66a0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/sub.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/sub'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/sup.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/sup.js new file mode 100644 index 0000000..abb1f6a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/sup.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/sup'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-end.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-end.js new file mode 100644 index 0000000..37e8d3f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-end.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/trim-end'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-left.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-left.js new file mode 100644 index 0000000..e11e7b7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-left.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/trim-left'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-right.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-right.js new file mode 100644 index 0000000..290f4fd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-right.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/trim-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-start.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-start.js new file mode 100644 index 0000000..9698852 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim-start.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/trim-start'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim.js new file mode 100644 index 0000000..7a3a3b2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/trim.js @@ -0,0 +1,3 @@ +var parent = require('../../es/string/trim'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/anchor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/anchor.js new file mode 100644 index 0000000..52f270c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/anchor.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/anchor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/at.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/at.js new file mode 100644 index 0000000..c78ec2c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/at.js @@ -0,0 +1,4 @@ +require('../../../modules/esnext.string.at'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').at; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/big.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/big.js new file mode 100644 index 0000000..e2c481b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/big.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/big'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/blink.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/blink.js new file mode 100644 index 0000000..b804fd6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/blink.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/blink'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/bold.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/bold.js new file mode 100644 index 0000000..fbe2f42 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/bold.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/bold'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-point-at.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-point-at.js new file mode 100644 index 0000000..1a7e0f6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-point-at.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/code-point-at'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-points.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-points.js new file mode 100644 index 0000000..e990516 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/code-points.js @@ -0,0 +1,3 @@ +require('../../../modules/esnext.string.code-points'); + +module.exports = require('../../../internals/entry-virtual')('String').codePoints; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/ends-with.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/ends-with.js new file mode 100644 index 0000000..e35b5d0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/ends-with.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/ends-with'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fixed.js new file mode 100644 index 0000000..8c16126 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fixed.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/fixed'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontcolor.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontcolor.js new file mode 100644 index 0000000..5434150 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontcolor.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/fontcolor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontsize.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontsize.js new file mode 100644 index 0000000..f4b7144 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/fontsize.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/fontsize'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/includes.js new file mode 100644 index 0000000..a6aee44 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/includes.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/includes'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/index.js new file mode 100644 index 0000000..5004477 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/index.js @@ -0,0 +1,8 @@ +var parent = require('../../../es/string/virtual'); +require('../../../modules/esnext.string.at'); +require('../../../modules/esnext.string.code-points'); +// TODO: remove from `core-js@4` +require('../../../modules/esnext.string.match-all'); +require('../../../modules/esnext.string.replace-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/italics.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/italics.js new file mode 100644 index 0000000..d35da33 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/italics.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/italics'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/iterator.js new file mode 100644 index 0000000..ffdb591 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/link.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/link.js new file mode 100644 index 0000000..4c0c0cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/link.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/link'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/match-all.js new file mode 100644 index 0000000..fb39080 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/match-all.js @@ -0,0 +1,6 @@ +// TODO: remove from `core-js@4` +require('../../../modules/esnext.string.match-all'); + +var parent = require('../../../es/string/virtual/match-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-end.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-end.js new file mode 100644 index 0000000..f1dcdf3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-end.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/pad-end'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-start.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-start.js new file mode 100644 index 0000000..1e2afbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/pad-start.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/pad-start'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/repeat.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/repeat.js new file mode 100644 index 0000000..b8db5fc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/repeat.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/repeat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/replace-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/replace-all.js new file mode 100644 index 0000000..781f261 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/replace-all.js @@ -0,0 +1,4 @@ +require('../../../modules/esnext.string.replace-all'); +var entryVirtual = require('../../../internals/entry-virtual'); + +module.exports = entryVirtual('String').replaceAll; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/small.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/small.js new file mode 100644 index 0000000..1dd357b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/small.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/small'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/starts-with.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/starts-with.js new file mode 100644 index 0000000..9a9145d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/starts-with.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/starts-with'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/strike.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/strike.js new file mode 100644 index 0000000..4aa28cc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/strike.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/strike'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sub.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sub.js new file mode 100644 index 0000000..a1b2c3a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sub.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/sub'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sup.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sup.js new file mode 100644 index 0000000..dc604fe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/sup.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/sup'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-end.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-end.js new file mode 100644 index 0000000..04e5ad9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-end.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/trim-end'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-left.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-left.js new file mode 100644 index 0000000..571fb01 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-left.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/trim-left'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-right.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-right.js new file mode 100644 index 0000000..aab8b09 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-right.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/trim-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-start.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-start.js new file mode 100644 index 0000000..c7fd1b2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim-start.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/trim-start'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim.js b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim.js new file mode 100644 index 0000000..d95c2e1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/string/virtual/trim.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/string/virtual/trim'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-dispose.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-dispose.js new file mode 100644 index 0000000..195abe1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-dispose.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.async-dispose'); +var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped'); + +module.exports = WrappedWellKnownSymbolModule.f('asyncDispose'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-iterator.js new file mode 100644 index 0000000..a624329 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/async-iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/async-iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/description.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/description.js new file mode 100644 index 0000000..7bb4b2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/description.js @@ -0,0 +1 @@ +require('../../modules/es.symbol.description'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/dispose.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/dispose.js new file mode 100644 index 0000000..71a4d50 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/dispose.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.dispose'); +var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped'); + +module.exports = WrappedWellKnownSymbolModule.f('dispose'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/for.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/for.js new file mode 100644 index 0000000..28b29ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/for.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/for'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/has-instance.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/has-instance.js new file mode 100644 index 0000000..0334558 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/has-instance.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/has-instance'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/index.js new file mode 100644 index 0000000..36b052a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/index.js @@ -0,0 +1,9 @@ +var parent = require('../../es/symbol'); +require('../../modules/esnext.symbol.async-dispose'); +require('../../modules/esnext.symbol.dispose'); +require('../../modules/esnext.symbol.observable'); +require('../../modules/esnext.symbol.pattern-match'); +// TODO: Remove from `core-js@4` +require('../../modules/esnext.symbol.replace-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/is-concat-spreadable.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/is-concat-spreadable.js new file mode 100644 index 0000000..7dc1d26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/is-concat-spreadable.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/is-concat-spreadable'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/iterator.js new file mode 100644 index 0000000..78f0139 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/key-for.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/key-for.js new file mode 100644 index 0000000..4f76f82 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/key-for.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/key-for'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match-all.js new file mode 100644 index 0000000..6be4444 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match-all.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/match-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match.js new file mode 100644 index 0000000..2a502e4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/match.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/match'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/observable.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/observable.js new file mode 100644 index 0000000..f1fa6cb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/observable.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.observable'); +var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped'); + +module.exports = WrappedWellKnownSymbolModule.f('observable'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/pattern-match.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/pattern-match.js new file mode 100644 index 0000000..98ffbb0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/pattern-match.js @@ -0,0 +1,4 @@ +require('../../modules/esnext.symbol.pattern-match'); +var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped'); + +module.exports = WrappedWellKnownSymbolModule.f('patternMatch'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace-all.js new file mode 100644 index 0000000..011b117 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace-all.js @@ -0,0 +1,5 @@ +// TODO: Remove from `core-js@4` +require('../../modules/esnext.symbol.replace-all'); +var WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped'); + +module.exports = WrappedWellKnownSymbolModule.f('replaceAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace.js new file mode 100644 index 0000000..225f7fe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/replace.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/replace'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/search.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/search.js new file mode 100644 index 0000000..dd25b55 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/search.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/search'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/species.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/species.js new file mode 100644 index 0000000..6d3c418 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/species.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/species'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/split.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/split.js new file mode 100644 index 0000000..209b212 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/split.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/split'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-primitive.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-primitive.js new file mode 100644 index 0000000..cd15ff5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-primitive.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/to-primitive'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-string-tag.js new file mode 100644 index 0000000..6948350 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/to-string-tag.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/to-string-tag'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/unscopables.js b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/unscopables.js new file mode 100644 index 0000000..a9d7820 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/symbol/unscopables.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/unscopables'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/copy-within.js new file mode 100644 index 0000000..1352cec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/copy-within.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.copy-within'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/entries.js new file mode 100644 index 0000000..66cc6dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/entries.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/every.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/every.js new file mode 100644 index 0000000..681164b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/every.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.every'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/fill.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/fill.js new file mode 100644 index 0000000..4d92ac6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/fill.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.fill'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/filter.js new file mode 100644 index 0000000..7d0a630 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/filter.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.filter'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find-index.js new file mode 100644 index 0000000..039cd5e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find-index.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find-index'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find.js new file mode 100644 index 0000000..b3251b9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/find.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float32-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float32-array.js new file mode 100644 index 0000000..c16ee63 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float32-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/float32-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float64-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float64-array.js new file mode 100644 index 0000000..445dc3d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/float64-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/float64-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/for-each.js new file mode 100644 index 0000000..defe03a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/for-each.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.for-each'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/from.js new file mode 100644 index 0000000..e0f3444 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/from.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.from'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/includes.js new file mode 100644 index 0000000..5ff65f9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/includes.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.includes'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index-of.js new file mode 100644 index 0000000..87081c0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.index-of'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index.js new file mode 100644 index 0000000..20a271d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int16-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int16-array.js new file mode 100644 index 0000000..7ffdbae --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int16-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/int16-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int32-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int32-array.js new file mode 100644 index 0000000..bd2e75a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int32-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/int32-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int8-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int8-array.js new file mode 100644 index 0000000..8f1a54b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/int8-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/int8-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/iterator.js new file mode 100644 index 0000000..66cc6dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/iterator.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/join.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/join.js new file mode 100644 index 0000000..431129c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/join.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.join'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/keys.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/keys.js new file mode 100644 index 0000000..66cc6dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/keys.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/last-index-of.js new file mode 100644 index 0000000..5682bf4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/last-index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.last-index-of'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/map.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/map.js new file mode 100644 index 0000000..db08fed --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/map.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.map'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/of.js new file mode 100644 index 0000000..121bf5e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.of'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce-right.js new file mode 100644 index 0000000..cbd321f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce-right.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce-right'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce.js new file mode 100644 index 0000000..e2a6f28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reduce.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reverse.js new file mode 100644 index 0000000..14995f4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/reverse.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reverse'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/set.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/set.js new file mode 100644 index 0000000..5330e22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/set.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.set'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/slice.js new file mode 100644 index 0000000..37fb8c1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/slice.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.slice'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/some.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/some.js new file mode 100644 index 0000000..495c322 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/some.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.some'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/sort.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/sort.js new file mode 100644 index 0000000..d6c7e30 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/sort.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.sort'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/subarray.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/subarray.js new file mode 100644 index 0000000..dbad4ca --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/subarray.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.subarray'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-locale-string.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-locale-string.js new file mode 100644 index 0000000..12c809e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-locale-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-locale-string'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-string.js new file mode 100644 index 0000000..bf94160 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/to-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-string'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint16-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint16-array.js new file mode 100644 index 0000000..f35dc05 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint16-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/uint16-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint32-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint32-array.js new file mode 100644 index 0000000..197c8de --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint32-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/uint32-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-array.js new file mode 100644 index 0000000..7d853e4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/uint8-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-clamped-array.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-clamped-array.js new file mode 100644 index 0000000..a1e131c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/uint8-clamped-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/uint8-clamped-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/values.js b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/values.js new file mode 100644 index 0000000..66cc6dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/typed-array/values.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/url-search-params/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/url-search-params/index.js new file mode 100644 index 0000000..46c415b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/url-search-params/index.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/url-search-params'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/url/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/url/index.js new file mode 100644 index 0000000..fa902af --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/url/index.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/url'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/url/to-json.js b/tic-tac-toe-app/node_modules/core-js-pure/features/url/to-json.js new file mode 100644 index 0000000..e7cafe8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/url/to-json.js @@ -0,0 +1,3 @@ +var parent = require('../../stable/url/to-json'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/delete-all.js new file mode 100644 index 0000000..00163f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.weak-map'); +require('../../modules/esnext.weak-map.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('WeakMap', 'deleteAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/from.js new file mode 100644 index 0000000..159aecd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-map'); +require('../../modules/esnext.weak-map.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakMap = path.WeakMap; +var weakMapFrom = WeakMap.from; + +module.exports = function from(source, mapFn, thisArg) { + return weakMapFrom.call(typeof this === 'function' ? this : WeakMap, source, mapFn, thisArg); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/index.js new file mode 100644 index 0000000..ce5f384 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/index.js @@ -0,0 +1,7 @@ +var parent = require('../../es/weak-map'); +require('../../modules/esnext.weak-map.from'); +require('../../modules/esnext.weak-map.of'); +require('../../modules/esnext.weak-map.delete-all'); +require('../../modules/esnext.weak-map.upsert'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/of.js new file mode 100644 index 0000000..5bdf627 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-map'); +require('../../modules/esnext.weak-map.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakMap = path.WeakMap; +var weakMapOf = WeakMap.of; + +module.exports = function of() { + return weakMapOf.apply(typeof this === 'function' ? this : WeakMap, arguments); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/upsert.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/upsert.js new file mode 100644 index 0000000..509f9ed --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-map/upsert.js @@ -0,0 +1,5 @@ +require('../../modules/es.weak-map'); +require('../../modules/esnext.weak-map.upsert'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('WeakMap', 'upsert'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/add-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/add-all.js new file mode 100644 index 0000000..cf76242 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/add-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.add-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('WeakSet', 'addAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/delete-all.js new file mode 100644 index 0000000..21e7b43 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/delete-all.js @@ -0,0 +1,5 @@ +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.delete-all'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('WeakSet', 'deleteAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/from.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/from.js new file mode 100644 index 0000000..cd8716a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/from.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.from'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakSet = path.WeakSet; +var weakSetfrom = WeakSet.from; + +module.exports = function from(source, mapFn, thisArg) { + return weakSetfrom.call(typeof this === 'function' ? this : WeakSet, source, mapFn, thisArg); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/index.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/index.js new file mode 100644 index 0000000..00ab5e0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/index.js @@ -0,0 +1,7 @@ +var parent = require('../../es/weak-set'); +require('../../modules/esnext.weak-set.add-all'); +require('../../modules/esnext.weak-set.delete-all'); +require('../../modules/esnext.weak-set.from'); +require('../../modules/esnext.weak-set.of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/of.js b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/of.js new file mode 100644 index 0000000..4937c39 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/features/weak-set/of.js @@ -0,0 +1,13 @@ +'use strict'; +require('../../modules/es.string.iterator'); +require('../../modules/es.weak-set'); +require('../../modules/esnext.weak-set.of'); +require('../../modules/web.dom-collections.iterator'); +var path = require('../../internals/path'); + +var WeakSet = path.WeakSet; +var weakSetOf = WeakSet.of; + +module.exports = function of() { + return weakSetOf.apply(typeof this === 'function' ? this : WeakSet, arguments); +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/README.md b/tic-tac-toe-app/node_modules/core-js-pure/modules/README.md new file mode 100644 index 0000000..0d6b3cb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/README.md @@ -0,0 +1 @@ +This folder contains implementations of polyfills. It's not recommended to include in your projects directly if you don't completely understand what are you doing. diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.constructor.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.constructor.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.is-view.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.is-view.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.is-view.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.slice.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.slice.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array-buffer.slice.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.concat.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.concat.js new file mode 100644 index 0000000..1c22499 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.concat.js @@ -0,0 +1,60 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isArray = require('../internals/is-array'); +var isObject = require('../internals/is-object'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var createProperty = require('../internals/create-property'); +var arraySpeciesCreate = require('../internals/array-species-create'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var V8_VERSION = require('../internals/engine-v8-version'); + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; +var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; + +// We can't use this feature detection in V8 since it causes +// deoptimization and serious performance degradation +// https://github.com/zloirock/core-js/issues/679 +var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); + +var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); + +var isConcatSpreadable = function (O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; + +// `Array.prototype.concat` method +// https://tc39.github.io/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species +$({ target: 'Array', proto: true, forced: FORCED }, { + concat: function concat(arg) { // eslint-disable-line no-unused-vars + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + if (isConcatSpreadable(E)) { + len = toLength(E.length); + if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]); + } else { + if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + createProperty(A, n++, E); + } + } + A.length = n; + return A; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.copy-within.js new file mode 100644 index 0000000..1fb0dda --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.copy-within.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var copyWithin = require('../internals/array-copy-within'); +var addToUnscopables = require('../internals/add-to-unscopables'); + +// `Array.prototype.copyWithin` method +// https://tc39.github.io/ecma262/#sec-array.prototype.copywithin +$({ target: 'Array', proto: true }, { + copyWithin: copyWithin +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('copyWithin'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.every.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.every.js new file mode 100644 index 0000000..231c5c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.every.js @@ -0,0 +1,16 @@ +'use strict'; +var $ = require('../internals/export'); +var $every = require('../internals/array-iteration').every; +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var STRICT_METHOD = arrayMethodIsStrict('every'); +var USES_TO_LENGTH = arrayMethodUsesToLength('every'); + +// `Array.prototype.every` method +// https://tc39.github.io/ecma262/#sec-array.prototype.every +$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, { + every: function every(callbackfn /* , thisArg */) { + return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.fill.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.fill.js new file mode 100644 index 0000000..ba9f4b4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.fill.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var fill = require('../internals/array-fill'); +var addToUnscopables = require('../internals/add-to-unscopables'); + +// `Array.prototype.fill` method +// https://tc39.github.io/ecma262/#sec-array.prototype.fill +$({ target: 'Array', proto: true }, { + fill: fill +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('fill'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.filter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.filter.js new file mode 100644 index 0000000..df2509b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.filter.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var $filter = require('../internals/array-iteration').filter; +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter'); +// Edge 14- issue +var USES_TO_LENGTH = arrayMethodUsesToLength('filter'); + +// `Array.prototype.filter` method +// https://tc39.github.io/ecma262/#sec-array.prototype.filter +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, { + filter: function filter(callbackfn /* , thisArg */) { + return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find-index.js new file mode 100644 index 0000000..56c0b68 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find-index.js @@ -0,0 +1,24 @@ +'use strict'; +var $ = require('../internals/export'); +var $findIndex = require('../internals/array-iteration').findIndex; +var addToUnscopables = require('../internals/add-to-unscopables'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var FIND_INDEX = 'findIndex'; +var SKIPS_HOLES = true; + +var USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX); + +// Shouldn't skip holes +if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; }); + +// `Array.prototype.findIndex` method +// https://tc39.github.io/ecma262/#sec-array.prototype.findindex +$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, { + findIndex: function findIndex(callbackfn /* , that = undefined */) { + return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables(FIND_INDEX); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find.js new file mode 100644 index 0000000..ad37cc7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.find.js @@ -0,0 +1,24 @@ +'use strict'; +var $ = require('../internals/export'); +var $find = require('../internals/array-iteration').find; +var addToUnscopables = require('../internals/add-to-unscopables'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var FIND = 'find'; +var SKIPS_HOLES = true; + +var USES_TO_LENGTH = arrayMethodUsesToLength(FIND); + +// Shouldn't skip holes +if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); + +// `Array.prototype.find` method +// https://tc39.github.io/ecma262/#sec-array.prototype.find +$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, { + find: function find(callbackfn /* , that = undefined */) { + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables(FIND); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat-map.js new file mode 100644 index 0000000..5469bee --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat-map.js @@ -0,0 +1,21 @@ +'use strict'; +var $ = require('../internals/export'); +var flattenIntoArray = require('../internals/flatten-into-array'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var aFunction = require('../internals/a-function'); +var arraySpeciesCreate = require('../internals/array-species-create'); + +// `Array.prototype.flatMap` method +// https://github.com/tc39/proposal-flatMap +$({ target: 'Array', proto: true }, { + flatMap: function flatMap(callbackfn /* , thisArg */) { + var O = toObject(this); + var sourceLen = toLength(O.length); + var A; + aFunction(callbackfn); + A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + return A; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat.js new file mode 100644 index 0000000..cb2c9d7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.flat.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var flattenIntoArray = require('../internals/flatten-into-array'); +var toObject = require('../internals/to-object'); +var toLength = require('../internals/to-length'); +var toInteger = require('../internals/to-integer'); +var arraySpeciesCreate = require('../internals/array-species-create'); + +// `Array.prototype.flat` method +// https://github.com/tc39/proposal-flatMap +$({ target: 'Array', proto: true }, { + flat: function flat(/* depthArg = 1 */) { + var depthArg = arguments.length ? arguments[0] : undefined; + var O = toObject(this); + var sourceLen = toLength(O.length); + var A = arraySpeciesCreate(O, 0); + A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toInteger(depthArg)); + return A; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.for-each.js new file mode 100644 index 0000000..4fb29d0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.for-each.js @@ -0,0 +1,9 @@ +'use strict'; +var $ = require('../internals/export'); +var forEach = require('../internals/array-for-each'); + +// `Array.prototype.forEach` method +// https://tc39.github.io/ecma262/#sec-array.prototype.foreach +$({ target: 'Array', proto: true, forced: [].forEach != forEach }, { + forEach: forEach +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.from.js new file mode 100644 index 0000000..5c21cbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.from.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); +var from = require('../internals/array-from'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); + +var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) { + Array.from(iterable); +}); + +// `Array.from` method +// https://tc39.github.io/ecma262/#sec-array.from +$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, { + from: from +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.includes.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.includes.js new file mode 100644 index 0000000..0036556 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.includes.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var $includes = require('../internals/array-includes').includes; +var addToUnscopables = require('../internals/add-to-unscopables'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + +// `Array.prototype.includes` method +// https://tc39.github.io/ecma262/#sec-array.prototype.includes +$({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, { + includes: function includes(el /* , fromIndex = 0 */) { + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('includes'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.index-of.js new file mode 100644 index 0000000..5a1442b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.index-of.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var $indexOf = require('../internals/array-includes').indexOf; +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var nativeIndexOf = [].indexOf; + +var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; +var STRICT_METHOD = arrayMethodIsStrict('indexOf'); +var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); + +// `Array.prototype.indexOf` method +// https://tc39.github.io/ecma262/#sec-array.prototype.indexof +$({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, { + indexOf: function indexOf(searchElement /* , fromIndex = 0 */) { + return NEGATIVE_ZERO + // convert -0 to +0 + ? nativeIndexOf.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.is-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.is-array.js new file mode 100644 index 0000000..b77fad6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.is-array.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var isArray = require('../internals/is-array'); + +// `Array.isArray` method +// https://tc39.github.io/ecma262/#sec-array.isarray +$({ target: 'Array', stat: true }, { + isArray: isArray +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.iterator.js new file mode 100644 index 0000000..5e64422 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.iterator.js @@ -0,0 +1,53 @@ +'use strict'; +var toIndexedObject = require('../internals/to-indexed-object'); +var addToUnscopables = require('../internals/add-to-unscopables'); +var Iterators = require('../internals/iterators'); +var InternalStateModule = require('../internals/internal-state'); +var defineIterator = require('../internals/define-iterator'); + +var ARRAY_ITERATOR = 'Array Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); + +// `Array.prototype.entries` method +// https://tc39.github.io/ecma262/#sec-array.prototype.entries +// `Array.prototype.keys` method +// https://tc39.github.io/ecma262/#sec-array.prototype.keys +// `Array.prototype.values` method +// https://tc39.github.io/ecma262/#sec-array.prototype.values +// `Array.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator +// `CreateArrayIterator` internal method +// https://tc39.github.io/ecma262/#sec-createarrayiterator +module.exports = defineIterator(Array, 'Array', function (iterated, kind) { + setInternalState(this, { + type: ARRAY_ITERATOR, + target: toIndexedObject(iterated), // target + index: 0, // next index + kind: kind // kind + }); +// `%ArrayIteratorPrototype%.next` method +// https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next +}, function () { + var state = getInternalState(this); + var target = state.target; + var kind = state.kind; + var index = state.index++; + if (!target || index >= target.length) { + state.target = undefined; + return { value: undefined, done: true }; + } + if (kind == 'keys') return { value: index, done: false }; + if (kind == 'values') return { value: target[index], done: false }; + return { value: [index, target[index]], done: false }; +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% +// https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject +// https://tc39.github.io/ecma262/#sec-createmappedargumentsobject +Iterators.Arguments = Iterators.Array; + +// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.join.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.join.js new file mode 100644 index 0000000..79ad8d2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.join.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var IndexedObject = require('../internals/indexed-object'); +var toIndexedObject = require('../internals/to-indexed-object'); +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); + +var nativeJoin = [].join; + +var ES3_STRINGS = IndexedObject != Object; +var STRICT_METHOD = arrayMethodIsStrict('join', ','); + +// `Array.prototype.join` method +// https://tc39.github.io/ecma262/#sec-array.prototype.join +$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, { + join: function join(separator) { + return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.last-index-of.js new file mode 100644 index 0000000..d209055 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.last-index-of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var lastIndexOf = require('../internals/array-last-index-of'); + +// `Array.prototype.lastIndexOf` method +// https://tc39.github.io/ecma262/#sec-array.prototype.lastindexof +$({ target: 'Array', proto: true, forced: lastIndexOf !== [].lastIndexOf }, { + lastIndexOf: lastIndexOf +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.map.js new file mode 100644 index 0000000..f9a8cdf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.map.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var $map = require('../internals/array-iteration').map; +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); +// FF49- issue +var USES_TO_LENGTH = arrayMethodUsesToLength('map'); + +// `Array.prototype.map` method +// https://tc39.github.io/ecma262/#sec-array.prototype.map +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, { + map: function map(callbackfn /* , thisArg */) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.of.js new file mode 100644 index 0000000..2788091 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.of.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var createProperty = require('../internals/create-property'); + +var ISNT_GENERIC = fails(function () { + function F() { /* empty */ } + return !(Array.of.call(F) instanceof F); +}); + +// `Array.of` method +// https://tc39.github.io/ecma262/#sec-array.of +// WebKit Array.of isn't generic +$({ target: 'Array', stat: true, forced: ISNT_GENERIC }, { + of: function of(/* ...args */) { + var index = 0; + var argumentsLength = arguments.length; + var result = new (typeof this == 'function' ? this : Array)(argumentsLength); + while (argumentsLength > index) createProperty(result, index, arguments[index++]); + result.length = argumentsLength; + return result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce-right.js new file mode 100644 index 0000000..37aeb2d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce-right.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var $reduceRight = require('../internals/array-reduce').right; +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var STRICT_METHOD = arrayMethodIsStrict('reduceRight'); +// For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method +var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 }); + +// `Array.prototype.reduceRight` method +// https://tc39.github.io/ecma262/#sec-array.prototype.reduceright +$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, { + reduceRight: function reduceRight(callbackfn /* , initialValue */) { + return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce.js new file mode 100644 index 0000000..40e0458 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reduce.js @@ -0,0 +1,16 @@ +'use strict'; +var $ = require('../internals/export'); +var $reduce = require('../internals/array-reduce').left; +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var STRICT_METHOD = arrayMethodIsStrict('reduce'); +var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 }); + +// `Array.prototype.reduce` method +// https://tc39.github.io/ecma262/#sec-array.prototype.reduce +$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, { + reduce: function reduce(callbackfn /* , initialValue */) { + return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reverse.js new file mode 100644 index 0000000..bfe96d5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.reverse.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var isArray = require('../internals/is-array'); + +var nativeReverse = [].reverse; +var test = [1, 2]; + +// `Array.prototype.reverse` method +// https://tc39.github.io/ecma262/#sec-array.prototype.reverse +// fix for Safari 12.0 bug +// https://bugs.webkit.org/show_bug.cgi?id=188794 +$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, { + reverse: function reverse() { + // eslint-disable-next-line no-self-assign + if (isArray(this)) this.length = this.length; + return nativeReverse.call(this); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.slice.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.slice.js new file mode 100644 index 0000000..27609f5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.slice.js @@ -0,0 +1,49 @@ +'use strict'; +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var isArray = require('../internals/is-array'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toLength = require('../internals/to-length'); +var toIndexedObject = require('../internals/to-indexed-object'); +var createProperty = require('../internals/create-property'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice'); +var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 }); + +var SPECIES = wellKnownSymbol('species'); +var nativeSlice = [].slice; +var max = Math.max; + +// `Array.prototype.slice` method +// https://tc39.github.io/ecma262/#sec-array.prototype.slice +// fallback for not array-like ES3 strings and DOM objects +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, { + slice: function slice(start, end) { + var O = toIndexedObject(this); + var length = toLength(O.length); + var k = toAbsoluteIndex(start, length); + var fin = toAbsoluteIndex(end === undefined ? length : end, length); + // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible + var Constructor, result, n; + if (isArray(O)) { + Constructor = O.constructor; + // cross-realm fallback + if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) { + Constructor = undefined; + } else if (isObject(Constructor)) { + Constructor = Constructor[SPECIES]; + if (Constructor === null) Constructor = undefined; + } + if (Constructor === Array || Constructor === undefined) { + return nativeSlice.call(O, k, fin); + } + } + result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0)); + for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]); + result.length = n; + return result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.some.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.some.js new file mode 100644 index 0000000..e143d07 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.some.js @@ -0,0 +1,16 @@ +'use strict'; +var $ = require('../internals/export'); +var $some = require('../internals/array-iteration').some; +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var STRICT_METHOD = arrayMethodIsStrict('some'); +var USES_TO_LENGTH = arrayMethodUsesToLength('some'); + +// `Array.prototype.some` method +// https://tc39.github.io/ecma262/#sec-array.prototype.some +$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, { + some: function some(callbackfn /* , thisArg */) { + return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.sort.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.sort.js new file mode 100644 index 0000000..1b46f51 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.sort.js @@ -0,0 +1,32 @@ +'use strict'; +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var toObject = require('../internals/to-object'); +var fails = require('../internals/fails'); +var arrayMethodIsStrict = require('../internals/array-method-is-strict'); + +var test = []; +var nativeSort = test.sort; + +// IE8- +var FAILS_ON_UNDEFINED = fails(function () { + test.sort(undefined); +}); +// V8 bug +var FAILS_ON_NULL = fails(function () { + test.sort(null); +}); +// Old WebKit +var STRICT_METHOD = arrayMethodIsStrict('sort'); + +var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD; + +// `Array.prototype.sort` method +// https://tc39.github.io/ecma262/#sec-array.prototype.sort +$({ target: 'Array', proto: true, forced: FORCED }, { + sort: function sort(comparefn) { + return comparefn === undefined + ? nativeSort.call(toObject(this)) + : nativeSort.call(toObject(this), aFunction(comparefn)); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.species.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.species.js new file mode 100644 index 0000000..a0e7829 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.species.js @@ -0,0 +1,5 @@ +var setSpecies = require('../internals/set-species'); + +// `Array[@@species]` getter +// https://tc39.github.io/ecma262/#sec-get-array-@@species +setSpecies('Array'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.splice.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.splice.js new file mode 100644 index 0000000..31debca --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.splice.js @@ -0,0 +1,70 @@ +'use strict'; +var $ = require('../internals/export'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); +var toInteger = require('../internals/to-integer'); +var toLength = require('../internals/to-length'); +var toObject = require('../internals/to-object'); +var arraySpeciesCreate = require('../internals/array-species-create'); +var createProperty = require('../internals/create-property'); +var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support'); +var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); + +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice'); +var USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 }); + +var max = Math.max; +var min = Math.min; +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; +var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded'; + +// `Array.prototype.splice` method +// https://tc39.github.io/ecma262/#sec-array.prototype.splice +// with adding support of @@species +$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, { + splice: function splice(start, deleteCount /* , ...items */) { + var O = toObject(this); + var len = toLength(O.length); + var actualStart = toAbsoluteIndex(start, len); + var argumentsLength = arguments.length; + var insertCount, actualDeleteCount, A, k, from, to; + if (argumentsLength === 0) { + insertCount = actualDeleteCount = 0; + } else if (argumentsLength === 1) { + insertCount = 0; + actualDeleteCount = len - actualStart; + } else { + insertCount = argumentsLength - 2; + actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart); + } + if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) { + throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED); + } + A = arraySpeciesCreate(O, actualDeleteCount); + for (k = 0; k < actualDeleteCount; k++) { + from = actualStart + k; + if (from in O) createProperty(A, k, O[from]); + } + A.length = actualDeleteCount; + if (insertCount < actualDeleteCount) { + for (k = actualStart; k < len - actualDeleteCount; k++) { + from = k + actualDeleteCount; + to = k + insertCount; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1]; + } else if (insertCount > actualDeleteCount) { + for (k = len - actualDeleteCount; k > actualStart; k--) { + from = k + actualDeleteCount - 1; + to = k + insertCount - 1; + if (from in O) O[to] = O[from]; + else delete O[to]; + } + } + for (k = 0; k < insertCount; k++) { + O[k + actualStart] = arguments[k + 2]; + } + O.length = len - actualDeleteCount + insertCount; + return A; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat-map.js new file mode 100644 index 0000000..593cf05 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat-map.js @@ -0,0 +1,5 @@ +// this method was added to unscopables after implementation +// in popular engines, so it's moved to a separate module +var addToUnscopables = require('../internals/add-to-unscopables'); + +addToUnscopables('flatMap'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat.js new file mode 100644 index 0000000..ce6656c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.array.unscopables.flat.js @@ -0,0 +1,5 @@ +// this method was added to unscopables after implementation +// in popular engines, so it's moved to a separate module +var addToUnscopables = require('../internals/add-to-unscopables'); + +addToUnscopables('flat'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.data-view.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.data-view.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.data-view.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.now.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.now.js new file mode 100644 index 0000000..c4dc75b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.now.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); + +// `Date.now` method +// https://tc39.github.io/ecma262/#sec-date.now +$({ target: 'Date', stat: true }, { + now: function now() { + return new Date().getTime(); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-iso-string.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-iso-string.js new file mode 100644 index 0000000..14f8ae0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-iso-string.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var toISOString = require('../internals/date-to-iso-string'); + +// `Date.prototype.toISOString` method +// https://tc39.github.io/ecma262/#sec-date.prototype.toisostring +// PhantomJS / old WebKit has a broken implementations +$({ target: 'Date', proto: true, forced: Date.prototype.toISOString !== toISOString }, { + toISOString: toISOString +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-json.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-json.js new file mode 100644 index 0000000..592f9e8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-json.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var toObject = require('../internals/to-object'); +var toPrimitive = require('../internals/to-primitive'); +var toISOString = require('../internals/date-to-iso-string'); +var classof = require('../internals/classof-raw'); +var fails = require('../internals/fails'); + +var FORCED = fails(function () { + return new Date(NaN).toJSON() !== null + || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1; +}); + +$({ target: 'Date', proto: true, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars + toJSON: function toJSON(key) { + var O = toObject(this); + var pv = toPrimitive(O); + return typeof pv == 'number' && !isFinite(pv) ? null : + (!('toISOString' in O) && classof(O) == 'Date') ? toISOString.call(O) : O.toISOString(); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-primitive.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-primitive.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-primitive.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-string.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.date.to-string.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.bind.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.bind.js new file mode 100644 index 0000000..fb33e96 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.bind.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var bind = require('../internals/function-bind'); + +// `Function.prototype.bind` method +// https://tc39.github.io/ecma262/#sec-function.prototype.bind +$({ target: 'Function', proto: true }, { + bind: bind +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.has-instance.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.has-instance.js new file mode 100644 index 0000000..01383bd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.has-instance.js @@ -0,0 +1,20 @@ +'use strict'; +var isObject = require('../internals/is-object'); +var definePropertyModule = require('../internals/object-define-property'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var HAS_INSTANCE = wellKnownSymbol('hasInstance'); +var FunctionPrototype = Function.prototype; + +// `Function.prototype[@@hasInstance]` method +// https://tc39.github.io/ecma262/#sec-function.prototype-@@hasinstance +if (!(HAS_INSTANCE in FunctionPrototype)) { + definePropertyModule.f(FunctionPrototype, HAS_INSTANCE, { value: function (O) { + if (typeof this != 'function' || !isObject(O)) return false; + if (!isObject(this.prototype)) return O instanceof this; + // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: + while (O = getPrototypeOf(O)) if (this.prototype === O) return true; + return false; + } }); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.name.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.name.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.function.name.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.global-this.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.global-this.js new file mode 100644 index 0000000..7e925c8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.global-this.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var global = require('../internals/global'); + +// `globalThis` object +// https://github.com/tc39/proposal-global +$({ global: true }, { + globalThis: global +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.stringify.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.stringify.js new file mode 100644 index 0000000..56ba89f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.stringify.js @@ -0,0 +1,32 @@ +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var fails = require('../internals/fails'); + +var $stringify = getBuiltIn('JSON', 'stringify'); +var re = /[\uD800-\uDFFF]/g; +var low = /^[\uD800-\uDBFF]$/; +var hi = /^[\uDC00-\uDFFF]$/; + +var fix = function (match, offset, string) { + var prev = string.charAt(offset - 1); + var next = string.charAt(offset + 1); + if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) { + return '\\u' + match.charCodeAt(0).toString(16); + } return match; +}; + +var FORCED = fails(function () { + return $stringify('\uDF06\uD834') !== '"\\udf06\\ud834"' + || $stringify('\uDEAD') !== '"\\udead"'; +}); + +if ($stringify) { + // https://github.com/tc39/proposal-well-formed-stringify + $({ target: 'JSON', stat: true, forced: FORCED }, { + // eslint-disable-next-line no-unused-vars + stringify: function stringify(it, replacer, space) { + var result = $stringify.apply(null, arguments); + return typeof result == 'string' ? result.replace(re, fix) : result; + } + }); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.to-string-tag.js new file mode 100644 index 0000000..bdfa0cd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.json.to-string-tag.js @@ -0,0 +1,6 @@ +var global = require('../internals/global'); +var setToStringTag = require('../internals/set-to-string-tag'); + +// JSON[@@toStringTag] property +// https://tc39.github.io/ecma262/#sec-json-@@tostringtag +setToStringTag(global.JSON, 'JSON', true); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.map.js new file mode 100644 index 0000000..fa8ecce --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.map.js @@ -0,0 +1,9 @@ +'use strict'; +var collection = require('../internals/collection'); +var collectionStrong = require('../internals/collection-strong'); + +// `Map` constructor +// https://tc39.github.io/ecma262/#sec-map-objects +module.exports = collection('Map', function (init) { + return function Map() { return init(this, arguments.length ? arguments[0] : undefined); }; +}, collectionStrong); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.acosh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.acosh.js new file mode 100644 index 0000000..62c85a4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.acosh.js @@ -0,0 +1,23 @@ +var $ = require('../internals/export'); +var log1p = require('../internals/math-log1p'); + +var nativeAcosh = Math.acosh; +var log = Math.log; +var sqrt = Math.sqrt; +var LN2 = Math.LN2; + +var FORCED = !nativeAcosh + // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 + || Math.floor(nativeAcosh(Number.MAX_VALUE)) != 710 + // Tor Browser bug: Math.acosh(Infinity) -> NaN + || nativeAcosh(Infinity) != Infinity; + +// `Math.acosh` method +// https://tc39.github.io/ecma262/#sec-math.acosh +$({ target: 'Math', stat: true, forced: FORCED }, { + acosh: function acosh(x) { + return (x = +x) < 1 ? NaN : x > 94906265.62425156 + ? log(x) + LN2 + : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.asinh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.asinh.js new file mode 100644 index 0000000..9308e21 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.asinh.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); + +var nativeAsinh = Math.asinh; +var log = Math.log; +var sqrt = Math.sqrt; + +function asinh(x) { + return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : log(x + sqrt(x * x + 1)); +} + +// `Math.asinh` method +// https://tc39.github.io/ecma262/#sec-math.asinh +// Tor Browser bug: Math.asinh(0) -> -0 +$({ target: 'Math', stat: true, forced: !(nativeAsinh && 1 / nativeAsinh(0) > 0) }, { + asinh: asinh +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.atanh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.atanh.js new file mode 100644 index 0000000..9116f8e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.atanh.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); + +var nativeAtanh = Math.atanh; +var log = Math.log; + +// `Math.atanh` method +// https://tc39.github.io/ecma262/#sec-math.atanh +// Tor Browser bug: Math.atanh(-0) -> 0 +$({ target: 'Math', stat: true, forced: !(nativeAtanh && 1 / nativeAtanh(-0) < 0) }, { + atanh: function atanh(x) { + return (x = +x) == 0 ? x : log((1 + x) / (1 - x)) / 2; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cbrt.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cbrt.js new file mode 100644 index 0000000..b93416f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cbrt.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); +var sign = require('../internals/math-sign'); + +var abs = Math.abs; +var pow = Math.pow; + +// `Math.cbrt` method +// https://tc39.github.io/ecma262/#sec-math.cbrt +$({ target: 'Math', stat: true }, { + cbrt: function cbrt(x) { + return sign(x = +x) * pow(abs(x), 1 / 3); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.clz32.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.clz32.js new file mode 100644 index 0000000..7a18e64 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.clz32.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); + +var floor = Math.floor; +var log = Math.log; +var LOG2E = Math.LOG2E; + +// `Math.clz32` method +// https://tc39.github.io/ecma262/#sec-math.clz32 +$({ target: 'Math', stat: true }, { + clz32: function clz32(x) { + return (x >>>= 0) ? 31 - floor(log(x + 0.5) * LOG2E) : 32; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cosh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cosh.js new file mode 100644 index 0000000..0c7322a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.cosh.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var expm1 = require('../internals/math-expm1'); + +var nativeCosh = Math.cosh; +var abs = Math.abs; +var E = Math.E; + +// `Math.cosh` method +// https://tc39.github.io/ecma262/#sec-math.cosh +$({ target: 'Math', stat: true, forced: !nativeCosh || nativeCosh(710) === Infinity }, { + cosh: function cosh(x) { + var t = expm1(abs(x) - 1) + 1; + return (t + 1 / (t * E * E)) * (E / 2); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.expm1.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.expm1.js new file mode 100644 index 0000000..956eb6f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.expm1.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var expm1 = require('../internals/math-expm1'); + +// `Math.expm1` method +// https://tc39.github.io/ecma262/#sec-math.expm1 +$({ target: 'Math', stat: true, forced: expm1 != Math.expm1 }, { expm1: expm1 }); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.fround.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.fround.js new file mode 100644 index 0000000..5df62db --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.fround.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var fround = require('../internals/math-fround'); + +// `Math.fround` method +// https://tc39.github.io/ecma262/#sec-math.fround +$({ target: 'Math', stat: true }, { fround: fround }); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.hypot.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.hypot.js new file mode 100644 index 0000000..0e8d17b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.hypot.js @@ -0,0 +1,33 @@ +var $ = require('../internals/export'); + +var $hypot = Math.hypot; +var abs = Math.abs; +var sqrt = Math.sqrt; + +// Chrome 77 bug +// https://bugs.chromium.org/p/v8/issues/detail?id=9546 +var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity; + +// `Math.hypot` method +// https://tc39.github.io/ecma262/#sec-math.hypot +$({ target: 'Math', stat: true, forced: BUGGY }, { + hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars + var sum = 0; + var i = 0; + var aLen = arguments.length; + var larg = 0; + var arg, div; + while (i < aLen) { + arg = abs(arguments[i++]); + if (larg < arg) { + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if (arg > 0) { + div = arg / larg; + sum += div * div; + } else sum += arg; + } + return larg === Infinity ? Infinity : larg * sqrt(sum); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.imul.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.imul.js new file mode 100644 index 0000000..3882a3e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.imul.js @@ -0,0 +1,22 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); + +var nativeImul = Math.imul; + +var FORCED = fails(function () { + return nativeImul(0xFFFFFFFF, 5) != -5 || nativeImul.length != 2; +}); + +// `Math.imul` method +// https://tc39.github.io/ecma262/#sec-math.imul +// some WebKit versions fails with big numbers, some has wrong arity +$({ target: 'Math', stat: true, forced: FORCED }, { + imul: function imul(x, y) { + var UINT16 = 0xFFFF; + var xn = +x; + var yn = +y; + var xl = UINT16 & xn; + var yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log10.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log10.js new file mode 100644 index 0000000..86ba3db --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log10.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var log = Math.log; +var LOG10E = Math.LOG10E; + +// `Math.log10` method +// https://tc39.github.io/ecma262/#sec-math.log10 +$({ target: 'Math', stat: true }, { + log10: function log10(x) { + return log(x) * LOG10E; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log1p.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log1p.js new file mode 100644 index 0000000..0327661 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log1p.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var log1p = require('../internals/math-log1p'); + +// `Math.log1p` method +// https://tc39.github.io/ecma262/#sec-math.log1p +$({ target: 'Math', stat: true }, { log1p: log1p }); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log2.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log2.js new file mode 100644 index 0000000..22fcedf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.log2.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var log = Math.log; +var LN2 = Math.LN2; + +// `Math.log2` method +// https://tc39.github.io/ecma262/#sec-math.log2 +$({ target: 'Math', stat: true }, { + log2: function log2(x) { + return log(x) / LN2; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sign.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sign.js new file mode 100644 index 0000000..19e3a78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sign.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var sign = require('../internals/math-sign'); + +// `Math.sign` method +// https://tc39.github.io/ecma262/#sec-math.sign +$({ target: 'Math', stat: true }, { + sign: sign +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sinh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sinh.js new file mode 100644 index 0000000..11ba610 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.sinh.js @@ -0,0 +1,20 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var expm1 = require('../internals/math-expm1'); + +var abs = Math.abs; +var exp = Math.exp; +var E = Math.E; + +var FORCED = fails(function () { + return Math.sinh(-2e-17) != -2e-17; +}); + +// `Math.sinh` method +// https://tc39.github.io/ecma262/#sec-math.sinh +// V8 near Chromium 38 has a problem with very small numbers +$({ target: 'Math', stat: true, forced: FORCED }, { + sinh: function sinh(x) { + return abs(x = +x) < 1 ? (expm1(x) - expm1(-x)) / 2 : (exp(x - 1) - exp(-x - 1)) * (E / 2); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.tanh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.tanh.js new file mode 100644 index 0000000..3b57402 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.tanh.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var expm1 = require('../internals/math-expm1'); + +var exp = Math.exp; + +// `Math.tanh` method +// https://tc39.github.io/ecma262/#sec-math.tanh +$({ target: 'Math', stat: true }, { + tanh: function tanh(x) { + var a = expm1(x = +x); + var b = expm1(-x); + return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.to-string-tag.js new file mode 100644 index 0000000..4ab0811 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.to-string-tag.js @@ -0,0 +1,5 @@ +var setToStringTag = require('../internals/set-to-string-tag'); + +// Math[@@toStringTag] property +// https://tc39.github.io/ecma262/#sec-math-@@tostringtag +setToStringTag(Math, 'Math', true); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.trunc.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.trunc.js new file mode 100644 index 0000000..0e8351d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.math.trunc.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var ceil = Math.ceil; +var floor = Math.floor; + +// `Math.trunc` method +// https://tc39.github.io/ecma262/#sec-math.trunc +$({ target: 'Math', stat: true }, { + trunc: function trunc(it) { + return (it > 0 ? floor : ceil)(it); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.constructor.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.constructor.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.epsilon.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.epsilon.js new file mode 100644 index 0000000..b602724 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.epsilon.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Number.EPSILON` constant +// https://tc39.github.io/ecma262/#sec-number.epsilon +$({ target: 'Number', stat: true }, { + EPSILON: Math.pow(2, -52) +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-finite.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-finite.js new file mode 100644 index 0000000..6308eb4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-finite.js @@ -0,0 +1,6 @@ +var $ = require('../internals/export'); +var numberIsFinite = require('../internals/number-is-finite'); + +// `Number.isFinite` method +// https://tc39.github.io/ecma262/#sec-number.isfinite +$({ target: 'Number', stat: true }, { isFinite: numberIsFinite }); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-integer.js new file mode 100644 index 0000000..b15b739 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-integer.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var isInteger = require('../internals/is-integer'); + +// `Number.isInteger` method +// https://tc39.github.io/ecma262/#sec-number.isinteger +$({ target: 'Number', stat: true }, { + isInteger: isInteger +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-nan.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-nan.js new file mode 100644 index 0000000..f384acc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-nan.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); + +// `Number.isNaN` method +// https://tc39.github.io/ecma262/#sec-number.isnan +$({ target: 'Number', stat: true }, { + isNaN: function isNaN(number) { + // eslint-disable-next-line no-self-compare + return number != number; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-safe-integer.js new file mode 100644 index 0000000..cea6704 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.is-safe-integer.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var isInteger = require('../internals/is-integer'); + +var abs = Math.abs; + +// `Number.isSafeInteger` method +// https://tc39.github.io/ecma262/#sec-number.issafeinteger +$({ target: 'Number', stat: true }, { + isSafeInteger: function isSafeInteger(number) { + return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.max-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.max-safe-integer.js new file mode 100644 index 0000000..7fc5890 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.max-safe-integer.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Number.MAX_SAFE_INTEGER` constant +// https://tc39.github.io/ecma262/#sec-number.max_safe_integer +$({ target: 'Number', stat: true }, { + MAX_SAFE_INTEGER: 0x1FFFFFFFFFFFFF +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.min-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.min-safe-integer.js new file mode 100644 index 0000000..500a8f6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.min-safe-integer.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Number.MIN_SAFE_INTEGER` constant +// https://tc39.github.io/ecma262/#sec-number.min_safe_integer +$({ target: 'Number', stat: true }, { + MIN_SAFE_INTEGER: -0x1FFFFFFFFFFFFF +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-float.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-float.js new file mode 100644 index 0000000..5310ec1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-float.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseFloat = require('../internals/number-parse-float'); + +// `Number.parseFloat` method +// https://tc39.github.io/ecma262/#sec-number.parseFloat +$({ target: 'Number', stat: true, forced: Number.parseFloat != parseFloat }, { + parseFloat: parseFloat +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-int.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-int.js new file mode 100644 index 0000000..7f31df1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.parse-int.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseInt = require('../internals/number-parse-int'); + +// `Number.parseInt` method +// https://tc39.github.io/ecma262/#sec-number.parseint +$({ target: 'Number', stat: true, forced: Number.parseInt != parseInt }, { + parseInt: parseInt +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-fixed.js new file mode 100644 index 0000000..fa4d3e2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-fixed.js @@ -0,0 +1,126 @@ +'use strict'; +var $ = require('../internals/export'); +var toInteger = require('../internals/to-integer'); +var thisNumberValue = require('../internals/this-number-value'); +var repeat = require('../internals/string-repeat'); +var fails = require('../internals/fails'); + +var nativeToFixed = 1.0.toFixed; +var floor = Math.floor; + +var pow = function (x, n, acc) { + return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); +}; + +var log = function (x) { + var n = 0; + var x2 = x; + while (x2 >= 4096) { + n += 12; + x2 /= 4096; + } + while (x2 >= 2) { + n += 1; + x2 /= 2; + } return n; +}; + +var FORCED = nativeToFixed && ( + 0.00008.toFixed(3) !== '0.000' || + 0.9.toFixed(0) !== '1' || + 1.255.toFixed(2) !== '1.25' || + 1000000000000000128.0.toFixed(0) !== '1000000000000000128' +) || !fails(function () { + // V8 ~ Android 4.3- + nativeToFixed.call({}); +}); + +// `Number.prototype.toFixed` method +// https://tc39.github.io/ecma262/#sec-number.prototype.tofixed +$({ target: 'Number', proto: true, forced: FORCED }, { + // eslint-disable-next-line max-statements + toFixed: function toFixed(fractionDigits) { + var number = thisNumberValue(this); + var fractDigits = toInteger(fractionDigits); + var data = [0, 0, 0, 0, 0, 0]; + var sign = ''; + var result = '0'; + var e, z, j, k; + + var multiply = function (n, c) { + var index = -1; + var c2 = c; + while (++index < 6) { + c2 += n * data[index]; + data[index] = c2 % 1e7; + c2 = floor(c2 / 1e7); + } + }; + + var divide = function (n) { + var index = 6; + var c = 0; + while (--index >= 0) { + c += data[index]; + data[index] = floor(c / n); + c = (c % n) * 1e7; + } + }; + + var dataToString = function () { + var index = 6; + var s = ''; + while (--index >= 0) { + if (s !== '' || index === 0 || data[index] !== 0) { + var t = String(data[index]); + s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t; + } + } return s; + }; + + if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits'); + // eslint-disable-next-line no-self-compare + if (number != number) return 'NaN'; + if (number <= -1e21 || number >= 1e21) return String(number); + if (number < 0) { + sign = '-'; + number = -number; + } + if (number > 1e-21) { + e = log(number * pow(2, 69, 1)) - 69; + z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if (e > 0) { + multiply(0, z); + j = fractDigits; + while (j >= 7) { + multiply(1e7, 0); + j -= 7; + } + multiply(pow(10, j, 1), 0); + j = e - 1; + while (j >= 23) { + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + result = dataToString(); + } else { + multiply(0, z); + multiply(1 << -e, 0); + result = dataToString() + repeat.call('0', fractDigits); + } + } + if (fractDigits > 0) { + k = result.length; + result = sign + (k <= fractDigits + ? '0.' + repeat.call('0', fractDigits - k) + result + : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits)); + } else { + result = sign + result; + } return result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-precision.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-precision.js new file mode 100644 index 0000000..7108296 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.number.to-precision.js @@ -0,0 +1,24 @@ +'use strict'; +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var thisNumberValue = require('../internals/this-number-value'); + +var nativeToPrecision = 1.0.toPrecision; + +var FORCED = fails(function () { + // IE7- + return nativeToPrecision.call(1, undefined) !== '1'; +}) || !fails(function () { + // V8 ~ Android 4.3- + nativeToPrecision.call({}); +}); + +// `Number.prototype.toPrecision` method +// https://tc39.github.io/ecma262/#sec-number.prototype.toprecision +$({ target: 'Number', proto: true, forced: FORCED }, { + toPrecision: function toPrecision(precision) { + return precision === undefined + ? nativeToPrecision.call(thisNumberValue(this)) + : nativeToPrecision.call(thisNumberValue(this), precision); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.assign.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.assign.js new file mode 100644 index 0000000..5b00e6a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.assign.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var assign = require('../internals/object-assign'); + +// `Object.assign` method +// https://tc39.github.io/ecma262/#sec-object.assign +$({ target: 'Object', stat: true, forced: Object.assign !== assign }, { + assign: assign +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.create.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.create.js new file mode 100644 index 0000000..3c27869 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.create.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var create = require('../internals/object-create'); + +// `Object.create` method +// https://tc39.github.io/ecma262/#sec-object.create +$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { + create: create +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-getter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-getter.js new file mode 100644 index 0000000..0a44e45 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-getter.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/object-prototype-accessors-forced'); +var toObject = require('../internals/to-object'); +var aFunction = require('../internals/a-function'); +var definePropertyModule = require('../internals/object-define-property'); + +// `Object.prototype.__defineGetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__defineGetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __defineGetter__: function __defineGetter__(P, getter) { + definePropertyModule.f(toObject(this), P, { get: aFunction(getter), enumerable: true, configurable: true }); + } + }); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-properties.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-properties.js new file mode 100644 index 0000000..9400799 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-properties.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var defineProperties = require('../internals/object-define-properties'); + +// `Object.defineProperties` method +// https://tc39.github.io/ecma262/#sec-object.defineproperties +$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, { + defineProperties: defineProperties +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-property.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-property.js new file mode 100644 index 0000000..19fcf5b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-property.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var objectDefinePropertyModile = require('../internals/object-define-property'); + +// `Object.defineProperty` method +// https://tc39.github.io/ecma262/#sec-object.defineproperty +$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, { + defineProperty: objectDefinePropertyModile.f +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-setter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-setter.js new file mode 100644 index 0000000..4250177 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.define-setter.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/object-prototype-accessors-forced'); +var toObject = require('../internals/to-object'); +var aFunction = require('../internals/a-function'); +var definePropertyModule = require('../internals/object-define-property'); + +// `Object.prototype.__defineSetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__defineSetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __defineSetter__: function __defineSetter__(P, setter) { + definePropertyModule.f(toObject(this), P, { set: aFunction(setter), enumerable: true, configurable: true }); + } + }); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.entries.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.entries.js new file mode 100644 index 0000000..a22e693 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.entries.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); +var $entries = require('../internals/object-to-array').entries; + +// `Object.entries` method +// https://tc39.github.io/ecma262/#sec-object.entries +$({ target: 'Object', stat: true }, { + entries: function entries(O) { + return $entries(O); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.freeze.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.freeze.js new file mode 100644 index 0000000..0a623bd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.freeze.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var FREEZING = require('../internals/freezing'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); +var onFreeze = require('../internals/internal-metadata').onFreeze; + +var nativeFreeze = Object.freeze; +var FAILS_ON_PRIMITIVES = fails(function () { nativeFreeze(1); }); + +// `Object.freeze` method +// https://tc39.github.io/ecma262/#sec-object.freeze +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { + freeze: function freeze(it) { + return nativeFreeze && isObject(it) ? nativeFreeze(onFreeze(it)) : it; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.from-entries.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.from-entries.js new file mode 100644 index 0000000..2886e81 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.from-entries.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var createProperty = require('../internals/create-property'); + +// `Object.fromEntries` method +// https://github.com/tc39/proposal-object-from-entries +$({ target: 'Object', stat: true }, { + fromEntries: function fromEntries(iterable) { + var obj = {}; + iterate(iterable, function (k, v) { + createProperty(obj, k, v); + }, undefined, true); + return obj; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js new file mode 100644 index 0000000..bfeeb88 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var toIndexedObject = require('../internals/to-indexed-object'); +var nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var DESCRIPTORS = require('../internals/descriptors'); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); }); +var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES; + +// `Object.getOwnPropertyDescriptor` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor +$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) { + return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js new file mode 100644 index 0000000..e29c917 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-descriptors.js @@ -0,0 +1,24 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var ownKeys = require('../internals/own-keys'); +var toIndexedObject = require('../internals/to-indexed-object'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var createProperty = require('../internals/create-property'); + +// `Object.getOwnPropertyDescriptors` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors +$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) { + var O = toIndexedObject(object); + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + var keys = ownKeys(O); + var result = {}; + var index = 0; + var key, descriptor; + while (keys.length > index) { + descriptor = getOwnPropertyDescriptor(O, key = keys[index++]); + if (descriptor !== undefined) createProperty(result, key, descriptor); + } + return result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-names.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-names.js new file mode 100644 index 0000000..6a52f45 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-own-property-names.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names-external').f; + +var FAILS_ON_PRIMITIVES = fails(function () { return !Object.getOwnPropertyNames(1); }); + +// `Object.getOwnPropertyNames` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertynames +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + getOwnPropertyNames: nativeGetOwnPropertyNames +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-prototype-of.js new file mode 100644 index 0000000..7cbb548 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.get-prototype-of.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var toObject = require('../internals/to-object'); +var nativeGetPrototypeOf = require('../internals/object-get-prototype-of'); +var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter'); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeGetPrototypeOf(1); }); + +// `Object.getPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-object.getprototypeof +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !CORRECT_PROTOTYPE_GETTER }, { + getPrototypeOf: function getPrototypeOf(it) { + return nativeGetPrototypeOf(toObject(it)); + } +}); + diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-extensible.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-extensible.js new file mode 100644 index 0000000..556405b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-extensible.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); + +var nativeIsExtensible = Object.isExtensible; +var FAILS_ON_PRIMITIVES = fails(function () { nativeIsExtensible(1); }); + +// `Object.isExtensible` method +// https://tc39.github.io/ecma262/#sec-object.isextensible +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + isExtensible: function isExtensible(it) { + return isObject(it) ? nativeIsExtensible ? nativeIsExtensible(it) : true : false; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-frozen.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-frozen.js new file mode 100644 index 0000000..060314d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-frozen.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); + +var nativeIsFrozen = Object.isFrozen; +var FAILS_ON_PRIMITIVES = fails(function () { nativeIsFrozen(1); }); + +// `Object.isFrozen` method +// https://tc39.github.io/ecma262/#sec-object.isfrozen +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + isFrozen: function isFrozen(it) { + return isObject(it) ? nativeIsFrozen ? nativeIsFrozen(it) : false : true; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-sealed.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-sealed.js new file mode 100644 index 0000000..0f8b95f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is-sealed.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var fails = require('../internals/fails'); +var isObject = require('../internals/is-object'); + +var nativeIsSealed = Object.isSealed; +var FAILS_ON_PRIMITIVES = fails(function () { nativeIsSealed(1); }); + +// `Object.isSealed` method +// https://tc39.github.io/ecma262/#sec-object.issealed +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + isSealed: function isSealed(it) { + return isObject(it) ? nativeIsSealed ? nativeIsSealed(it) : false : true; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is.js new file mode 100644 index 0000000..9ef6f0a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.is.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var is = require('../internals/same-value'); + +// `Object.is` method +// https://tc39.github.io/ecma262/#sec-object.is +$({ target: 'Object', stat: true }, { + is: is +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.keys.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.keys.js new file mode 100644 index 0000000..dc24884 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.keys.js @@ -0,0 +1,14 @@ +var $ = require('../internals/export'); +var toObject = require('../internals/to-object'); +var nativeKeys = require('../internals/object-keys'); +var fails = require('../internals/fails'); + +var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); + +// `Object.keys` method +// https://tc39.github.io/ecma262/#sec-object.keys +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { + keys: function keys(it) { + return nativeKeys(toObject(it)); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-getter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-getter.js new file mode 100644 index 0000000..46e3fd0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-getter.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/object-prototype-accessors-forced'); +var toObject = require('../internals/to-object'); +var toPrimitive = require('../internals/to-primitive'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; + +// `Object.prototype.__lookupGetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupGetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __lookupGetter__: function __lookupGetter__(P) { + var O = toObject(this); + var key = toPrimitive(P, true); + var desc; + do { + if (desc = getOwnPropertyDescriptor(O, key)) return desc.get; + } while (O = getPrototypeOf(O)); + } + }); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-setter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-setter.js new file mode 100644 index 0000000..57d49fa --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.lookup-setter.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var FORCED = require('../internals/object-prototype-accessors-forced'); +var toObject = require('../internals/to-object'); +var toPrimitive = require('../internals/to-primitive'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; + +// `Object.prototype.__lookupSetter__` method +// https://tc39.github.io/ecma262/#sec-object.prototype.__lookupSetter__ +if (DESCRIPTORS) { + $({ target: 'Object', proto: true, forced: FORCED }, { + __lookupSetter__: function __lookupSetter__(P) { + var O = toObject(this); + var key = toPrimitive(P, true); + var desc; + do { + if (desc = getOwnPropertyDescriptor(O, key)) return desc.set; + } while (O = getPrototypeOf(O)); + } + }); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.prevent-extensions.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.prevent-extensions.js new file mode 100644 index 0000000..bb7b268 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.prevent-extensions.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var onFreeze = require('../internals/internal-metadata').onFreeze; +var FREEZING = require('../internals/freezing'); +var fails = require('../internals/fails'); + +var nativePreventExtensions = Object.preventExtensions; +var FAILS_ON_PRIMITIVES = fails(function () { nativePreventExtensions(1); }); + +// `Object.preventExtensions` method +// https://tc39.github.io/ecma262/#sec-object.preventextensions +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { + preventExtensions: function preventExtensions(it) { + return nativePreventExtensions && isObject(it) ? nativePreventExtensions(onFreeze(it)) : it; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.seal.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.seal.js new file mode 100644 index 0000000..35fae0c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.seal.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var onFreeze = require('../internals/internal-metadata').onFreeze; +var FREEZING = require('../internals/freezing'); +var fails = require('../internals/fails'); + +var nativeSeal = Object.seal; +var FAILS_ON_PRIMITIVES = fails(function () { nativeSeal(1); }); + +// `Object.seal` method +// https://tc39.github.io/ecma262/#sec-object.seal +$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES, sham: !FREEZING }, { + seal: function seal(it) { + return nativeSeal && isObject(it) ? nativeSeal(onFreeze(it)) : it; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.set-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.set-prototype-of.js new file mode 100644 index 0000000..cbe0578 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.set-prototype-of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); + +// `Object.setPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-object.setprototypeof +$({ target: 'Object', stat: true }, { + setPrototypeOf: setPrototypeOf +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.to-string.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.to-string.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.values.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.values.js new file mode 100644 index 0000000..a3074cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.object.values.js @@ -0,0 +1,10 @@ +var $ = require('../internals/export'); +var $values = require('../internals/object-to-array').values; + +// `Object.values` method +// https://tc39.github.io/ecma262/#sec-object.values +$({ target: 'Object', stat: true }, { + values: function values(O) { + return $values(O); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-float.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-float.js new file mode 100644 index 0000000..1245deb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-float.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseFloatImplementation = require('../internals/number-parse-float'); + +// `parseFloat` method +// https://tc39.github.io/ecma262/#sec-parsefloat-string +$({ global: true, forced: parseFloat != parseFloatImplementation }, { + parseFloat: parseFloatImplementation +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-int.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-int.js new file mode 100644 index 0000000..b462541 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.parse-int.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var parseIntImplementation = require('../internals/number-parse-int'); + +// `parseInt` method +// https://tc39.github.io/ecma262/#sec-parseint-string-radix +$({ global: true, forced: parseInt != parseIntImplementation }, { + parseInt: parseIntImplementation +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.all-settled.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.all-settled.js new file mode 100644 index 0000000..887f3a6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.all-settled.js @@ -0,0 +1,43 @@ +'use strict'; +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var iterate = require('../internals/iterate'); + +// `Promise.allSettled` method +// https://github.com/tc39/proposal-promise-allSettled +$({ target: 'Promise', stat: true }, { + allSettled: function allSettled(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aFunction(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + promiseResolve.call(C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'fulfilled', value: value }; + --remaining || resolve(values); + }, function (e) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = { status: 'rejected', reason: e }; + --remaining || resolve(values); + }); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.finally.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.finally.js new file mode 100644 index 0000000..7efe3e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.finally.js @@ -0,0 +1,36 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var NativePromise = require('../internals/native-promise-constructor'); +var fails = require('../internals/fails'); +var getBuiltIn = require('../internals/get-built-in'); +var speciesConstructor = require('../internals/species-constructor'); +var promiseResolve = require('../internals/promise-resolve'); +var redefine = require('../internals/redefine'); + +// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829 +var NON_GENERIC = !!NativePromise && fails(function () { + NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ }); +}); + +// `Promise.prototype.finally` method +// https://tc39.github.io/ecma262/#sec-promise.prototype.finally +$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, { + 'finally': function (onFinally) { + var C = speciesConstructor(this, getBuiltIn('Promise')); + var isFunction = typeof onFinally == 'function'; + return this.then( + isFunction ? function (x) { + return promiseResolve(C, onFinally()).then(function () { return x; }); + } : onFinally, + isFunction ? function (e) { + return promiseResolve(C, onFinally()).then(function () { throw e; }); + } : onFinally + ); + } +}); + +// patch native Promise.prototype for native async functions +if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) { + redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.js new file mode 100644 index 0000000..b79d2bc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.promise.js @@ -0,0 +1,379 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var global = require('../internals/global'); +var getBuiltIn = require('../internals/get-built-in'); +var NativePromise = require('../internals/native-promise-constructor'); +var redefine = require('../internals/redefine'); +var redefineAll = require('../internals/redefine-all'); +var setToStringTag = require('../internals/set-to-string-tag'); +var setSpecies = require('../internals/set-species'); +var isObject = require('../internals/is-object'); +var aFunction = require('../internals/a-function'); +var anInstance = require('../internals/an-instance'); +var classof = require('../internals/classof-raw'); +var inspectSource = require('../internals/inspect-source'); +var iterate = require('../internals/iterate'); +var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); +var speciesConstructor = require('../internals/species-constructor'); +var task = require('../internals/task').set; +var microtask = require('../internals/microtask'); +var promiseResolve = require('../internals/promise-resolve'); +var hostReportErrors = require('../internals/host-report-errors'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var InternalStateModule = require('../internals/internal-state'); +var isForced = require('../internals/is-forced'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var V8_VERSION = require('../internals/engine-v8-version'); + +var SPECIES = wellKnownSymbol('species'); +var PROMISE = 'Promise'; +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; +var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); +var PromiseConstructor = NativePromise; +var TypeError = global.TypeError; +var document = global.document; +var process = global.process; +var $fetch = getBuiltIn('fetch'); +var newPromiseCapability = newPromiseCapabilityModule.f; +var newGenericPromiseCapability = newPromiseCapability; +var IS_NODE = classof(process) == 'process'; +var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); +var UNHANDLED_REJECTION = 'unhandledrejection'; +var REJECTION_HANDLED = 'rejectionhandled'; +var PENDING = 0; +var FULFILLED = 1; +var REJECTED = 2; +var HANDLED = 1; +var UNHANDLED = 2; +var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; + +var FORCED = isForced(PROMISE, function () { + var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); + if (!GLOBAL_CORE_JS_PROMISE) { + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (V8_VERSION === 66) return true; + // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true; + } + // We need Promise#finally in the pure version for preventing prototype pollution + if (IS_PURE && !PromiseConstructor.prototype['finally']) return true; + // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false; + // Detect correctness of subclassing with @@species support + var promise = PromiseConstructor.resolve(1); + var FakePromise = function (exec) { + exec(function () { /* empty */ }, function () { /* empty */ }); + }; + var constructor = promise.constructor = {}; + constructor[SPECIES] = FakePromise; + return !(promise.then(function () { /* empty */ }) instanceof FakePromise); +}); + +var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { + PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); +}); + +// helpers +var isThenable = function (it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; + +var notify = function (promise, state, isReject) { + if (state.notified) return; + state.notified = true; + var chain = state.reactions; + microtask(function () { + var value = state.value; + var ok = state.state == FULFILLED; + var index = 0; + // variable length - can't use forEach + while (chain.length > index) { + var reaction = chain[index++]; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); + state.rejection = HANDLED; + } + if (handler === true) result = value; + else { + if (domain) domain.enter(); + result = handler(value); // can throw + if (domain) { + domain.exit(); + exited = true; + } + } + if (result === reaction.promise) { + reject(TypeError('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } + } + state.reactions = []; + state.notified = false; + if (isReject && !state.rejection) onUnhandled(promise, state); + }); +}; + +var dispatchEvent = function (name, promise, reason) { + var event, handler; + if (DISPATCH_EVENT) { + event = document.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global.dispatchEvent(event); + } else event = { promise: promise, reason: reason }; + if (handler = global['on' + name]) handler(event); + else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +}; + +var onUnhandled = function (promise, state) { + task.call(global, function () { + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE) { + process.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); +}; + +var isUnhandled = function (state) { + return state.rejection !== HANDLED && !state.parent; +}; + +var onHandleUnhandled = function (promise, state) { + task.call(global, function () { + if (IS_NODE) { + process.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); +}; + +var bind = function (fn, promise, state, unwrap) { + return function (value) { + fn(promise, state, value, unwrap); + }; +}; + +var internalReject = function (promise, state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify(promise, state, true); +}; + +var internalResolve = function (promise, state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + try { + if (promise === value) throw TypeError("Promise can't be resolved itself"); + var then = isThenable(value); + if (then) { + microtask(function () { + var wrapper = { done: false }; + try { + then.call(value, + bind(internalResolve, promise, wrapper, state), + bind(internalReject, promise, wrapper, state) + ); + } catch (error) { + internalReject(promise, wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify(promise, state, false); + } + } catch (error) { + internalReject(promise, { done: false }, error, state); + } +}; + +// constructor polyfill +if (FORCED) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromiseConstructor, PROMISE); + aFunction(executor); + Internal.call(this); + var state = getInternalState(this); + try { + executor(bind(internalResolve, this, state), bind(internalReject, this, state)); + } catch (error) { + internalReject(this, state, error); + } + }; + // eslint-disable-next-line no-unused-vars + Internal = function Promise(executor) { + setInternalState(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: [], + rejection: false, + state: PENDING, + value: undefined + }); + }; + Internal.prototype = redefineAll(PromiseConstructor.prototype, { + // `Promise.prototype.then` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.then + then: function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = IS_NODE ? process.domain : undefined; + state.parent = true; + state.reactions.push(reaction); + if (state.state != PENDING) notify(this, state, false); + return reaction.promise; + }, + // `Promise.prototype.catch` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.catch + 'catch': function (onRejected) { + return this.then(undefined, onRejected); + } + }); + OwnPromiseCapability = function () { + var promise = new Internal(); + var state = getInternalState(promise); + this.promise = promise; + this.resolve = bind(internalResolve, promise, state); + this.reject = bind(internalReject, promise, state); + }; + newPromiseCapabilityModule.f = newPromiseCapability = function (C) { + return C === PromiseConstructor || C === PromiseWrapper + ? new OwnPromiseCapability(C) + : newGenericPromiseCapability(C); + }; + + if (!IS_PURE && typeof NativePromise == 'function') { + nativeThen = NativePromise.prototype.then; + + // wrap native Promise#then for native async functions + redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + nativeThen.call(that, resolve, reject); + }).then(onFulfilled, onRejected); + // https://github.com/zloirock/core-js/issues/640 + }, { unsafe: true }); + + // wrap fetch result + if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, { + // eslint-disable-next-line no-unused-vars + fetch: function fetch(input /* , init */) { + return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); + } + }); + } +} + +$({ global: true, wrap: true, forced: FORCED }, { + Promise: PromiseConstructor +}); + +setToStringTag(PromiseConstructor, PROMISE, false, true); +setSpecies(PROMISE); + +PromiseWrapper = getBuiltIn(PROMISE); + +// statics +$({ target: PROMISE, stat: true, forced: FORCED }, { + // `Promise.reject` method + // https://tc39.github.io/ecma262/#sec-promise.reject + reject: function reject(r) { + var capability = newPromiseCapability(this); + capability.reject.call(undefined, r); + return capability.promise; + } +}); + +$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, { + // `Promise.resolve` method + // https://tc39.github.io/ecma262/#sec-promise.resolve + resolve: function resolve(x) { + return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); + } +}); + +$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, { + // `Promise.all` method + // https://tc39.github.io/ecma262/#sec-promise.all + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + $promiseResolve.call(C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + }, + // `Promise.race` method + // https://tc39.github.io/ecma262/#sec-promise.race + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction(C.resolve); + iterate(iterable, function (promise) { + $promiseResolve.call(C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.apply.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.apply.js new file mode 100644 index 0000000..634222b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.apply.js @@ -0,0 +1,25 @@ +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var fails = require('../internals/fails'); + +var nativeApply = getBuiltIn('Reflect', 'apply'); +var functionApply = Function.apply; + +// MS Edge argumentsList argument is optional +var OPTIONAL_ARGUMENTS_LIST = !fails(function () { + nativeApply(function () { /* empty */ }); +}); + +// `Reflect.apply` method +// https://tc39.github.io/ecma262/#sec-reflect.apply +$({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, { + apply: function apply(target, thisArgument, argumentsList) { + aFunction(target); + anObject(argumentsList); + return nativeApply + ? nativeApply(target, thisArgument, argumentsList) + : functionApply.call(target, thisArgument, argumentsList); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.construct.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.construct.js new file mode 100644 index 0000000..9e678dd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.construct.js @@ -0,0 +1,51 @@ +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var create = require('../internals/object-create'); +var bind = require('../internals/function-bind'); +var fails = require('../internals/fails'); + +var nativeConstruct = getBuiltIn('Reflect', 'construct'); + +// `Reflect.construct` method +// https://tc39.github.io/ecma262/#sec-reflect.construct +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function () { + function F() { /* empty */ } + return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F); +}); +var ARGS_BUG = !fails(function () { + nativeConstruct(function () { /* empty */ }); +}); +var FORCED = NEW_TARGET_BUG || ARGS_BUG; + +$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, { + construct: function construct(Target, args /* , newTarget */) { + aFunction(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); + if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget); + if (Target == newTarget) { + // w/o altered newTarget, optimization for 0-4 arguments + switch (args.length) { + case 0: return new Target(); + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (bind.apply(Target, $args))(); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype; + var instance = create(isObject(proto) ? proto : Object.prototype); + var result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.define-property.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.define-property.js new file mode 100644 index 0000000..44343f7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.define-property.js @@ -0,0 +1,28 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var anObject = require('../internals/an-object'); +var toPrimitive = require('../internals/to-primitive'); +var definePropertyModule = require('../internals/object-define-property'); +var fails = require('../internals/fails'); + +// MS Edge has broken Reflect.defineProperty - throwing instead of returning false +var ERROR_INSTEAD_OF_FALSE = fails(function () { + // eslint-disable-next-line no-undef + Reflect.defineProperty(definePropertyModule.f({}, 1, { value: 1 }), 1, { value: 2 }); +}); + +// `Reflect.defineProperty` method +// https://tc39.github.io/ecma262/#sec-reflect.defineproperty +$({ target: 'Reflect', stat: true, forced: ERROR_INSTEAD_OF_FALSE, sham: !DESCRIPTORS }, { + defineProperty: function defineProperty(target, propertyKey, attributes) { + anObject(target); + var key = toPrimitive(propertyKey, true); + anObject(attributes); + try { + definePropertyModule.f(target, key, attributes); + return true; + } catch (error) { + return false; + } + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.delete-property.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.delete-property.js new file mode 100644 index 0000000..8cfb32d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.delete-property.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; + +// `Reflect.deleteProperty` method +// https://tc39.github.io/ecma262/#sec-reflect.deleteproperty +$({ target: 'Reflect', stat: true }, { + deleteProperty: function deleteProperty(target, propertyKey) { + var descriptor = getOwnPropertyDescriptor(anObject(target), propertyKey); + return descriptor && !descriptor.configurable ? false : delete target[propertyKey]; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-own-property-descriptor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-own-property-descriptor.js new file mode 100644 index 0000000..335aac4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-own-property-descriptor.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var anObject = require('../internals/an-object'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); + +// `Reflect.getOwnPropertyDescriptor` method +// https://tc39.github.io/ecma262/#sec-reflect.getownpropertydescriptor +$({ target: 'Reflect', stat: true, sham: !DESCRIPTORS }, { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) { + return getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-prototype-of.js new file mode 100644 index 0000000..9785949 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get-prototype-of.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var objectGetPrototypeOf = require('../internals/object-get-prototype-of'); +var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter'); + +// `Reflect.getPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-reflect.getprototypeof +$({ target: 'Reflect', stat: true, sham: !CORRECT_PROTOTYPE_GETTER }, { + getPrototypeOf: function getPrototypeOf(target) { + return objectGetPrototypeOf(anObject(target)); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get.js new file mode 100644 index 0000000..10e7962 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.get.js @@ -0,0 +1,24 @@ +var $ = require('../internals/export'); +var isObject = require('../internals/is-object'); +var anObject = require('../internals/an-object'); +var has = require('../internals/has'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); + +// `Reflect.get` method +// https://tc39.github.io/ecma262/#sec-reflect.get +function get(target, propertyKey /* , receiver */) { + var receiver = arguments.length < 3 ? target : arguments[2]; + var descriptor, prototype; + if (anObject(target) === receiver) return target[propertyKey]; + if (descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey)) return has(descriptor, 'value') + ? descriptor.value + : descriptor.get === undefined + ? undefined + : descriptor.get.call(receiver); + if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver); +} + +$({ target: 'Reflect', stat: true }, { + get: get +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.has.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.has.js new file mode 100644 index 0000000..c6a8ced --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.has.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); + +// `Reflect.has` method +// https://tc39.github.io/ecma262/#sec-reflect.has +$({ target: 'Reflect', stat: true }, { + has: function has(target, propertyKey) { + return propertyKey in target; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.is-extensible.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.is-extensible.js new file mode 100644 index 0000000..876eae3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.is-extensible.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); + +var objectIsExtensible = Object.isExtensible; + +// `Reflect.isExtensible` method +// https://tc39.github.io/ecma262/#sec-reflect.isextensible +$({ target: 'Reflect', stat: true }, { + isExtensible: function isExtensible(target) { + anObject(target); + return objectIsExtensible ? objectIsExtensible(target) : true; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.own-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.own-keys.js new file mode 100644 index 0000000..7a8f3f0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.own-keys.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var ownKeys = require('../internals/own-keys'); + +// `Reflect.ownKeys` method +// https://tc39.github.io/ecma262/#sec-reflect.ownkeys +$({ target: 'Reflect', stat: true }, { + ownKeys: ownKeys +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.prevent-extensions.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.prevent-extensions.js new file mode 100644 index 0000000..92d0475 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.prevent-extensions.js @@ -0,0 +1,19 @@ +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var FREEZING = require('../internals/freezing'); + +// `Reflect.preventExtensions` method +// https://tc39.github.io/ecma262/#sec-reflect.preventextensions +$({ target: 'Reflect', stat: true, sham: !FREEZING }, { + preventExtensions: function preventExtensions(target) { + anObject(target); + try { + var objectPreventExtensions = getBuiltIn('Object', 'preventExtensions'); + if (objectPreventExtensions) objectPreventExtensions(target); + return true; + } catch (error) { + return false; + } + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set-prototype-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set-prototype-of.js new file mode 100644 index 0000000..7900440 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set-prototype-of.js @@ -0,0 +1,19 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var aPossiblePrototype = require('../internals/a-possible-prototype'); +var objectSetPrototypeOf = require('../internals/object-set-prototype-of'); + +// `Reflect.setPrototypeOf` method +// https://tc39.github.io/ecma262/#sec-reflect.setprototypeof +if (objectSetPrototypeOf) $({ target: 'Reflect', stat: true }, { + setPrototypeOf: function setPrototypeOf(target, proto) { + anObject(target); + aPossiblePrototype(proto); + try { + objectSetPrototypeOf(target, proto); + return true; + } catch (error) { + return false; + } + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set.js new file mode 100644 index 0000000..a16b762 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.reflect.set.js @@ -0,0 +1,45 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var has = require('../internals/has'); +var fails = require('../internals/fails'); +var definePropertyModule = require('../internals/object-define-property'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); + +// `Reflect.set` method +// https://tc39.github.io/ecma262/#sec-reflect.set +function set(target, propertyKey, V /* , receiver */) { + var receiver = arguments.length < 4 ? target : arguments[3]; + var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey); + var existingDescriptor, prototype; + if (!ownDescriptor) { + if (isObject(prototype = getPrototypeOf(target))) { + return set(prototype, propertyKey, V, receiver); + } + ownDescriptor = createPropertyDescriptor(0); + } + if (has(ownDescriptor, 'value')) { + if (ownDescriptor.writable === false || !isObject(receiver)) return false; + if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) { + if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false; + existingDescriptor.value = V; + definePropertyModule.f(receiver, propertyKey, existingDescriptor); + } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V)); + return true; + } + return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), true); +} + +// MS Edge 17-18 Reflect.set allows setting the property to object +// with non-writable property on the prototype +var MS_EDGE_BUG = fails(function () { + var object = definePropertyModule.f({}, 'a', { configurable: true }); + // eslint-disable-next-line no-undef + return Reflect.set(getPrototypeOf(object), 'a', 1, object) !== false; +}); + +$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, { + set: set +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.constructor.js new file mode 100644 index 0000000..3f99a69 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.constructor.js @@ -0,0 +1,3 @@ +var setSpecies = require('../internals/set-species'); + +setSpecies('RegExp'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.exec.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.exec.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.exec.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.flags.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.flags.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.flags.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.sticky.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.sticky.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.sticky.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.test.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.test.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.test.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.to-string.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.regexp.to-string.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.set.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.set.js new file mode 100644 index 0000000..ac90041 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.set.js @@ -0,0 +1,9 @@ +'use strict'; +var collection = require('../internals/collection'); +var collectionStrong = require('../internals/collection-strong'); + +// `Set` constructor +// https://tc39.github.io/ecma262/#sec-set-objects +module.exports = collection('Set', function (init) { + return function Set() { return init(this, arguments.length ? arguments[0] : undefined); }; +}, collectionStrong); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.anchor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.anchor.js new file mode 100644 index 0000000..004cc0a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.anchor.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.anchor` method +// https://tc39.github.io/ecma262/#sec-string.prototype.anchor +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('anchor') }, { + anchor: function anchor(name) { + return createHTML(this, 'a', 'name', name); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.big.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.big.js new file mode 100644 index 0000000..3273d00 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.big.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.big` method +// https://tc39.github.io/ecma262/#sec-string.prototype.big +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('big') }, { + big: function big() { + return createHTML(this, 'big', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.blink.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.blink.js new file mode 100644 index 0000000..9373820 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.blink.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.blink` method +// https://tc39.github.io/ecma262/#sec-string.prototype.blink +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('blink') }, { + blink: function blink() { + return createHTML(this, 'blink', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.bold.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.bold.js new file mode 100644 index 0000000..ea8c48c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.bold.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.bold` method +// https://tc39.github.io/ecma262/#sec-string.prototype.bold +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('bold') }, { + bold: function bold() { + return createHTML(this, 'b', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.code-point-at.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.code-point-at.js new file mode 100644 index 0000000..26a2da2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.code-point-at.js @@ -0,0 +1,11 @@ +'use strict'; +var $ = require('../internals/export'); +var codeAt = require('../internals/string-multibyte').codeAt; + +// `String.prototype.codePointAt` method +// https://tc39.github.io/ecma262/#sec-string.prototype.codepointat +$({ target: 'String', proto: true }, { + codePointAt: function codePointAt(pos) { + return codeAt(this, pos); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.ends-with.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.ends-with.js new file mode 100644 index 0000000..e19b0f6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.ends-with.js @@ -0,0 +1,34 @@ +'use strict'; +var $ = require('../internals/export'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var toLength = require('../internals/to-length'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); +var IS_PURE = require('../internals/is-pure'); + +var nativeEndsWith = ''.endsWith; +var min = Math.min; + +var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith'); +// https://github.com/zloirock/core-js/pull/702 +var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor(String.prototype, 'endsWith'); + return descriptor && !descriptor.writable; +}(); + +// `String.prototype.endsWith` method +// https://tc39.github.io/ecma262/#sec-string.prototype.endswith +$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + endsWith: function endsWith(searchString /* , endPosition = @length */) { + var that = String(requireObjectCoercible(this)); + notARegExp(searchString); + var endPosition = arguments.length > 1 ? arguments[1] : undefined; + var len = toLength(that.length); + var end = endPosition === undefined ? len : min(toLength(endPosition), len); + var search = String(searchString); + return nativeEndsWith + ? nativeEndsWith.call(that, search, end) + : that.slice(end - search.length, end) === search; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fixed.js new file mode 100644 index 0000000..13f8a04 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fixed.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.fixed` method +// https://tc39.github.io/ecma262/#sec-string.prototype.fixed +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fixed') }, { + fixed: function fixed() { + return createHTML(this, 'tt', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontcolor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontcolor.js new file mode 100644 index 0000000..88636c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontcolor.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.fontcolor` method +// https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontcolor') }, { + fontcolor: function fontcolor(color) { + return createHTML(this, 'font', 'color', color); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontsize.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontsize.js new file mode 100644 index 0000000..09c0715 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.fontsize.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.fontsize` method +// https://tc39.github.io/ecma262/#sec-string.prototype.fontsize +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('fontsize') }, { + fontsize: function fontsize(size) { + return createHTML(this, 'font', 'size', size); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.from-code-point.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.from-code-point.js new file mode 100644 index 0000000..139ed89 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.from-code-point.js @@ -0,0 +1,27 @@ +var $ = require('../internals/export'); +var toAbsoluteIndex = require('../internals/to-absolute-index'); + +var fromCharCode = String.fromCharCode; +var nativeFromCodePoint = String.fromCodePoint; + +// length should be 1, old FF problem +var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; + +// `String.fromCodePoint` method +// https://tc39.github.io/ecma262/#sec-string.fromcodepoint +$({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, { + fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars + var elements = []; + var length = arguments.length; + var i = 0; + var code; + while (length > i) { + code = +arguments[i++]; + if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point'); + elements.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00) + ); + } return elements.join(''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.includes.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.includes.js new file mode 100644 index 0000000..25dbcd8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.includes.js @@ -0,0 +1,14 @@ +'use strict'; +var $ = require('../internals/export'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); + +// `String.prototype.includes` method +// https://tc39.github.io/ecma262/#sec-string.prototype.includes +$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { + includes: function includes(searchString /* , position = 0 */) { + return !!~String(requireObjectCoercible(this)) + .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.italics.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.italics.js new file mode 100644 index 0000000..76bf3e4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.italics.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.italics` method +// https://tc39.github.io/ecma262/#sec-string.prototype.italics +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('italics') }, { + italics: function italics() { + return createHTML(this, 'i', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.iterator.js new file mode 100644 index 0000000..8a268e0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.iterator.js @@ -0,0 +1,29 @@ +'use strict'; +var charAt = require('../internals/string-multibyte').charAt; +var InternalStateModule = require('../internals/internal-state'); +var defineIterator = require('../internals/define-iterator'); + +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// `String.prototype[@@iterator]` method +// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator +defineIterator(String, 'String', function (iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); +// `%StringIteratorPrototype%.next` method +// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next +}, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: point, done: false }; +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.link.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.link.js new file mode 100644 index 0000000..65f8232 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.link.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.link` method +// https://tc39.github.io/ecma262/#sec-string.prototype.link +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, { + link: function link(url) { + return createHTML(this, 'a', 'href', url); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match-all.js new file mode 100644 index 0000000..3fc36eb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match-all.js @@ -0,0 +1,109 @@ +'use strict'; +var $ = require('../internals/export'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var toLength = require('../internals/to-length'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var classof = require('../internals/classof-raw'); +var isRegExp = require('../internals/is-regexp'); +var getRegExpFlags = require('../internals/regexp-flags'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var fails = require('../internals/fails'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var speciesConstructor = require('../internals/species-constructor'); +var advanceStringIndex = require('../internals/advance-string-index'); +var InternalStateModule = require('../internals/internal-state'); +var IS_PURE = require('../internals/is-pure'); + +var MATCH_ALL = wellKnownSymbol('matchAll'); +var REGEXP_STRING = 'RegExp String'; +var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR); +var RegExpPrototype = RegExp.prototype; +var regExpBuiltinExec = RegExpPrototype.exec; +var nativeMatchAll = ''.matchAll; + +var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () { + 'a'.matchAll(/./); +}); + +var regExpExec = function (R, S) { + var exec = R.exec; + var result; + if (typeof exec == 'function') { + result = exec.call(R, S); + if (typeof result != 'object') throw TypeError('Incorrect exec result'); + return result; + } return regExpBuiltinExec.call(R, S); +}; + +// eslint-disable-next-line max-len +var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) { + setInternalState(this, { + type: REGEXP_STRING_ITERATOR, + regexp: regexp, + string: string, + global: global, + unicode: fullUnicode, + done: false + }); +}, REGEXP_STRING, function next() { + var state = getInternalState(this); + if (state.done) return { value: undefined, done: true }; + var R = state.regexp; + var S = state.string; + var match = regExpExec(R, S); + if (match === null) return { value: undefined, done: state.done = true }; + if (state.global) { + if (String(match[0]) == '') R.lastIndex = advanceStringIndex(S, toLength(R.lastIndex), state.unicode); + return { value: match, done: false }; + } + state.done = true; + return { value: match, done: false }; +}); + +var $matchAll = function (string) { + var R = anObject(this); + var S = String(string); + var C, flagsValue, flags, matcher, global, fullUnicode; + C = speciesConstructor(R, RegExp); + flagsValue = R.flags; + if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) { + flagsValue = getRegExpFlags.call(R); + } + flags = flagsValue === undefined ? '' : String(flagsValue); + matcher = new C(C === RegExp ? R.source : R, flags); + global = !!~flags.indexOf('g'); + fullUnicode = !!~flags.indexOf('u'); + matcher.lastIndex = toLength(R.lastIndex); + return new $RegExpStringIterator(matcher, S, global, fullUnicode); +}; + +// `String.prototype.matchAll` method +// https://github.com/tc39/proposal-string-matchall +$({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, { + matchAll: function matchAll(regexp) { + var O = requireObjectCoercible(this); + var flags, S, matcher, rx; + if (regexp != null) { + if (isRegExp(regexp)) { + flags = String(requireObjectCoercible('flags' in RegExpPrototype + ? regexp.flags + : getRegExpFlags.call(regexp) + )); + if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes'); + } + if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments); + matcher = regexp[MATCH_ALL]; + if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll; + if (matcher != null) return aFunction(matcher).call(regexp, O); + } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments); + S = String(O); + rx = new RegExp(regexp, 'g'); + return IS_PURE ? $matchAll.call(rx, S) : rx[MATCH_ALL](S); + } +}); + +IS_PURE || MATCH_ALL in RegExpPrototype || createNonEnumerableProperty(RegExpPrototype, MATCH_ALL, $matchAll); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.match.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-end.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-end.js new file mode 100644 index 0000000..9108024 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-end.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $padEnd = require('../internals/string-pad').end; +var WEBKIT_BUG = require('../internals/string-pad-webkit-bug'); + +// `String.prototype.padEnd` method +// https://tc39.github.io/ecma262/#sec-string.prototype.padend +$({ target: 'String', proto: true, forced: WEBKIT_BUG }, { + padEnd: function padEnd(maxLength /* , fillString = ' ' */) { + return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-start.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-start.js new file mode 100644 index 0000000..69b788f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.pad-start.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $padStart = require('../internals/string-pad').start; +var WEBKIT_BUG = require('../internals/string-pad-webkit-bug'); + +// `String.prototype.padStart` method +// https://tc39.github.io/ecma262/#sec-string.prototype.padstart +$({ target: 'String', proto: true, forced: WEBKIT_BUG }, { + padStart: function padStart(maxLength /* , fillString = ' ' */) { + return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.raw.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.raw.js new file mode 100644 index 0000000..beb0783 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.raw.js @@ -0,0 +1,19 @@ +var $ = require('../internals/export'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toLength = require('../internals/to-length'); + +// `String.raw` method +// https://tc39.github.io/ecma262/#sec-string.raw +$({ target: 'String', stat: true }, { + raw: function raw(template) { + var rawTemplate = toIndexedObject(template.raw); + var literalSegments = toLength(rawTemplate.length); + var argumentsLength = arguments.length; + var elements = []; + var i = 0; + while (literalSegments > i) { + elements.push(String(rawTemplate[i++])); + if (i < argumentsLength) elements.push(String(arguments[i])); + } return elements.join(''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.repeat.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.repeat.js new file mode 100644 index 0000000..43890aa --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.repeat.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var repeat = require('../internals/string-repeat'); + +// `String.prototype.repeat` method +// https://tc39.github.io/ecma262/#sec-string.prototype.repeat +$({ target: 'String', proto: true }, { + repeat: repeat +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.replace.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.replace.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.replace.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.search.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.search.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.search.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.small.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.small.js new file mode 100644 index 0000000..c8587d6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.small.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.small` method +// https://tc39.github.io/ecma262/#sec-string.prototype.small +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('small') }, { + small: function small() { + return createHTML(this, 'small', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.split.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.split.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.split.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.starts-with.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.starts-with.js new file mode 100644 index 0000000..e4fe655 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.starts-with.js @@ -0,0 +1,32 @@ +'use strict'; +var $ = require('../internals/export'); +var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; +var toLength = require('../internals/to-length'); +var notARegExp = require('../internals/not-a-regexp'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); +var IS_PURE = require('../internals/is-pure'); + +var nativeStartsWith = ''.startsWith; +var min = Math.min; + +var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith'); +// https://github.com/zloirock/core-js/pull/702 +var MDN_POLYFILL_BUG = !IS_PURE && !CORRECT_IS_REGEXP_LOGIC && !!function () { + var descriptor = getOwnPropertyDescriptor(String.prototype, 'startsWith'); + return descriptor && !descriptor.writable; +}(); + +// `String.prototype.startsWith` method +// https://tc39.github.io/ecma262/#sec-string.prototype.startswith +$({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGEXP_LOGIC }, { + startsWith: function startsWith(searchString /* , position = 0 */) { + var that = String(requireObjectCoercible(this)); + notARegExp(searchString); + var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length)); + var search = String(searchString); + return nativeStartsWith + ? nativeStartsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.strike.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.strike.js new file mode 100644 index 0000000..4f0fa2e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.strike.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.strike` method +// https://tc39.github.io/ecma262/#sec-string.prototype.strike +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('strike') }, { + strike: function strike() { + return createHTML(this, 'strike', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sub.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sub.js new file mode 100644 index 0000000..4b901d2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sub.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.sub` method +// https://tc39.github.io/ecma262/#sec-string.prototype.sub +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sub') }, { + sub: function sub() { + return createHTML(this, 'sub', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sup.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sup.js new file mode 100644 index 0000000..3fc0b18 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.sup.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var createHTML = require('../internals/create-html'); +var forcedStringHTMLMethod = require('../internals/string-html-forced'); + +// `String.prototype.sup` method +// https://tc39.github.io/ecma262/#sec-string.prototype.sup +$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('sup') }, { + sup: function sup() { + return createHTML(this, 'sup', '', ''); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-end.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-end.js new file mode 100644 index 0000000..4db829a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-end.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var $trimEnd = require('../internals/string-trim').end; +var forcedStringTrimMethod = require('../internals/string-trim-forced'); + +var FORCED = forcedStringTrimMethod('trimEnd'); + +var trimEnd = FORCED ? function trimEnd() { + return $trimEnd(this); +} : ''.trimEnd; + +// `String.prototype.{ trimEnd, trimRight }` methods +// https://github.com/tc39/ecmascript-string-left-right-trim +$({ target: 'String', proto: true, forced: FORCED }, { + trimEnd: trimEnd, + trimRight: trimEnd +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-start.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-start.js new file mode 100644 index 0000000..b4f6e43 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim-start.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var $trimStart = require('../internals/string-trim').start; +var forcedStringTrimMethod = require('../internals/string-trim-forced'); + +var FORCED = forcedStringTrimMethod('trimStart'); + +var trimStart = FORCED ? function trimStart() { + return $trimStart(this); +} : ''.trimStart; + +// `String.prototype.{ trimStart, trimLeft }` methods +// https://github.com/tc39/ecmascript-string-left-right-trim +$({ target: 'String', proto: true, forced: FORCED }, { + trimStart: trimStart, + trimLeft: trimStart +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim.js new file mode 100644 index 0000000..124768f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.string.trim.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var $trim = require('../internals/string-trim').trim; +var forcedStringTrimMethod = require('../internals/string-trim-forced'); + +// `String.prototype.trim` method +// https://tc39.github.io/ecma262/#sec-string.prototype.trim +$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, { + trim: function trim() { + return $trim(this); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.async-iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.async-iterator.js new file mode 100644 index 0000000..ecf7281 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.async-iterator.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.asyncIterator` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.asynciterator +defineWellKnownSymbol('asyncIterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.description.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.description.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.description.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.has-instance.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.has-instance.js new file mode 100644 index 0000000..2226ddb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.has-instance.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.hasInstance` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.hasinstance +defineWellKnownSymbol('hasInstance'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js new file mode 100644 index 0000000..d53771b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.isConcatSpreadable` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.isconcatspreadable +defineWellKnownSymbol('isConcatSpreadable'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.iterator.js new file mode 100644 index 0000000..e43878d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.iterator.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.iterator` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.iterator +defineWellKnownSymbol('iterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.js new file mode 100644 index 0000000..07f1ee9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.js @@ -0,0 +1,311 @@ +'use strict'; +var $ = require('../internals/export'); +var global = require('../internals/global'); +var getBuiltIn = require('../internals/get-built-in'); +var IS_PURE = require('../internals/is-pure'); +var DESCRIPTORS = require('../internals/descriptors'); +var NATIVE_SYMBOL = require('../internals/native-symbol'); +var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid'); +var fails = require('../internals/fails'); +var has = require('../internals/has'); +var isArray = require('../internals/is-array'); +var isObject = require('../internals/is-object'); +var anObject = require('../internals/an-object'); +var toObject = require('../internals/to-object'); +var toIndexedObject = require('../internals/to-indexed-object'); +var toPrimitive = require('../internals/to-primitive'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var nativeObjectCreate = require('../internals/object-create'); +var objectKeys = require('../internals/object-keys'); +var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); +var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external'); +var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); +var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); +var definePropertyModule = require('../internals/object-define-property'); +var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var redefine = require('../internals/redefine'); +var shared = require('../internals/shared'); +var sharedKey = require('../internals/shared-key'); +var hiddenKeys = require('../internals/hidden-keys'); +var uid = require('../internals/uid'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped'); +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); +var setToStringTag = require('../internals/set-to-string-tag'); +var InternalStateModule = require('../internals/internal-state'); +var $forEach = require('../internals/array-iteration').forEach; + +var HIDDEN = sharedKey('hidden'); +var SYMBOL = 'Symbol'; +var PROTOTYPE = 'prototype'; +var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SYMBOL); +var ObjectPrototype = Object[PROTOTYPE]; +var $Symbol = global.Symbol; +var $stringify = getBuiltIn('JSON', 'stringify'); +var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; +var nativeDefineProperty = definePropertyModule.f; +var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; +var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; +var AllSymbols = shared('symbols'); +var ObjectPrototypeSymbols = shared('op-symbols'); +var StringToSymbolRegistry = shared('string-to-symbol-registry'); +var SymbolToStringRegistry = shared('symbol-to-string-registry'); +var WellKnownSymbolsStore = shared('wks'); +var QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDescriptor = DESCRIPTORS && fails(function () { + return nativeObjectCreate(nativeDefineProperty({}, 'a', { + get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } + })).a != 7; +}) ? function (O, P, Attributes) { + var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); + if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; + nativeDefineProperty(O, P, Attributes); + if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { + nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); + } +} : nativeDefineProperty; + +var wrap = function (tag, description) { + var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]); + setInternalState(symbol, { + type: SYMBOL, + tag: tag, + description: description + }); + if (!DESCRIPTORS) symbol.description = description; + return symbol; +}; + +var isSymbol = USE_SYMBOL_AS_UID ? function (it) { + return typeof it == 'symbol'; +} : function (it) { + return Object(it) instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(O, P, Attributes) { + if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); + anObject(O); + var key = toPrimitive(P, true); + anObject(Attributes); + if (has(AllSymbols, key)) { + if (!Attributes.enumerable) { + if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); + O[HIDDEN][key] = true; + } else { + if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; + Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); + } return setSymbolDescriptor(O, key, Attributes); + } return nativeDefineProperty(O, key, Attributes); +}; + +var $defineProperties = function defineProperties(O, Properties) { + anObject(O); + var properties = toIndexedObject(Properties); + var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); + $forEach(keys, function (key) { + if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); + }); + return O; +}; + +var $create = function create(O, Properties) { + return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); +}; + +var $propertyIsEnumerable = function propertyIsEnumerable(V) { + var P = toPrimitive(V, true); + var enumerable = nativePropertyIsEnumerable.call(this, P); + if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; + return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; +}; + +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { + var it = toIndexedObject(O); + var key = toPrimitive(P, true); + if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; + var descriptor = nativeGetOwnPropertyDescriptor(it, key); + if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { + descriptor.enumerable = true; + } + return descriptor; +}; + +var $getOwnPropertyNames = function getOwnPropertyNames(O) { + var names = nativeGetOwnPropertyNames(toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); + }); + return result; +}; + +var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { + var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; + var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); + var result = []; + $forEach(names, function (key) { + if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { + result.push(AllSymbols[key]); + } + }); + return result; +}; + +// `Symbol` constructor +// https://tc39.github.io/ecma262/#sec-symbol-constructor +if (!NATIVE_SYMBOL) { + $Symbol = function Symbol() { + if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); + var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); + var tag = uid(description); + var setter = function (value) { + if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value); + if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; + setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); + }; + if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); + return wrap(tag, description); + }; + + redefine($Symbol[PROTOTYPE], 'toString', function toString() { + return getInternalState(this).tag; + }); + + redefine($Symbol, 'withoutSetter', function (description) { + return wrap(uid(description), description); + }); + + propertyIsEnumerableModule.f = $propertyIsEnumerable; + definePropertyModule.f = $defineProperty; + getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; + getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; + getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; + + wrappedWellKnownSymbolModule.f = function (name) { + return wrap(wellKnownSymbol(name), name); + }; + + if (DESCRIPTORS) { + // https://github.com/tc39/proposal-Symbol-description + nativeDefineProperty($Symbol[PROTOTYPE], 'description', { + configurable: true, + get: function description() { + return getInternalState(this).description; + } + }); + if (!IS_PURE) { + redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); + } + } +} + +$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { + Symbol: $Symbol +}); + +$forEach(objectKeys(WellKnownSymbolsStore), function (name) { + defineWellKnownSymbol(name); +}); + +$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { + // `Symbol.for` method + // https://tc39.github.io/ecma262/#sec-symbol.for + 'for': function (key) { + var string = String(key); + if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; + var symbol = $Symbol(string); + StringToSymbolRegistry[string] = symbol; + SymbolToStringRegistry[symbol] = string; + return symbol; + }, + // `Symbol.keyFor` method + // https://tc39.github.io/ecma262/#sec-symbol.keyfor + keyFor: function keyFor(sym) { + if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); + if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; + }, + useSetter: function () { USE_SETTER = true; }, + useSimple: function () { USE_SETTER = false; } +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { + // `Object.create` method + // https://tc39.github.io/ecma262/#sec-object.create + create: $create, + // `Object.defineProperty` method + // https://tc39.github.io/ecma262/#sec-object.defineproperty + defineProperty: $defineProperty, + // `Object.defineProperties` method + // https://tc39.github.io/ecma262/#sec-object.defineproperties + defineProperties: $defineProperties, + // `Object.getOwnPropertyDescriptor` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors + getOwnPropertyDescriptor: $getOwnPropertyDescriptor +}); + +$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { + // `Object.getOwnPropertyNames` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertynames + getOwnPropertyNames: $getOwnPropertyNames, + // `Object.getOwnPropertySymbols` method + // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives +// https://bugs.chromium.org/p/v8/issues/detail?id=3443 +$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, { + getOwnPropertySymbols: function getOwnPropertySymbols(it) { + return getOwnPropertySymbolsModule.f(toObject(it)); + } +}); + +// `JSON.stringify` method behavior with symbols +// https://tc39.github.io/ecma262/#sec-json.stringify +if ($stringify) { + var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () { + var symbol = $Symbol(); + // MS Edge converts symbol values to JSON as {} + return $stringify([symbol]) != '[null]' + // WebKit converts symbol values to JSON as null + || $stringify({ a: symbol }) != '{}' + // V8 throws on boxed symbols + || $stringify(Object(symbol)) != '{}'; + }); + + $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, { + // eslint-disable-next-line no-unused-vars + stringify: function stringify(it, replacer, space) { + var args = [it]; + var index = 1; + var $replacer; + while (arguments.length > index) args.push(arguments[index++]); + $replacer = replacer; + if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined + if (!isArray(replacer)) replacer = function (key, value) { + if (typeof $replacer == 'function') value = $replacer.call(this, key, value); + if (!isSymbol(value)) return value; + }; + args[1] = replacer; + return $stringify.apply(null, args); + } + }); +} + +// `Symbol.prototype[@@toPrimitive]` method +// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive +if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) { + createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +} +// `Symbol.prototype[@@toStringTag]` property +// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag +setToStringTag($Symbol, SYMBOL); + +hiddenKeys[HIDDEN] = true; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match-all.js new file mode 100644 index 0000000..b16c8be --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match-all.js @@ -0,0 +1,4 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.matchAll` well-known symbol +defineWellKnownSymbol('matchAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match.js new file mode 100644 index 0000000..ec2fbdb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.match.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.match` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.match +defineWellKnownSymbol('match'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.replace.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.replace.js new file mode 100644 index 0000000..d252d8d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.replace.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.replace` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.replace +defineWellKnownSymbol('replace'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.search.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.search.js new file mode 100644 index 0000000..0c28e62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.search.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.search` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.search +defineWellKnownSymbol('search'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.species.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.species.js new file mode 100644 index 0000000..8391f22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.species.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.species` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.species +defineWellKnownSymbol('species'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.split.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.split.js new file mode 100644 index 0000000..5f76df4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.split.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.split` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.split +defineWellKnownSymbol('split'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-primitive.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-primitive.js new file mode 100644 index 0000000..c297826 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-primitive.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.toPrimitive` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.toprimitive +defineWellKnownSymbol('toPrimitive'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-string-tag.js new file mode 100644 index 0000000..8ddbfad --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.to-string-tag.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.toStringTag` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.tostringtag +defineWellKnownSymbol('toStringTag'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.unscopables.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.unscopables.js new file mode 100644 index 0000000..a9daa60 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.symbol.unscopables.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.unscopables` well-known symbol +// https://tc39.github.io/ecma262/#sec-symbol.unscopables +defineWellKnownSymbol('unscopables'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.copy-within.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.copy-within.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.every.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.every.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.every.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.fill.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.fill.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.fill.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.filter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.filter.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.filter.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find-index.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find-index.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.find.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float32-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float32-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float32-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float64-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float64-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.float64-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.for-each.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.for-each.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.from.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.from.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.includes.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.includes.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.includes.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.index-of.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.index-of.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int16-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int16-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int16-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int32-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int32-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int32-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int8-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int8-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.int8-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.iterator.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.iterator.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.join.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.join.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.join.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.last-index-of.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.last-index-of.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.map.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.map.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.of.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.of.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce-right.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce-right.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reduce.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reverse.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.reverse.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.set.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.set.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.set.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.slice.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.slice.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.slice.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.some.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.some.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.some.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.sort.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.sort.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.sort.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.subarray.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.subarray.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.subarray.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-locale-string.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-locale-string.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-locale-string.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-string.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.to-string.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint16-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint16-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint16-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint32-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint32-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint32-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-clamped-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-clamped-array.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.typed-array.uint8-clamped-array.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-map.js new file mode 100644 index 0000000..38f2f72 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-map.js @@ -0,0 +1,67 @@ +'use strict'; +var global = require('../internals/global'); +var redefineAll = require('../internals/redefine-all'); +var InternalMetadataModule = require('../internals/internal-metadata'); +var collection = require('../internals/collection'); +var collectionWeak = require('../internals/collection-weak'); +var isObject = require('../internals/is-object'); +var enforceIternalState = require('../internals/internal-state').enforce; +var NATIVE_WEAK_MAP = require('../internals/native-weak-map'); + +var IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global; +var isExtensible = Object.isExtensible; +var InternalWeakMap; + +var wrapper = function (init) { + return function WeakMap() { + return init(this, arguments.length ? arguments[0] : undefined); + }; +}; + +// `WeakMap` constructor +// https://tc39.github.io/ecma262/#sec-weakmap-constructor +var $WeakMap = module.exports = collection('WeakMap', wrapper, collectionWeak); + +// IE11 WeakMap frozen keys fix +// We can't use feature detection because it crash some old IE builds +// https://github.com/zloirock/core-js/issues/485 +if (NATIVE_WEAK_MAP && IS_IE11) { + InternalWeakMap = collectionWeak.getConstructor(wrapper, 'WeakMap', true); + InternalMetadataModule.REQUIRED = true; + var WeakMapPrototype = $WeakMap.prototype; + var nativeDelete = WeakMapPrototype['delete']; + var nativeHas = WeakMapPrototype.has; + var nativeGet = WeakMapPrototype.get; + var nativeSet = WeakMapPrototype.set; + redefineAll(WeakMapPrototype, { + 'delete': function (key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeDelete.call(this, key) || state.frozen['delete'](key); + } return nativeDelete.call(this, key); + }, + has: function has(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas.call(this, key) || state.frozen.has(key); + } return nativeHas.call(this, key); + }, + get: function get(key) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + return nativeHas.call(this, key) ? nativeGet.call(this, key) : state.frozen.get(key); + } return nativeGet.call(this, key); + }, + set: function set(key, value) { + if (isObject(key) && !isExtensible(key)) { + var state = enforceIternalState(this); + if (!state.frozen) state.frozen = new InternalWeakMap(); + nativeHas.call(this, key) ? nativeSet.call(this, key, value) : state.frozen.set(key, value); + } else nativeSet.call(this, key, value); + return this; + } + }); +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-set.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-set.js new file mode 100644 index 0000000..ef6b1bc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/es.weak-set.js @@ -0,0 +1,9 @@ +'use strict'; +var collection = require('../internals/collection'); +var collectionWeak = require('../internals/collection-weak'); + +// `WeakSet` constructor +// https://tc39.github.io/ecma262/#sec-weakset-constructor +collection('WeakSet', function (init) { + return function WeakSet() { return init(this, arguments.length ? arguments[0] : undefined); }; +}, collectionWeak); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.aggregate-error.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.aggregate-error.js new file mode 100644 index 0000000..20578b6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.aggregate-error.js @@ -0,0 +1,45 @@ +'use strict'; +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var setPrototypeOf = require('../internals/object-set-prototype-of'); +var create = require('../internals/object-create'); +var defineProperty = require('../internals/object-define-property'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var iterate = require('../internals/iterate'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var InternalStateModule = require('../internals/internal-state'); + +var setInternalState = InternalStateModule.set; +var getInternalAggregateErrorState = InternalStateModule.getterFor('AggregateError'); + +var $AggregateError = function AggregateError(errors, message) { + var that = this; + if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message); + if (setPrototypeOf) { + that = setPrototypeOf(new Error(message), getPrototypeOf(that)); + } + var errorsArray = []; + iterate(errors, errorsArray.push, errorsArray); + if (DESCRIPTORS) setInternalState(that, { errors: errorsArray, type: 'AggregateError' }); + else that.errors = errorsArray; + if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message)); + return that; +}; + +$AggregateError.prototype = create(Error.prototype, { + constructor: createPropertyDescriptor(5, $AggregateError), + message: createPropertyDescriptor(5, ''), + name: createPropertyDescriptor(5, 'AggregateError') +}); + +if (DESCRIPTORS) defineProperty.f($AggregateError.prototype, 'errors', { + get: function () { + return getInternalAggregateErrorState(this).errors; + }, + configurable: true +}); + +$({ global: true }, { + AggregateError: $AggregateError +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.is-template-object.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.is-template-object.js new file mode 100644 index 0000000..a1d8428 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.is-template-object.js @@ -0,0 +1,28 @@ +var $ = require('../internals/export'); +var isArray = require('../internals/is-array'); + +var isFrozen = Object.isFrozen; + +var isFrozenStringArray = function (array, allowUndefined) { + if (!isFrozen || !isArray(array) || !isFrozen(array)) return false; + var index = 0; + var length = array.length; + var element; + while (index < length) { + element = array[index++]; + if (!(typeof element === 'string' || (allowUndefined && typeof element === 'undefined'))) { + return false; + } + } return length !== 0; +}; + +// `Array.isTemplateObject` method +// https://github.com/tc39/proposal-array-is-template-object +$({ target: 'Array', stat: true }, { + isTemplateObject: function isTemplateObject(value) { + if (!isFrozenStringArray(value, true)) return false; + var raw = value.raw; + if (raw.length !== value.length || !isFrozenStringArray(raw, false)) return false; + return true; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-index.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-index.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-index.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-item.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-item.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.array.last-item.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.as-indexed-pairs.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.as-indexed-pairs.js new file mode 100644 index 0000000..446deee --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.as-indexed-pairs.js @@ -0,0 +1,27 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) { + var state = this; + var iterator = state.iterator; + + return Promise.resolve(anObject(state.next.call(iterator, arg))).then(function (step) { + if (anObject(step).done) { + state.done = true; + return { done: true, value: undefined }; + } + return { done: false, value: [state.index++, step.value] }; + }); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + asIndexedPairs: function asIndexedPairs() { + return new AsyncIteratorProxy({ + iterator: anObject(this), + index: 0 + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.constructor.js new file mode 100644 index 0000000..5a1d4ad --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.constructor.js @@ -0,0 +1,29 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anInstance = require('../internals/an-instance'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var has = require('../internals/has'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var AsyncIteratorPrototype = require('../internals/async-iterator-prototype'); +var IS_PURE = require('../internals/is-pure'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +var AsyncIteratorConstructor = function AsyncIterator() { + anInstance(this, AsyncIteratorConstructor); +}; + +AsyncIteratorConstructor.prototype = AsyncIteratorPrototype; + +if (!has(AsyncIteratorPrototype, TO_STRING_TAG)) { + createNonEnumerableProperty(AsyncIteratorPrototype, TO_STRING_TAG, 'AsyncIterator'); +} + +if (!has(AsyncIteratorPrototype, 'constructor') || AsyncIteratorPrototype.constructor === Object) { + createNonEnumerableProperty(AsyncIteratorPrototype, 'constructor', AsyncIteratorConstructor); +} + +$({ global: true, forced: IS_PURE }, { + AsyncIterator: AsyncIteratorConstructor +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.drop.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.drop.js new file mode 100644 index 0000000..fd2878b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.drop.js @@ -0,0 +1,41 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var toPositiveInteger = require('../internals/to-positive-integer'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) { + var state = this; + + return new Promise(function (resolve, reject) { + var loop = function () { + try { + Promise.resolve( + anObject(state.next.call(state.iterator, state.remaining ? undefined : arg)) + ).then(function (step) { + try { + if (anObject(step).done) { + state.done = true; + resolve({ done: true, value: undefined }); + } else if (state.remaining) { + state.remaining--; + loop(); + } else resolve({ done: false, value: step.value }); + } catch (err) { reject(err); } + }, reject); + } catch (error) { reject(error); } + }; + + loop(); + }); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + drop: function drop(limit) { + return new AsyncIteratorProxy({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.every.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.every.js new file mode 100644 index 0000000..70c945d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.every.js @@ -0,0 +1,10 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var $every = require('../internals/async-iterator-iteration').every; + +$({ target: 'AsyncIterator', proto: true, real: true }, { + every: function every(fn) { + return $every(this, fn); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.filter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.filter.js new file mode 100644 index 0000000..2ddbaba --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.filter.js @@ -0,0 +1,42 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) { + var state = this; + var filterer = state.filterer; + + return new Promise(function (resolve, reject) { + var loop = function () { + try { + Promise.resolve(anObject(state.next.call(state.iterator, arg))).then(function (step) { + try { + if (anObject(step).done) { + state.done = true; + resolve({ done: true, value: undefined }); + } else { + var value = step.value; + Promise.resolve(filterer(value)).then(function (selected) { + selected ? resolve({ done: false, value: value }) : loop(); + }, reject); + } + } catch (err) { reject(err); } + }, reject); + } catch (error) { reject(error); } + }; + + loop(); + }); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + filter: function filter(filterer) { + return new AsyncIteratorProxy({ + iterator: anObject(this), + filterer: aFunction(filterer) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.find.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.find.js new file mode 100644 index 0000000..0211e51 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.find.js @@ -0,0 +1,10 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var $find = require('../internals/async-iterator-iteration').find; + +$({ target: 'AsyncIterator', proto: true, real: true }, { + find: function find(fn) { + return $find(this, fn); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.flat-map.js new file mode 100644 index 0000000..0613368 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.flat-map.js @@ -0,0 +1,67 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); +var getAsyncIteratorMethod = require('../internals/get-async-iterator-method'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) { + var state = this; + var mapper = state.mapper; + var innerIterator, iteratorMethod; + + return new Promise(function (resolve, reject) { + var outerLoop = function () { + try { + Promise.resolve(anObject(state.next.call(state.iterator, arg))).then(function (step) { + try { + if (anObject(step).done) { + state.done = true; + resolve({ done: true, value: undefined }); + } else { + Promise.resolve(mapper(step.value)).then(function (mapped) { + try { + iteratorMethod = getAsyncIteratorMethod(mapped); + if (iteratorMethod !== undefined) { + state.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped)); + state.innerNext = aFunction(innerIterator.next); + return innerLoop(); + } reject(TypeError('.flatMap callback should return an iterable object')); + } catch (error2) { reject(error2); } + }, reject); + } + } catch (error1) { reject(error1); } + }, reject); + } catch (error) { reject(error); } + }; + + var innerLoop = function () { + if (innerIterator = state.innerIterator) { + try { + Promise.resolve(anObject(state.innerNext.call(innerIterator))).then(function (result) { + try { + if (anObject(result).done) { + state.innerIterator = state.innerNext = null; + outerLoop(); + } else resolve({ done: false, value: result.value }); + } catch (error1) { reject(error1); } + }, reject); + } catch (error) { reject(error); } + } else outerLoop(); + }; + + innerLoop(); + }); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + flatMap: function flatMap(mapper) { + return new AsyncIteratorProxy({ + iterator: anObject(this), + mapper: aFunction(mapper), + innerIterator: null, + innerNext: null + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.for-each.js new file mode 100644 index 0000000..8dfbced --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.for-each.js @@ -0,0 +1,10 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var $forEach = require('../internals/async-iterator-iteration').forEach; + +$({ target: 'AsyncIterator', proto: true, real: true }, { + forEach: function forEach(fn) { + return $forEach(this, fn); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.from.js new file mode 100644 index 0000000..e986a73 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.from.js @@ -0,0 +1,30 @@ +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var path = require('../internals/path'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var toObject = require('../internals/to-object'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); +var getAsyncIteratorMethod = require('../internals/get-async-iterator-method'); + +var AsyncIterator = path.AsyncIterator; + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg) { + return anObject(this.next.call(this.iterator, arg)); +}, true); + +$({ target: 'AsyncIterator', stat: true }, { + from: function from(O) { + var object = toObject(O); + var usingIterator = getAsyncIteratorMethod(object); + var iterator; + if (usingIterator != null) { + iterator = aFunction(usingIterator).call(object); + if (iterator instanceof AsyncIterator) return iterator; + } else { + iterator = object; + } return new AsyncIteratorProxy({ + iterator: iterator + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.map.js new file mode 100644 index 0000000..a5c2a8a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.map.js @@ -0,0 +1,30 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg, Promise) { + var state = this; + var mapper = state.mapper; + + return Promise.resolve(anObject(state.next.call(state.iterator, arg))).then(function (step) { + if (anObject(step).done) { + state.done = true; + return { done: true, value: undefined }; + } + return Promise.resolve(mapper(step.value)).then(function (value) { + return { done: false, value: value }; + }); + }); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + map: function map(mapper) { + return new AsyncIteratorProxy({ + iterator: anObject(this), + mapper: aFunction(mapper) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.reduce.js new file mode 100644 index 0000000..e5f7f9a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.reduce.js @@ -0,0 +1,46 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var getBuiltIn = require('../internals/get-built-in'); + +var Promise = getBuiltIn('Promise'); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + reduce: function reduce(reducer /* , initialValue */) { + var iterator = anObject(this); + var next = aFunction(iterator.next); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + aFunction(reducer); + + return new Promise(function (resolve, reject) { + var loop = function () { + try { + Promise.resolve(anObject(next.call(iterator))).then(function (step) { + try { + if (anObject(step).done) { + noInitial ? reject(TypeError('Reduce of empty iterator with no initial value')) : resolve(accumulator); + } else { + var value = step.value; + if (noInitial) { + noInitial = false; + accumulator = value; + loop(); + } else { + Promise.resolve(reducer(accumulator, value)).then(function (result) { + accumulator = result; + loop(); + }, reject); + } + } + } catch (err) { reject(err); } + }, reject); + } catch (error) { reject(error); } + }; + + loop(); + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.some.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.some.js new file mode 100644 index 0000000..13fc1ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.some.js @@ -0,0 +1,10 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var $some = require('../internals/async-iterator-iteration').some; + +$({ target: 'AsyncIterator', proto: true, real: true }, { + some: function some(fn) { + return $some(this, fn); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.take.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.take.js new file mode 100644 index 0000000..fc59d88 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.take.js @@ -0,0 +1,22 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var toPositiveInteger = require('../internals/to-positive-integer'); +var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy'); + +var AsyncIteratorProxy = createAsyncIteratorProxy(function (arg) { + if (!this.remaining--) { + this.done = true; + return { done: true, value: undefined }; + } return this.next.call(this.iterator, arg); +}); + +$({ target: 'AsyncIterator', proto: true, real: true }, { + take: function take(limit) { + return new AsyncIteratorProxy({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.to-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.to-array.js new file mode 100644 index 0000000..04e3e7f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.async-iterator.to-array.js @@ -0,0 +1,10 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var $toArray = require('../internals/async-iterator-iteration').toArray; + +$({ target: 'AsyncIterator', proto: true, real: true }, { + toArray: function toArray() { + return $toArray(this); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-key.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-key.js new file mode 100644 index 0000000..43bedae --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-key.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var getCompositeKeyNode = require('../internals/composite-key'); +var getBuiltIn = require('../internals/get-built-in'); +var create = require('../internals/object-create'); + +var initializer = function () { + var freeze = getBuiltIn('Object', 'freeze'); + return freeze ? freeze(create(null)) : create(null); +}; + +// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey +$({ global: true }, { + compositeKey: function compositeKey() { + return getCompositeKeyNode.apply(Object, arguments).get('object', initializer); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-symbol.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-symbol.js new file mode 100644 index 0000000..06d1b22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.composite-symbol.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); +var getCompositeKeyNode = require('../internals/composite-key'); +var getBuiltIn = require('../internals/get-built-in'); + +// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey +$({ global: true }, { + compositeSymbol: function compositeSymbol() { + if (arguments.length === 1 && typeof arguments[0] === 'string') return getBuiltIn('Symbol')['for'](arguments[0]); + return getCompositeKeyNode.apply(null, arguments).get('symbol', getBuiltIn('Symbol')); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.global-this.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.global-this.js new file mode 100644 index 0000000..c62786d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.global-this.js @@ -0,0 +1,2 @@ +// TODO: Remove from `core-js@4` +require('./es.global-this'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.as-indexed-pairs.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.as-indexed-pairs.js new file mode 100644 index 0000000..fb3bf85 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.as-indexed-pairs.js @@ -0,0 +1,20 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); + +var IteratorProxy = createIteratorProxy(function (arg) { + var result = anObject(this.next.call(this.iterator, arg)); + var done = this.done = !!result.done; + if (!done) return [this.index++, result.value]; +}); + +$({ target: 'Iterator', proto: true, real: true }, { + asIndexedPairs: function asIndexedPairs() { + return new IteratorProxy({ + iterator: anObject(this), + index: 0 + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.constructor.js new file mode 100644 index 0000000..a481dff --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.constructor.js @@ -0,0 +1,48 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var global = require('../internals/global'); +var anInstance = require('../internals/an-instance'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var fails = require('../internals/fails'); +var has = require('../internals/has'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype; +var IS_PURE = require('../internals/is-pure'); + +var ITERATOR = wellKnownSymbol('iterator'); +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +var NativeIterator = global.Iterator; + +// FF56- have non-standard global helper `Iterator` +var FORCED = IS_PURE + || typeof NativeIterator != 'function' + || NativeIterator.prototype !== IteratorPrototype + // FF44- non-standard `Iterator` passes previous tests + || !fails(function () { NativeIterator({}); }); + +var IteratorConstructor = function Iterator() { + anInstance(this, IteratorConstructor); +}; + +if (IS_PURE) { + IteratorPrototype = {}; + createNonEnumerableProperty(IteratorPrototype, ITERATOR, function () { + return this; + }); +} + +if (!has(IteratorPrototype, TO_STRING_TAG)) { + createNonEnumerableProperty(IteratorPrototype, TO_STRING_TAG, 'Iterator'); +} + +if (FORCED || !has(IteratorPrototype, 'constructor') || IteratorPrototype.constructor === Object) { + createNonEnumerableProperty(IteratorPrototype, 'constructor', IteratorConstructor); +} + +IteratorConstructor.prototype = IteratorPrototype; + +$({ global: true, forced: FORCED }, { + Iterator: IteratorConstructor +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.drop.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.drop.js new file mode 100644 index 0000000..62cc89d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.drop.js @@ -0,0 +1,30 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var toPositiveInteger = require('../internals/to-positive-integer'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); + +var IteratorProxy = createIteratorProxy(function (arg) { + var iterator = this.iterator; + var next = this.next; + var result, done; + while (this.remaining) { + this.remaining--; + result = anObject(next.call(iterator)); + done = this.done = !!result.done; + if (done) return; + } + result = anObject(next.call(iterator, arg)); + done = this.done = !!result.done; + if (!done) return result.value; +}); + +$({ target: 'Iterator', proto: true, real: true }, { + drop: function drop(limit) { + return new IteratorProxy({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.every.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.every.js new file mode 100644 index 0000000..faa04fe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.every.js @@ -0,0 +1,16 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); + +$({ target: 'Iterator', proto: true, real: true }, { + every: function every(fn) { + anObject(this); + aFunction(fn); + return !iterate(this, function (value) { + if (!fn(value)) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.filter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.filter.js new file mode 100644 index 0000000..db45c9b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.filter.js @@ -0,0 +1,30 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); +var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); + +var IteratorProxy = createIteratorProxy(function (arg) { + var iterator = this.iterator; + var filterer = this.filterer; + var next = this.next; + var result, done, value; + while (true) { + result = anObject(next.call(iterator, arg)); + done = this.done = !!result.done; + if (done) return; + value = result.value; + if (callWithSafeIterationClosing(iterator, filterer, value)) return value; + } +}); + +$({ target: 'Iterator', proto: true, real: true }, { + filter: function filter(filterer) { + return new IteratorProxy({ + iterator: anObject(this), + filterer: aFunction(filterer) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.find.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.find.js new file mode 100644 index 0000000..42db9ea --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.find.js @@ -0,0 +1,16 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); + +$({ target: 'Iterator', proto: true, real: true }, { + find: function find(fn) { + anObject(this); + aFunction(fn); + return iterate(this, function (value) { + if (fn(value)) return iterate.stop(value); + }, undefined, false, true).result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.flat-map.js new file mode 100644 index 0000000..0841996 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.flat-map.js @@ -0,0 +1,46 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var getIteratorMethod = require('../internals/get-iterator-method'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); +var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); + +var IteratorProxy = createIteratorProxy(function (arg) { + var iterator = this.iterator; + var result, mapped, iteratorMethod, innerIterator; + + while (true) { + if (innerIterator = this.innerIterator) { + result = anObject(this.innerNext.call(innerIterator)); + if (!result.done) return result.value; + this.innerIterator = this.innerNext = null; + } + + result = anObject(this.next.call(iterator, arg)); + + if (this.done = !!result.done) return; + + mapped = callWithSafeIterationClosing(iterator, this.mapper, result.value); + iteratorMethod = getIteratorMethod(mapped); + + if (iteratorMethod === undefined) { + throw TypeError('.flatMap callback should return an iterable object'); + } + + this.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped)); + this.innerNext = aFunction(innerIterator.next); + } +}); + +$({ target: 'Iterator', proto: true, real: true }, { + flatMap: function flatMap(mapper) { + return new IteratorProxy({ + iterator: anObject(this), + mapper: aFunction(mapper), + innerIterator: null, + innerNext: null + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.for-each.js new file mode 100644 index 0000000..c242770 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.for-each.js @@ -0,0 +1,11 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var anObject = require('../internals/an-object'); + +$({ target: 'Iterator', proto: true, real: true }, { + forEach: function forEach(fn) { + iterate(anObject(this), fn, undefined, false, true); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.from.js new file mode 100644 index 0000000..10fa7f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.from.js @@ -0,0 +1,32 @@ +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var path = require('../internals/path'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var toObject = require('../internals/to-object'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); +var getIteratorMethod = require('../internals/get-iterator-method'); + +var Iterator = path.Iterator; + +var IteratorProxy = createIteratorProxy(function (arg) { + var result = anObject(this.next.call(this.iterator, arg)); + var done = this.done = !!result.done; + if (!done) return result.value; +}, true); + +$({ target: 'Iterator', stat: true }, { + from: function from(O) { + var object = toObject(O); + var usingIterator = getIteratorMethod(object); + var iterator; + if (usingIterator != null) { + iterator = aFunction(usingIterator).call(object); + if (iterator instanceof Iterator) return iterator; + } else { + iterator = object; + } return new IteratorProxy({ + iterator: iterator + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.map.js new file mode 100644 index 0000000..054a7d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.map.js @@ -0,0 +1,23 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); +var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); + +var IteratorProxy = createIteratorProxy(function (arg) { + var iterator = this.iterator; + var result = anObject(this.next.call(iterator, arg)); + var done = this.done = !!result.done; + if (!done) return callWithSafeIterationClosing(iterator, this.mapper, result.value); +}); + +$({ target: 'Iterator', proto: true, real: true }, { + map: function map(mapper) { + return new IteratorProxy({ + iterator: anObject(this), + mapper: aFunction(mapper) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.reduce.js new file mode 100644 index 0000000..029269d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.reduce.js @@ -0,0 +1,25 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); + +$({ target: 'Iterator', proto: true, real: true }, { + reduce: function reduce(reducer /* , initialValue */) { + anObject(this); + aFunction(reducer); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + iterate(this, function (value) { + if (noInitial) { + noInitial = false; + accumulator = value; + } else { + accumulator = reducer(accumulator, value); + } + }, undefined, false, true); + if (noInitial) throw TypeError('Reduce of empty iterator with no initial value'); + return accumulator; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.some.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.some.js new file mode 100644 index 0000000..e32ce13 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.some.js @@ -0,0 +1,16 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); + +$({ target: 'Iterator', proto: true, real: true }, { + some: function some(fn) { + anObject(this); + aFunction(fn); + return iterate(this, function (value) { + if (fn(value)) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.take.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.take.js new file mode 100644 index 0000000..5ed1cd3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.take.js @@ -0,0 +1,25 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var toPositiveInteger = require('../internals/to-positive-integer'); +var createIteratorProxy = require('../internals/iterator-create-proxy'); + +var IteratorProxy = createIteratorProxy(function (arg) { + if (!this.remaining--) { + this.done = true; + return; + } + var result = anObject(this.next.call(this.iterator, arg)); + var done = this.done = !!result.done; + if (!done) return result.value; +}); + +$({ target: 'Iterator', proto: true, real: true }, { + take: function take(limit) { + return new IteratorProxy({ + iterator: anObject(this), + remaining: toPositiveInteger(limit) + }); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.to-array.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.to-array.js new file mode 100644 index 0000000..90d32b8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.iterator.to-array.js @@ -0,0 +1,15 @@ +'use strict'; +// https://github.com/tc39/proposal-iterator-helpers +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var anObject = require('../internals/an-object'); + +var push = [].push; + +$({ target: 'Iterator', proto: true, real: true }, { + toArray: function toArray() { + var result = []; + iterate(anObject(this), push, result, false, true); + return result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.delete-all.js new file mode 100644 index 0000000..4554b47 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `Map.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.every.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.every.js new file mode 100644 index 0000000..6272c71 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.every.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/function-bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.every` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + every: function every(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return !iterate(iterator, function (key, value) { + if (!boundFunction(value, key, map)) return iterate.stop(); + }, undefined, true, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.filter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.filter.js new file mode 100644 index 0000000..a140cc0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.filter.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/function-bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.filter` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + filter: function filter(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction(newMap.set); + iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) setter.call(newMap, key, value); + }, undefined, true, true); + return newMap; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find-key.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find-key.js new file mode 100644 index 0000000..67489ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find-key.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/function-bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.findKey` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + findKey: function findKey(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) return iterate.stop(key); + }, undefined, true, true).result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find.js new file mode 100644 index 0000000..c0a9fed --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.find.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/function-bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.find` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + find: function find(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) return iterate.stop(value); + }, undefined, true, true).result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.from.js new file mode 100644 index 0000000..9aa6aac --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `Map.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from +$({ target: 'Map', stat: true }, { + from: from +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.group-by.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.group-by.js new file mode 100644 index 0000000..a34c6a0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.group-by.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); + +// `Map.groupBy` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', stat: true }, { + groupBy: function groupBy(iterable, keyDerivative) { + var newMap = new this(); + aFunction(keyDerivative); + var has = aFunction(newMap.has); + var get = aFunction(newMap.get); + var set = aFunction(newMap.set); + iterate(iterable, function (element) { + var derivedKey = keyDerivative(element); + if (!has.call(newMap, derivedKey)) set.call(newMap, derivedKey, [element]); + else get.call(newMap, derivedKey).push(element); + }); + return newMap; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.includes.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.includes.js new file mode 100644 index 0000000..5f9aff0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.includes.js @@ -0,0 +1,17 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var getMapIterator = require('../internals/get-map-iterator'); +var sameValueZero = require('../internals/same-value-zero'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.includes` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + includes: function includes(searchElement) { + return iterate(getMapIterator(anObject(this)), function (key, value) { + if (sameValueZero(value, searchElement)) return iterate.stop(); + }, undefined, true, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-by.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-by.js new file mode 100644 index 0000000..0204bf2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-by.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var iterate = require('../internals/iterate'); +var aFunction = require('../internals/a-function'); + +// `Map.keyBy` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', stat: true }, { + keyBy: function keyBy(iterable, keyDerivative) { + var newMap = new this(); + aFunction(keyDerivative); + var setter = aFunction(newMap.set); + iterate(iterable, function (element) { + setter.call(newMap, keyDerivative(element), element); + }); + return newMap; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-of.js new file mode 100644 index 0000000..1d100de --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.key-of.js @@ -0,0 +1,16 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.includes` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + keyOf: function keyOf(searchElement) { + return iterate(getMapIterator(anObject(this)), function (key, value) { + if (value === searchElement) return iterate.stop(key); + }, undefined, true, true).result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-keys.js new file mode 100644 index 0000000..0d9fdcb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-keys.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/function-bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.mapKeys` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + mapKeys: function mapKeys(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction(newMap.set); + iterate(iterator, function (key, value) { + setter.call(newMap, boundFunction(value, key, map), value); + }, undefined, true, true); + return newMap; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-values.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-values.js new file mode 100644 index 0000000..8bd5076 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.map-values.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/function-bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.mapValues` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + mapValues: function mapValues(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newMap = new (speciesConstructor(map, getBuiltIn('Map')))(); + var setter = aFunction(newMap.set); + iterate(iterator, function (key, value) { + setter.call(newMap, key, boundFunction(value, key, map)); + }, undefined, true, true); + return newMap; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.merge.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.merge.js new file mode 100644 index 0000000..fd2c79c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.merge.js @@ -0,0 +1,21 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.merge` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + // eslint-disable-next-line no-unused-vars + merge: function merge(iterable /* ...iterbles */) { + var map = anObject(this); + var setter = aFunction(map.set); + var i = 0; + while (i < arguments.length) { + iterate(arguments[i++], setter, map, true); + } + return map; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.of.js new file mode 100644 index 0000000..4f84d89 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `Map.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of +$({ target: 'Map', stat: true }, { + of: of +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.reduce.js new file mode 100644 index 0000000..43153f8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.reduce.js @@ -0,0 +1,29 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Map.prototype.reduce` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + aFunction(callbackfn); + iterate(iterator, function (key, value) { + if (noInitial) { + noInitial = false; + accumulator = value; + } else { + accumulator = callbackfn(accumulator, value, key, map); + } + }, undefined, true, true); + if (noInitial) throw TypeError('Reduce of empty map with no initial value'); + return accumulator; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.some.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.some.js new file mode 100644 index 0000000..56cc03a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.some.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/function-bind-context'); +var getMapIterator = require('../internals/get-map-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.some` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + some: function some(callbackfn /* , thisArg */) { + var map = anObject(this); + var iterator = getMapIterator(map); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (key, value) { + if (boundFunction(value, key, map)) return iterate.stop(); + }, undefined, true, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update-or-insert.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update-or-insert.js new file mode 100644 index 0000000..f429b21 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update-or-insert.js @@ -0,0 +1,11 @@ +'use strict'; +// TODO: remove from `core-js@4` +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var $upsert = require('../internals/map-upsert'); + +// `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.upsert`) +// https://github.com/thumbsupep/proposal-upsert +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + updateOrInsert: $upsert +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update.js new file mode 100644 index 0000000..97358e8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.update.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); + +// `Set.prototype.update` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + update: function update(key, callback /* , thunk */) { + var map = anObject(this); + var length = arguments.length; + aFunction(callback); + var isPresentInMap = map.has(key); + if (!isPresentInMap && length < 3) { + throw TypeError('Updating absent value'); + } + var value = isPresentInMap ? map.get(key) : aFunction(length > 2 ? arguments[2] : undefined)(key, map); + map.set(key, callback(value, key, map)); + return map; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.upsert.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.upsert.js new file mode 100644 index 0000000..a30e835 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.map.upsert.js @@ -0,0 +1,10 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var $upsert = require('../internals/map-upsert'); + +// `Map.prototype.upsert` method +// https://github.com/thumbsupep/proposal-upsert +$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, { + upsert: $upsert +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.clamp.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.clamp.js new file mode 100644 index 0000000..c69b122 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.clamp.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var min = Math.min; +var max = Math.max; + +// `Math.clamp` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + clamp: function clamp(x, lower, upper) { + return min(upper, max(lower, x)); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.deg-per-rad.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.deg-per-rad.js new file mode 100644 index 0000000..b1c09b8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.deg-per-rad.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Math.DEG_PER_RAD` constant +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + DEG_PER_RAD: Math.PI / 180 +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.degrees.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.degrees.js new file mode 100644 index 0000000..e91de91 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.degrees.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); + +var RAD_PER_DEG = 180 / Math.PI; + +// `Math.degrees` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + degrees: function degrees(radians) { + return radians * RAD_PER_DEG; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.fscale.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.fscale.js new file mode 100644 index 0000000..3db68ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.fscale.js @@ -0,0 +1,12 @@ +var $ = require('../internals/export'); + +var scale = require('../internals/math-scale'); +var fround = require('../internals/math-fround'); + +// `Math.fscale` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + fscale: function fscale(x, inLow, inHigh, outLow, outHigh) { + return fround(scale(x, inLow, inHigh, outLow, outHigh)); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.iaddh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.iaddh.js new file mode 100644 index 0000000..2323031 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.iaddh.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); + +// `Math.iaddh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +// TODO: Remove from `core-js@4` +$({ target: 'Math', stat: true }, { + iaddh: function iaddh(x0, x1, y0, y1) { + var $x0 = x0 >>> 0; + var $x1 = x1 >>> 0; + var $y0 = y0 >>> 0; + return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.imulh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.imulh.js new file mode 100644 index 0000000..f7a558e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.imulh.js @@ -0,0 +1,18 @@ +var $ = require('../internals/export'); + +// `Math.imulh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +// TODO: Remove from `core-js@4` +$({ target: 'Math', stat: true }, { + imulh: function imulh(u, v) { + var UINT16 = 0xFFFF; + var $u = +u; + var $v = +v; + var u0 = $u & UINT16; + var v0 = $v & UINT16; + var u1 = $u >> 16; + var v1 = $v >> 16; + var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.isubh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.isubh.js new file mode 100644 index 0000000..cbe0b4e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.isubh.js @@ -0,0 +1,13 @@ +var $ = require('../internals/export'); + +// `Math.isubh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +// TODO: Remove from `core-js@4` +$({ target: 'Math', stat: true }, { + isubh: function isubh(x0, x1, y0, y1) { + var $x0 = x0 >>> 0; + var $x1 = x1 >>> 0; + var $y0 = y0 >>> 0; + return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.rad-per-deg.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.rad-per-deg.js new file mode 100644 index 0000000..6515cbe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.rad-per-deg.js @@ -0,0 +1,7 @@ +var $ = require('../internals/export'); + +// `Math.RAD_PER_DEG` constant +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + RAD_PER_DEG: 180 / Math.PI +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.radians.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.radians.js new file mode 100644 index 0000000..0b25512 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.radians.js @@ -0,0 +1,11 @@ +var $ = require('../internals/export'); + +var DEG_PER_RAD = Math.PI / 180; + +// `Math.radians` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + radians: function radians(degrees) { + return degrees * DEG_PER_RAD; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.scale.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.scale.js new file mode 100644 index 0000000..400a9ed --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.scale.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var scale = require('../internals/math-scale'); + +// `Math.scale` method +// https://rwaldron.github.io/proposal-math-extensions/ +$({ target: 'Math', stat: true }, { + scale: scale +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.seeded-prng.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.seeded-prng.js new file mode 100644 index 0000000..6e39688 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.seeded-prng.js @@ -0,0 +1,33 @@ +var $ = require('../internals/export'); +var anObject = require('../internals/an-object'); +var numberIsFinite = require('../internals/number-is-finite'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var InternalStateModule = require('../internals/internal-state'); + +var SEEDED_RANDOM = 'Seeded Random'; +var SEEDED_RANDOM_GENERATOR = SEEDED_RANDOM + ' Generator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(SEEDED_RANDOM_GENERATOR); +var SEED_TYPE_ERROR = 'Math.seededPRNG() argument should have a "seed" field with a finite value.'; + +var $SeededRandomGenerator = createIteratorConstructor(function SeededRandomGenerator(seed) { + setInternalState(this, { + type: SEEDED_RANDOM_GENERATOR, + seed: seed % 2147483647 + }); +}, SEEDED_RANDOM, function next() { + var state = getInternalState(this); + var seed = state.seed = (state.seed * 1103515245 + 12345) % 2147483647; + return { value: (seed & 1073741823) / 1073741823, done: false }; +}); + +// `Math.seededPRNG` method +// https://github.com/tc39/proposal-seeded-random +// based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html +$({ target: 'Math', stat: true, forced: true }, { + seededPRNG: function seededPRNG(it) { + var seed = anObject(it).seed; + if (!numberIsFinite(seed)) throw TypeError(SEED_TYPE_ERROR); + return new $SeededRandomGenerator(seed); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.signbit.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.signbit.js new file mode 100644 index 0000000..3ece8ea --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.signbit.js @@ -0,0 +1,9 @@ +var $ = require('../internals/export'); + +// `Math.signbit` method +// https://github.com/tc39/proposal-Math.signbit +$({ target: 'Math', stat: true }, { + signbit: function signbit(x) { + return (x = +x) == x && x == 0 ? 1 / x == -Infinity : x < 0; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.umulh.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.umulh.js new file mode 100644 index 0000000..5f0e70f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.math.umulh.js @@ -0,0 +1,18 @@ +var $ = require('../internals/export'); + +// `Math.umulh` method +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +// TODO: Remove from `core-js@4` +$({ target: 'Math', stat: true }, { + umulh: function umulh(u, v) { + var UINT16 = 0xFFFF; + var $u = +u; + var $v = +v; + var u0 = $u & UINT16; + var v0 = $v & UINT16; + var u1 = $u >>> 16; + var v1 = $v >>> 16; + var t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.number.from-string.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.number.from-string.js new file mode 100644 index 0000000..85f1498 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.number.from-string.js @@ -0,0 +1,30 @@ +'use strict'; +var $ = require('../internals/export'); +var toInteger = require('../internals/to-integer'); +var parseInt = require('../internals/number-parse-int'); + +var INVALID_NUMBER_REPRESENTATION = 'Invalid number representation'; +var INVALID_RADIX = 'Invalid radix'; +var valid = /^[\da-z]+$/; + +// `Number.fromString` method +// https://github.com/tc39/proposal-number-fromstring +$({ target: 'Number', stat: true }, { + fromString: function fromString(string, radix) { + var sign = 1; + var R, mathNum; + if (typeof string != 'string') throw TypeError(INVALID_NUMBER_REPRESENTATION); + if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION); + if (string.charAt(0) == '-') { + sign = -1; + string = string.slice(1); + if (!string.length) throw SyntaxError(INVALID_NUMBER_REPRESENTATION); + } + R = radix === undefined ? 10 : toInteger(radix); + if (R < 2 || R > 36) throw RangeError(INVALID_RADIX); + if (!valid.test(string) || (mathNum = parseInt(string, R)).toString(R) !== string) { + throw SyntaxError(INVALID_NUMBER_REPRESENTATION); + } + return sign * mathNum; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-entries.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-entries.js new file mode 100644 index 0000000..b882ca3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-entries.js @@ -0,0 +1,11 @@ +'use strict'; +var $ = require('../internals/export'); +var ObjectIterator = require('../internals/object-iterator'); + +// `Object.iterateEntries` method +// https://github.com/tc39/proposal-object-iteration +$({ target: 'Object', stat: true }, { + iterateEntries: function iterateEntries(object) { + return new ObjectIterator(object, 'entries'); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-keys.js new file mode 100644 index 0000000..e74dc37 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-keys.js @@ -0,0 +1,11 @@ +'use strict'; +var $ = require('../internals/export'); +var ObjectIterator = require('../internals/object-iterator'); + +// `Object.iterateKeys` method +// https://github.com/tc39/proposal-object-iteration +$({ target: 'Object', stat: true }, { + iterateKeys: function iterateKeys(object) { + return new ObjectIterator(object, 'keys'); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-values.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-values.js new file mode 100644 index 0000000..1d18fe0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.object.iterate-values.js @@ -0,0 +1,11 @@ +'use strict'; +var $ = require('../internals/export'); +var ObjectIterator = require('../internals/object-iterator'); + +// `Object.iterateValues` method +// https://github.com/tc39/proposal-object-iteration +$({ target: 'Object', stat: true }, { + iterateValues: function iterateValues(object) { + return new ObjectIterator(object, 'values'); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.observable.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.observable.js new file mode 100644 index 0000000..4eaab23 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.observable.js @@ -0,0 +1,207 @@ +'use strict'; +// https://github.com/tc39/proposal-observable +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var setSpecies = require('../internals/set-species'); +var aFunction = require('../internals/a-function'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var anInstance = require('../internals/an-instance'); +var defineProperty = require('../internals/object-define-property').f; +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var redefineAll = require('../internals/redefine-all'); +var getIterator = require('../internals/get-iterator'); +var iterate = require('../internals/iterate'); +var hostReportErrors = require('../internals/host-report-errors'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var InternalStateModule = require('../internals/internal-state'); + +var OBSERVABLE = wellKnownSymbol('observable'); +var getInternalState = InternalStateModule.get; +var setInternalState = InternalStateModule.set; + +var getMethod = function (fn) { + return fn == null ? undefined : aFunction(fn); +}; + +var cleanupSubscription = function (subscriptionState) { + var cleanup = subscriptionState.cleanup; + if (cleanup) { + subscriptionState.cleanup = undefined; + try { + cleanup(); + } catch (error) { + hostReportErrors(error); + } + } +}; + +var subscriptionClosed = function (subscriptionState) { + return subscriptionState.observer === undefined; +}; + +var close = function (subscription, subscriptionState) { + if (!DESCRIPTORS) { + subscription.closed = true; + var subscriptionObserver = subscriptionState.subscriptionObserver; + if (subscriptionObserver) subscriptionObserver.closed = true; + } subscriptionState.observer = undefined; +}; + +var Subscription = function (observer, subscriber) { + var subscriptionState = setInternalState(this, { + cleanup: undefined, + observer: anObject(observer), + subscriptionObserver: undefined + }); + var start; + if (!DESCRIPTORS) this.closed = false; + try { + if (start = getMethod(observer.start)) start.call(observer, this); + } catch (error) { + hostReportErrors(error); + } + if (subscriptionClosed(subscriptionState)) return; + var subscriptionObserver = subscriptionState.subscriptionObserver = new SubscriptionObserver(this); + try { + var cleanup = subscriber(subscriptionObserver); + var subscription = cleanup; + if (cleanup != null) subscriptionState.cleanup = typeof cleanup.unsubscribe === 'function' + ? function () { subscription.unsubscribe(); } + : aFunction(cleanup); + } catch (error) { + subscriptionObserver.error(error); + return; + } if (subscriptionClosed(subscriptionState)) cleanupSubscription(subscriptionState); +}; + +Subscription.prototype = redefineAll({}, { + unsubscribe: function unsubscribe() { + var subscriptionState = getInternalState(this); + if (!subscriptionClosed(subscriptionState)) { + close(this, subscriptionState); + cleanupSubscription(subscriptionState); + } + } +}); + +if (DESCRIPTORS) defineProperty(Subscription.prototype, 'closed', { + configurable: true, + get: function () { + return subscriptionClosed(getInternalState(this)); + } +}); + +var SubscriptionObserver = function (subscription) { + setInternalState(this, { subscription: subscription }); + if (!DESCRIPTORS) this.closed = false; +}; + +SubscriptionObserver.prototype = redefineAll({}, { + next: function next(value) { + var subscriptionState = getInternalState(getInternalState(this).subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + try { + var nextMethod = getMethod(observer.next); + if (nextMethod) nextMethod.call(observer, value); + } catch (error) { + hostReportErrors(error); + } + } + }, + error: function error(value) { + var subscription = getInternalState(this).subscription; + var subscriptionState = getInternalState(subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + close(subscription, subscriptionState); + try { + var errorMethod = getMethod(observer.error); + if (errorMethod) errorMethod.call(observer, value); + else hostReportErrors(value); + } catch (err) { + hostReportErrors(err); + } cleanupSubscription(subscriptionState); + } + }, + complete: function complete() { + var subscription = getInternalState(this).subscription; + var subscriptionState = getInternalState(subscription); + if (!subscriptionClosed(subscriptionState)) { + var observer = subscriptionState.observer; + close(subscription, subscriptionState); + try { + var completeMethod = getMethod(observer.complete); + if (completeMethod) completeMethod.call(observer); + } catch (error) { + hostReportErrors(error); + } cleanupSubscription(subscriptionState); + } + } +}); + +if (DESCRIPTORS) defineProperty(SubscriptionObserver.prototype, 'closed', { + configurable: true, + get: function () { + return subscriptionClosed(getInternalState(getInternalState(this).subscription)); + } +}); + +var $Observable = function Observable(subscriber) { + anInstance(this, $Observable, 'Observable'); + setInternalState(this, { subscriber: aFunction(subscriber) }); +}; + +redefineAll($Observable.prototype, { + subscribe: function subscribe(observer) { + var length = arguments.length; + return new Subscription(typeof observer === 'function' ? { + next: observer, + error: length > 1 ? arguments[1] : undefined, + complete: length > 2 ? arguments[2] : undefined + } : isObject(observer) ? observer : {}, getInternalState(this).subscriber); + } +}); + +redefineAll($Observable, { + from: function from(x) { + var C = typeof this === 'function' ? this : $Observable; + var observableMethod = getMethod(anObject(x)[OBSERVABLE]); + if (observableMethod) { + var observable = anObject(observableMethod.call(x)); + return observable.constructor === C ? observable : new C(function (observer) { + return observable.subscribe(observer); + }); + } + var iterator = getIterator(x); + return new C(function (observer) { + iterate(iterator, function (it) { + observer.next(it); + if (observer.closed) return iterate.stop(); + }, undefined, false, true); + observer.complete(); + }); + }, + of: function of() { + var C = typeof this === 'function' ? this : $Observable; + var length = arguments.length; + var items = new Array(length); + var index = 0; + while (index < length) items[index] = arguments[index++]; + return new C(function (observer) { + for (var i = 0; i < length; i++) { + observer.next(items[i]); + if (observer.closed) return; + } observer.complete(); + }); + } +}); + +createNonEnumerableProperty($Observable.prototype, OBSERVABLE, function () { return this; }); + +$({ global: true }, { + Observable: $Observable +}); + +setSpecies('Observable'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.all-settled.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.all-settled.js new file mode 100644 index 0000000..0b9d7ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.all-settled.js @@ -0,0 +1,2 @@ +// TODO: Remove from `core-js@4` +require('./es.promise.all-settled.js'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.any.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.any.js new file mode 100644 index 0000000..e26d1b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.any.js @@ -0,0 +1,46 @@ +'use strict'; +var $ = require('../internals/export'); +var aFunction = require('../internals/a-function'); +var getBuiltIn = require('../internals/get-built-in'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); +var iterate = require('../internals/iterate'); + +var PROMISE_ANY_ERROR = 'No one promise resolved'; + +// `Promise.any` method +// https://github.com/tc39/proposal-promise-any +$({ target: 'Promise', stat: true }, { + any: function any(iterable) { + var C = this; + var capability = newPromiseCapabilityModule.f(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var promiseResolve = aFunction(C.resolve); + var errors = []; + var counter = 0; + var remaining = 1; + var alreadyResolved = false; + iterate(iterable, function (promise) { + var index = counter++; + var alreadyRejected = false; + errors.push(undefined); + remaining++; + promiseResolve.call(C, promise).then(function (value) { + if (alreadyRejected || alreadyResolved) return; + alreadyResolved = true; + resolve(value); + }, function (e) { + if (alreadyRejected || alreadyResolved) return; + alreadyRejected = true; + errors[index] = e; + --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); + }); + }); + --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR)); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.try.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.try.js new file mode 100644 index 0000000..7a7b93b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.promise.try.js @@ -0,0 +1,15 @@ +'use strict'; +var $ = require('../internals/export'); +var newPromiseCapabilityModule = require('../internals/new-promise-capability'); +var perform = require('../internals/perform'); + +// `Promise.try` method +// https://github.com/tc39/proposal-promise-try +$({ target: 'Promise', stat: true }, { + 'try': function (callbackfn) { + var promiseCapability = newPromiseCapabilityModule.f(this); + var result = perform(callbackfn); + (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value); + return promiseCapability.promise; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.define-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.define-metadata.js new file mode 100644 index 0000000..2596439 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.define-metadata.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var toMetadataKey = ReflectMetadataModule.toKey; +var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; + +// `Reflect.defineMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + defineMetadata: function defineMetadata(metadataKey, metadataValue, target /* , targetKey */) { + var targetKey = arguments.length < 4 ? undefined : toMetadataKey(arguments[3]); + ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), targetKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.delete-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.delete-metadata.js new file mode 100644 index 0000000..ec510d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.delete-metadata.js @@ -0,0 +1,21 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var toMetadataKey = ReflectMetadataModule.toKey; +var getOrCreateMetadataMap = ReflectMetadataModule.getMap; +var store = ReflectMetadataModule.store; + +// `Reflect.deleteMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + deleteMetadata: function deleteMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); + if (metadataMap === undefined || !metadataMap['delete'](metadataKey)) return false; + if (metadataMap.size) return true; + var targetMetadata = store.get(target); + targetMetadata['delete'](targetKey); + return !!targetMetadata.size || store['delete'](target); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata-keys.js new file mode 100644 index 0000000..795f63d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata-keys.js @@ -0,0 +1,33 @@ +var $ = require('../internals/export'); +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +var Set = require('../modules/es.set'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); +var iterate = require('../internals/iterate'); + +var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; +var toMetadataKey = ReflectMetadataModule.toKey; + +var from = function (iter) { + var result = []; + iterate(iter, result.push, result); + return result; +}; + +var ordinaryMetadataKeys = function (O, P) { + var oKeys = ordinaryOwnMetadataKeys(O, P); + var parent = getPrototypeOf(O); + if (parent === null) return oKeys; + var pKeys = ordinaryMetadataKeys(parent, P); + return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; +}; + +// `Reflect.getMetadataKeys` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getMetadataKeys: function getMetadataKeys(target /* , targetKey */) { + var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); + return ordinaryMetadataKeys(anObject(target), targetKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata.js new file mode 100644 index 0000000..fd344e8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-metadata.js @@ -0,0 +1,24 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); + +var ordinaryHasOwnMetadata = ReflectMetadataModule.has; +var ordinaryGetOwnMetadata = ReflectMetadataModule.get; +var toMetadataKey = ReflectMetadataModule.toKey; + +var ordinaryGetMetadata = function (MetadataKey, O, P) { + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) return ordinaryGetOwnMetadata(MetadataKey, O, P); + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; +}; + +// `Reflect.getMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getMetadata: function getMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryGetMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata-keys.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata-keys.js new file mode 100644 index 0000000..090bb8d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata-keys.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var ordinaryOwnMetadataKeys = ReflectMetadataModule.keys; +var toMetadataKey = ReflectMetadataModule.toKey; + +// `Reflect.getOwnMetadataKeys` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getOwnMetadataKeys: function getOwnMetadataKeys(target /* , targetKey */) { + var targetKey = arguments.length < 2 ? undefined : toMetadataKey(arguments[1]); + return ordinaryOwnMetadataKeys(anObject(target), targetKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata.js new file mode 100644 index 0000000..81c40d0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.get-own-metadata.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var ordinaryGetOwnMetadata = ReflectMetadataModule.get; +var toMetadataKey = ReflectMetadataModule.toKey; + +// `Reflect.getOwnMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + getOwnMetadata: function getOwnMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryGetOwnMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-metadata.js new file mode 100644 index 0000000..4b81771 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-metadata.js @@ -0,0 +1,23 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); +var getPrototypeOf = require('../internals/object-get-prototype-of'); + +var ordinaryHasOwnMetadata = ReflectMetadataModule.has; +var toMetadataKey = ReflectMetadataModule.toKey; + +var ordinaryHasMetadata = function (MetadataKey, O, P) { + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if (hasOwn) return true; + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; +}; + +// `Reflect.hasMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + hasMetadata: function hasMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryHasMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-own-metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-own-metadata.js new file mode 100644 index 0000000..87774b1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.has-own-metadata.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var ordinaryHasOwnMetadata = ReflectMetadataModule.has; +var toMetadataKey = ReflectMetadataModule.toKey; + +// `Reflect.hasOwnMetadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + hasOwnMetadata: function hasOwnMetadata(metadataKey, target /* , targetKey */) { + var targetKey = arguments.length < 3 ? undefined : toMetadataKey(arguments[2]); + return ordinaryHasOwnMetadata(metadataKey, anObject(target), targetKey); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.metadata.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.metadata.js new file mode 100644 index 0000000..7e1caa6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.reflect.metadata.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var ReflectMetadataModule = require('../internals/reflect-metadata'); +var anObject = require('../internals/an-object'); + +var toMetadataKey = ReflectMetadataModule.toKey; +var ordinaryDefineOwnMetadata = ReflectMetadataModule.set; + +// `Reflect.metadata` method +// https://github.com/rbuckton/reflect-metadata +$({ target: 'Reflect', stat: true }, { + metadata: function metadata(metadataKey, metadataValue) { + return function decorator(target, key) { + ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetadataKey(key)); + }; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.add-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.add-all.js new file mode 100644 index 0000000..5de5089 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.add-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionAddAll = require('../internals/collection-add-all'); + +// `Set.prototype.addAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + addAll: function addAll(/* ...elements */) { + return collectionAddAll.apply(this, arguments); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.delete-all.js new file mode 100644 index 0000000..43e4195 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `Set.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.difference.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.difference.js new file mode 100644 index 0000000..0bb6562 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.difference.js @@ -0,0 +1,22 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.difference` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + difference: function difference(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + var remover = aFunction(newSet['delete']); + iterate(iterable, function (value) { + remover.call(newSet, value); + }); + return newSet; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.every.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.every.js new file mode 100644 index 0000000..03813f9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.every.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/function-bind-context'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.every` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + every: function every(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return !iterate(iterator, function (value) { + if (!boundFunction(value, value, set)) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.filter.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.filter.js new file mode 100644 index 0000000..a408273 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.filter.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/function-bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.filter` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + filter: function filter(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var adder = aFunction(newSet.add); + iterate(iterator, function (value) { + if (boundFunction(value, value, set)) adder.call(newSet, value); + }, undefined, false, true); + return newSet; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.find.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.find.js new file mode 100644 index 0000000..fcfef51 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.find.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/function-bind-context'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.find` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + find: function find(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (value) { + if (boundFunction(value, value, set)) return iterate.stop(value); + }, undefined, false, true).result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.from.js new file mode 100644 index 0000000..3ca34f4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `Set.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from +$({ target: 'Set', stat: true }, { + from: from +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.intersection.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.intersection.js new file mode 100644 index 0000000..2d59f0d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.intersection.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.intersection` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + intersection: function intersection(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var hasCheck = aFunction(set.has); + var adder = aFunction(newSet.add); + iterate(iterable, function (value) { + if (hasCheck.call(set, value)) adder.call(newSet, value); + }); + return newSet; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-disjoint-from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-disjoint-from.js new file mode 100644 index 0000000..3166ed9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-disjoint-from.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.isDisjointFrom` method +// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + isDisjointFrom: function isDisjointFrom(iterable) { + var set = anObject(this); + var hasCheck = aFunction(set.has); + return !iterate(iterable, function (value) { + if (hasCheck.call(set, value) === true) return iterate.stop(); + }).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-subset-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-subset-of.js new file mode 100644 index 0000000..b3dde5e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-subset-of.js @@ -0,0 +1,25 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var getIterator = require('../internals/get-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.isSubsetOf` method +// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + isSubsetOf: function isSubsetOf(iterable) { + var iterator = getIterator(this); + var otherSet = anObject(iterable); + var hasCheck = otherSet.has; + if (typeof hasCheck != 'function') { + otherSet = new (getBuiltIn('Set'))(iterable); + hasCheck = aFunction(otherSet.has); + } + return !iterate(iterator, function (value) { + if (hasCheck.call(otherSet, value) === false) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-superset-of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-superset-of.js new file mode 100644 index 0000000..303667a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.is-superset-of.js @@ -0,0 +1,18 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.isSupersetOf` method +// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + isSupersetOf: function isSupersetOf(iterable) { + var set = anObject(this); + var hasCheck = aFunction(set.has); + return !iterate(iterable, function (value) { + if (hasCheck.call(set, value) === false) return iterate.stop(); + }).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.join.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.join.js new file mode 100644 index 0000000..4b78472 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.join.js @@ -0,0 +1,19 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.join` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + join: function join(separator) { + var set = anObject(this); + var iterator = getSetIterator(set); + var sep = separator === undefined ? ',' : String(separator); + var result = []; + iterate(iterator, result.push, result, false, true); + return result.join(sep); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.map.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.map.js new file mode 100644 index 0000000..e9c6c14 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.map.js @@ -0,0 +1,26 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var bind = require('../internals/function-bind-context'); +var speciesConstructor = require('../internals/species-constructor'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.map` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + map: function map(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(); + var adder = aFunction(newSet.add); + iterate(iterator, function (value) { + adder.call(newSet, boundFunction(value, value, set)); + }, undefined, false, true); + return newSet; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.of.js new file mode 100644 index 0000000..744698e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `Set.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of +$({ target: 'Set', stat: true }, { + of: of +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.reduce.js new file mode 100644 index 0000000..00e30de --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.reduce.js @@ -0,0 +1,29 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.reduce` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + reduce: function reduce(callbackfn /* , initialValue */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var noInitial = arguments.length < 2; + var accumulator = noInitial ? undefined : arguments[1]; + aFunction(callbackfn); + iterate(iterator, function (value) { + if (noInitial) { + noInitial = false; + accumulator = value; + } else { + accumulator = callbackfn(accumulator, value, value, set); + } + }, undefined, false, true); + if (noInitial) throw TypeError('Reduce of empty set with no initial value'); + return accumulator; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.some.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.some.js new file mode 100644 index 0000000..df8dda8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.some.js @@ -0,0 +1,20 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var anObject = require('../internals/an-object'); +var bind = require('../internals/function-bind-context'); +var getSetIterator = require('../internals/get-set-iterator'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.some` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + some: function some(callbackfn /* , thisArg */) { + var set = anObject(this); + var iterator = getSetIterator(set); + var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + return iterate(iterator, function (value) { + if (boundFunction(value, value, set)) return iterate.stop(); + }, undefined, false, true).stopped; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.symmetric-difference.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.symmetric-difference.js new file mode 100644 index 0000000..ccd326f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.symmetric-difference.js @@ -0,0 +1,23 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.symmetricDifference` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + symmetricDifference: function symmetricDifference(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + var remover = aFunction(newSet['delete']); + var adder = aFunction(newSet.add); + iterate(iterable, function (value) { + remover.call(newSet, value) || adder.call(newSet, value); + }); + return newSet; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.union.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.union.js new file mode 100644 index 0000000..fc153d4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.set.union.js @@ -0,0 +1,19 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var getBuiltIn = require('../internals/get-built-in'); +var anObject = require('../internals/an-object'); +var aFunction = require('../internals/a-function'); +var speciesConstructor = require('../internals/species-constructor'); +var iterate = require('../internals/iterate'); + +// `Set.prototype.union` method +// https://github.com/tc39/proposal-set-methods +$({ target: 'Set', proto: true, real: true, forced: IS_PURE }, { + union: function union(iterable) { + var set = anObject(this); + var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set); + iterate(iterable, aFunction(newSet.add), newSet); + return newSet; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.at.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.at.js new file mode 100644 index 0000000..fc3c44a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.at.js @@ -0,0 +1,11 @@ +'use strict'; +var $ = require('../internals/export'); +var charAt = require('../internals/string-multibyte').charAt; + +// `String.prototype.at` method +// https://github.com/mathiasbynens/String.prototype.at +$({ target: 'String', proto: true }, { + at: function at(pos) { + return charAt(this, pos); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.code-points.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.code-points.js new file mode 100644 index 0000000..fcf15d6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.code-points.js @@ -0,0 +1,38 @@ +'use strict'; +var $ = require('../internals/export'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var InternalStateModule = require('../internals/internal-state'); +var StringMultibyteModule = require('../internals/string-multibyte'); + +var codeAt = StringMultibyteModule.codeAt; +var charAt = StringMultibyteModule.charAt; +var STRING_ITERATOR = 'String Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + +// TODO: unify with String#@@iterator +var $StringIterator = createIteratorConstructor(function StringIterator(string) { + setInternalState(this, { + type: STRING_ITERATOR, + string: string, + index: 0 + }); +}, 'String', function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) return { value: undefined, done: true }; + point = charAt(string, index); + state.index += point.length; + return { value: { codePoint: codeAt(point, 0), position: index }, done: false }; +}); + +// `String.prototype.codePoints` method +// https://github.com/tc39/proposal-string-prototype-codepoints +$({ target: 'String', proto: true }, { + codePoints: function codePoints() { + return new $StringIterator(String(requireObjectCoercible(this))); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.match-all.js new file mode 100644 index 0000000..b01996d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.match-all.js @@ -0,0 +1,2 @@ +// TODO: Remove from `core-js@4` +require('./es.string.match-all'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.replace-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.replace-all.js new file mode 100644 index 0000000..22220ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.string.replace-all.js @@ -0,0 +1,50 @@ +'use strict'; +var $ = require('../internals/export'); +var requireObjectCoercible = require('../internals/require-object-coercible'); +var isRegExp = require('../internals/is-regexp'); +var getRegExpFlags = require('../internals/regexp-flags'); +var wellKnownSymbol = require('../internals/well-known-symbol'); +var IS_PURE = require('../internals/is-pure'); + +var REPLACE = wellKnownSymbol('replace'); +var RegExpPrototype = RegExp.prototype; + +// `String.prototype.replaceAll` method +// https://github.com/tc39/proposal-string-replace-all +$({ target: 'String', proto: true }, { + replaceAll: function replaceAll(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var IS_REG_EXP, flags, replacer, string, searchString, template, result, position, index; + if (searchValue != null) { + IS_REG_EXP = isRegExp(searchValue); + if (IS_REG_EXP) { + flags = String(requireObjectCoercible('flags' in RegExpPrototype + ? searchValue.flags + : getRegExpFlags.call(searchValue) + )); + if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes'); + } + replacer = searchValue[REPLACE]; + if (replacer !== undefined) { + return replacer.call(searchValue, O, replaceValue); + } else if (IS_PURE && IS_REG_EXP) { + return String(O).replace(searchValue, replaceValue); + } + } + string = String(O); + searchString = String(searchValue); + if (searchString === '') return replaceAll.call(string, /(?:)/g, replaceValue); + template = string.split(searchString); + if (typeof replaceValue !== 'function') { + return template.join(String(replaceValue)); + } + result = template[0]; + position = result.length; + for (index = 1; index < template.length; index++) { + result += String(replaceValue(searchString, position, string)); + position += searchString.length + template[index].length; + result += template[index]; + } + return result; + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js new file mode 100644 index 0000000..776608e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.asyncDispose` well-known symbol +// https://github.com/tc39/proposal-using-statement +defineWellKnownSymbol('asyncDispose'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.dispose.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.dispose.js new file mode 100644 index 0000000..ac7691d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.dispose.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.dispose` well-known symbol +// https://github.com/tc39/proposal-using-statement +defineWellKnownSymbol('dispose'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.observable.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.observable.js new file mode 100644 index 0000000..dc4a4f5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.observable.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.observable` well-known symbol +// https://github.com/tc39/proposal-observable +defineWellKnownSymbol('observable'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js new file mode 100644 index 0000000..0120063 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js @@ -0,0 +1,5 @@ +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +// `Symbol.patternMatch` well-known symbol +// https://github.com/tc39/proposal-pattern-matching +defineWellKnownSymbol('patternMatch'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.replace-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.replace-all.js new file mode 100644 index 0000000..82cbd29 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.symbol.replace-all.js @@ -0,0 +1,4 @@ +// TODO: remove from `core-js@4` +var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); + +defineWellKnownSymbol('replaceAll'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.delete-all.js new file mode 100644 index 0000000..ef56f99 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `WeakMap.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.from.js new file mode 100644 index 0000000..8dc7b01 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `WeakMap.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from +$({ target: 'WeakMap', stat: true }, { + from: from +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.of.js new file mode 100644 index 0000000..efea513 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `WeakMap.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of +$({ target: 'WeakMap', stat: true }, { + of: of +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.upsert.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.upsert.js new file mode 100644 index 0000000..1e0d60c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-map.upsert.js @@ -0,0 +1,10 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var $upsert = require('../internals/map-upsert'); + +// `WeakMap.prototype.upsert` method +// https://github.com/thumbsupep/proposal-upsert +$({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, { + upsert: $upsert +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.add-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.add-all.js new file mode 100644 index 0000000..e8bb4c9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.add-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionAddAll = require('../internals/collection-add-all'); + +// `WeakSet.prototype.addAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, { + addAll: function addAll(/* ...elements */) { + return collectionAddAll.apply(this, arguments); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.delete-all.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.delete-all.js new file mode 100644 index 0000000..b262821 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.delete-all.js @@ -0,0 +1,12 @@ +'use strict'; +var $ = require('../internals/export'); +var IS_PURE = require('../internals/is-pure'); +var collectionDeleteAll = require('../internals/collection-delete-all'); + +// `WeakSet.prototype.deleteAll` method +// https://github.com/tc39/proposal-collection-methods +$({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, { + deleteAll: function deleteAll(/* ...elements */) { + return collectionDeleteAll.apply(this, arguments); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.from.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.from.js new file mode 100644 index 0000000..e13acec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.from.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var from = require('../internals/collection-from'); + +// `WeakSet.from` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from +$({ target: 'WeakSet', stat: true }, { + from: from +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.of.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.of.js new file mode 100644 index 0000000..aee9920 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/esnext.weak-set.of.js @@ -0,0 +1,8 @@ +var $ = require('../internals/export'); +var of = require('../internals/collection-of'); + +// `WeakSet.of` method +// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of +$({ target: 'WeakSet', stat: true }, { + of: of +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.for-each.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.for-each.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.iterator.js new file mode 100644 index 0000000..0bba3b8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.dom-collections.iterator.js @@ -0,0 +1,18 @@ +require('./es.array.iterator'); +var DOMIterables = require('../internals/dom-iterables'); +var global = require('../internals/global'); +var classof = require('../internals/classof'); +var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); +var Iterators = require('../internals/iterators'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); + +for (var COLLECTION_NAME in DOMIterables) { + var Collection = global[COLLECTION_NAME]; + var CollectionPrototype = Collection && Collection.prototype; + if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) { + createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME); + } + Iterators[COLLECTION_NAME] = Iterators.Array; +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.immediate.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.immediate.js new file mode 100644 index 0000000..0a0f1ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.immediate.js @@ -0,0 +1,15 @@ +var $ = require('../internals/export'); +var global = require('../internals/global'); +var task = require('../internals/task'); + +var FORCED = !global.setImmediate || !global.clearImmediate; + +// http://w3c.github.io/setImmediate/ +$({ global: true, bind: true, enumerable: true, forced: FORCED }, { + // `setImmediate` method + // http://w3c.github.io/setImmediate/#si-setImmediate + setImmediate: task.set, + // `clearImmediate` method + // http://w3c.github.io/setImmediate/#si-clearImmediate + clearImmediate: task.clear +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.queue-microtask.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.queue-microtask.js new file mode 100644 index 0000000..ac5530c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.queue-microtask.js @@ -0,0 +1,16 @@ +var $ = require('../internals/export'); +var global = require('../internals/global'); +var microtask = require('../internals/microtask'); +var classof = require('../internals/classof-raw'); + +var process = global.process; +var isNode = classof(process) == 'process'; + +// `queueMicrotask` method +// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask +$({ global: true, enumerable: true, noTargetGet: true }, { + queueMicrotask: function queueMicrotask(fn) { + var domain = isNode && process.domain; + microtask(domain ? domain.bind(fn) : fn); + } +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.timers.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.timers.js new file mode 100644 index 0000000..0a4a7fc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.timers.js @@ -0,0 +1,28 @@ +var $ = require('../internals/export'); +var global = require('../internals/global'); +var userAgent = require('../internals/engine-user-agent'); + +var slice = [].slice; +var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check + +var wrap = function (scheduler) { + return function (handler, timeout /* , ...arguments */) { + var boundArgs = arguments.length > 2; + var args = boundArgs ? slice.call(arguments, 2) : undefined; + return scheduler(boundArgs ? function () { + // eslint-disable-next-line no-new-func + (typeof handler == 'function' ? handler : Function(handler)).apply(this, args); + } : handler, timeout); + }; +}; + +// ie9- setTimeout & setInterval additional parameters fix +// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers +$({ global: true, bind: true, forced: MSIE }, { + // `setTimeout` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout + setTimeout: wrap(global.setTimeout), + // `setInterval` method + // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval + setInterval: wrap(global.setInterval) +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url-search-params.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url-search-params.js new file mode 100644 index 0000000..e2b54c7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url-search-params.js @@ -0,0 +1,347 @@ +'use strict'; +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +require('../modules/es.array.iterator'); +var $ = require('../internals/export'); +var getBuiltIn = require('../internals/get-built-in'); +var USE_NATIVE_URL = require('../internals/native-url'); +var redefine = require('../internals/redefine'); +var redefineAll = require('../internals/redefine-all'); +var setToStringTag = require('../internals/set-to-string-tag'); +var createIteratorConstructor = require('../internals/create-iterator-constructor'); +var InternalStateModule = require('../internals/internal-state'); +var anInstance = require('../internals/an-instance'); +var hasOwn = require('../internals/has'); +var bind = require('../internals/function-bind-context'); +var classof = require('../internals/classof'); +var anObject = require('../internals/an-object'); +var isObject = require('../internals/is-object'); +var create = require('../internals/object-create'); +var createPropertyDescriptor = require('../internals/create-property-descriptor'); +var getIterator = require('../internals/get-iterator'); +var getIteratorMethod = require('../internals/get-iterator-method'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var $fetch = getBuiltIn('fetch'); +var Headers = getBuiltIn('Headers'); +var ITERATOR = wellKnownSymbol('iterator'); +var URL_SEARCH_PARAMS = 'URLSearchParams'; +var URL_SEARCH_PARAMS_ITERATOR = URL_SEARCH_PARAMS + 'Iterator'; +var setInternalState = InternalStateModule.set; +var getInternalParamsState = InternalStateModule.getterFor(URL_SEARCH_PARAMS); +var getInternalIteratorState = InternalStateModule.getterFor(URL_SEARCH_PARAMS_ITERATOR); + +var plus = /\+/g; +var sequences = Array(4); + +var percentSequence = function (bytes) { + return sequences[bytes - 1] || (sequences[bytes - 1] = RegExp('((?:%[\\da-f]{2}){' + bytes + '})', 'gi')); +}; + +var percentDecode = function (sequence) { + try { + return decodeURIComponent(sequence); + } catch (error) { + return sequence; + } +}; + +var deserialize = function (it) { + var result = it.replace(plus, ' '); + var bytes = 4; + try { + return decodeURIComponent(result); + } catch (error) { + while (bytes) { + result = result.replace(percentSequence(bytes--), percentDecode); + } + return result; + } +}; + +var find = /[!'()~]|%20/g; + +var replace = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+' +}; + +var replacer = function (match) { + return replace[match]; +}; + +var serialize = function (it) { + return encodeURIComponent(it).replace(find, replacer); +}; + +var parseSearchParams = function (result, query) { + if (query) { + var attributes = query.split('&'); + var index = 0; + var attribute, entry; + while (index < attributes.length) { + attribute = attributes[index++]; + if (attribute.length) { + entry = attribute.split('='); + result.push({ + key: deserialize(entry.shift()), + value: deserialize(entry.join('=')) + }); + } + } + } +}; + +var updateSearchParams = function (query) { + this.entries.length = 0; + parseSearchParams(this.entries, query); +}; + +var validateArgumentsLength = function (passed, required) { + if (passed < required) throw TypeError('Not enough arguments'); +}; + +var URLSearchParamsIterator = createIteratorConstructor(function Iterator(params, kind) { + setInternalState(this, { + type: URL_SEARCH_PARAMS_ITERATOR, + iterator: getIterator(getInternalParamsState(params).entries), + kind: kind + }); +}, 'Iterator', function next() { + var state = getInternalIteratorState(this); + var kind = state.kind; + var step = state.iterator.next(); + var entry = step.value; + if (!step.done) { + step.value = kind === 'keys' ? entry.key : kind === 'values' ? entry.value : [entry.key, entry.value]; + } return step; +}); + +// `URLSearchParams` constructor +// https://url.spec.whatwg.org/#interface-urlsearchparams +var URLSearchParamsConstructor = function URLSearchParams(/* init */) { + anInstance(this, URLSearchParamsConstructor, URL_SEARCH_PARAMS); + var init = arguments.length > 0 ? arguments[0] : undefined; + var that = this; + var entries = []; + var iteratorMethod, iterator, next, step, entryIterator, entryNext, first, second, key; + + setInternalState(that, { + type: URL_SEARCH_PARAMS, + entries: entries, + updateURL: function () { /* empty */ }, + updateSearchParams: updateSearchParams + }); + + if (init !== undefined) { + if (isObject(init)) { + iteratorMethod = getIteratorMethod(init); + if (typeof iteratorMethod === 'function') { + iterator = iteratorMethod.call(init); + next = iterator.next; + while (!(step = next.call(iterator)).done) { + entryIterator = getIterator(anObject(step.value)); + entryNext = entryIterator.next; + if ( + (first = entryNext.call(entryIterator)).done || + (second = entryNext.call(entryIterator)).done || + !entryNext.call(entryIterator).done + ) throw TypeError('Expected sequence with length 2'); + entries.push({ key: first.value + '', value: second.value + '' }); + } + } else for (key in init) if (hasOwn(init, key)) entries.push({ key: key, value: init[key] + '' }); + } else { + parseSearchParams(entries, typeof init === 'string' ? init.charAt(0) === '?' ? init.slice(1) : init : init + ''); + } + } +}; + +var URLSearchParamsPrototype = URLSearchParamsConstructor.prototype; + +redefineAll(URLSearchParamsPrototype, { + // `URLSearchParams.prototype.appent` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-append + append: function append(name, value) { + validateArgumentsLength(arguments.length, 2); + var state = getInternalParamsState(this); + state.entries.push({ key: name + '', value: value + '' }); + state.updateURL(); + }, + // `URLSearchParams.prototype.delete` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-delete + 'delete': function (name) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index].key === key) entries.splice(index, 1); + else index++; + } + state.updateURL(); + }, + // `URLSearchParams.prototype.get` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-get + get: function get(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) return entries[index].value; + } + return null; + }, + // `URLSearchParams.prototype.getAll` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-getall + getAll: function getAll(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var result = []; + var index = 0; + for (; index < entries.length; index++) { + if (entries[index].key === key) result.push(entries[index].value); + } + return result; + }, + // `URLSearchParams.prototype.has` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-has + has: function has(name) { + validateArgumentsLength(arguments.length, 1); + var entries = getInternalParamsState(this).entries; + var key = name + ''; + var index = 0; + while (index < entries.length) { + if (entries[index++].key === key) return true; + } + return false; + }, + // `URLSearchParams.prototype.set` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-set + set: function set(name, value) { + validateArgumentsLength(arguments.length, 1); + var state = getInternalParamsState(this); + var entries = state.entries; + var found = false; + var key = name + ''; + var val = value + ''; + var index = 0; + var entry; + for (; index < entries.length; index++) { + entry = entries[index]; + if (entry.key === key) { + if (found) entries.splice(index--, 1); + else { + found = true; + entry.value = val; + } + } + } + if (!found) entries.push({ key: key, value: val }); + state.updateURL(); + }, + // `URLSearchParams.prototype.sort` method + // https://url.spec.whatwg.org/#dom-urlsearchparams-sort + sort: function sort() { + var state = getInternalParamsState(this); + var entries = state.entries; + // Array#sort is not stable in some engines + var slice = entries.slice(); + var entry, entriesIndex, sliceIndex; + entries.length = 0; + for (sliceIndex = 0; sliceIndex < slice.length; sliceIndex++) { + entry = slice[sliceIndex]; + for (entriesIndex = 0; entriesIndex < sliceIndex; entriesIndex++) { + if (entries[entriesIndex].key > entry.key) { + entries.splice(entriesIndex, 0, entry); + break; + } + } + if (entriesIndex === sliceIndex) entries.push(entry); + } + state.updateURL(); + }, + // `URLSearchParams.prototype.forEach` method + forEach: function forEach(callback /* , thisArg */) { + var entries = getInternalParamsState(this).entries; + var boundFunction = bind(callback, arguments.length > 1 ? arguments[1] : undefined, 3); + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + boundFunction(entry.value, entry.key, this); + } + }, + // `URLSearchParams.prototype.keys` method + keys: function keys() { + return new URLSearchParamsIterator(this, 'keys'); + }, + // `URLSearchParams.prototype.values` method + values: function values() { + return new URLSearchParamsIterator(this, 'values'); + }, + // `URLSearchParams.prototype.entries` method + entries: function entries() { + return new URLSearchParamsIterator(this, 'entries'); + } +}, { enumerable: true }); + +// `URLSearchParams.prototype[@@iterator]` method +redefine(URLSearchParamsPrototype, ITERATOR, URLSearchParamsPrototype.entries); + +// `URLSearchParams.prototype.toString` method +// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior +redefine(URLSearchParamsPrototype, 'toString', function toString() { + var entries = getInternalParamsState(this).entries; + var result = []; + var index = 0; + var entry; + while (index < entries.length) { + entry = entries[index++]; + result.push(serialize(entry.key) + '=' + serialize(entry.value)); + } return result.join('&'); +}, { enumerable: true }); + +setToStringTag(URLSearchParamsConstructor, URL_SEARCH_PARAMS); + +$({ global: true, forced: !USE_NATIVE_URL }, { + URLSearchParams: URLSearchParamsConstructor +}); + +// Wrap `fetch` for correct work with polyfilled `URLSearchParams` +// https://github.com/zloirock/core-js/issues/674 +if (!USE_NATIVE_URL && typeof $fetch == 'function' && typeof Headers == 'function') { + $({ global: true, enumerable: true, forced: true }, { + fetch: function fetch(input /* , init */) { + var args = [input]; + var init, body, headers; + if (arguments.length > 1) { + init = arguments[1]; + if (isObject(init)) { + body = init.body; + if (classof(body) === URL_SEARCH_PARAMS) { + headers = init.headers ? new Headers(init.headers) : new Headers(); + if (!headers.has('content-type')) { + headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + init = create(init, { + body: createPropertyDescriptor(0, String(body)), + headers: createPropertyDescriptor(0, headers) + }); + } + } + args.push(init); + } return $fetch.apply(this, args); + } + }); +} + +module.exports = { + URLSearchParams: URLSearchParamsConstructor, + getState: getInternalParamsState +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.js new file mode 100644 index 0000000..c6b0372 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.js @@ -0,0 +1,1007 @@ +'use strict'; +// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env` +require('../modules/es.string.iterator'); +var $ = require('../internals/export'); +var DESCRIPTORS = require('../internals/descriptors'); +var USE_NATIVE_URL = require('../internals/native-url'); +var global = require('../internals/global'); +var defineProperties = require('../internals/object-define-properties'); +var redefine = require('../internals/redefine'); +var anInstance = require('../internals/an-instance'); +var has = require('../internals/has'); +var assign = require('../internals/object-assign'); +var arrayFrom = require('../internals/array-from'); +var codeAt = require('../internals/string-multibyte').codeAt; +var toASCII = require('../internals/string-punycode-to-ascii'); +var setToStringTag = require('../internals/set-to-string-tag'); +var URLSearchParamsModule = require('../modules/web.url-search-params'); +var InternalStateModule = require('../internals/internal-state'); + +var NativeURL = global.URL; +var URLSearchParams = URLSearchParamsModule.URLSearchParams; +var getInternalSearchParamsState = URLSearchParamsModule.getState; +var setInternalState = InternalStateModule.set; +var getInternalURLState = InternalStateModule.getterFor('URL'); +var floor = Math.floor; +var pow = Math.pow; + +var INVALID_AUTHORITY = 'Invalid authority'; +var INVALID_SCHEME = 'Invalid scheme'; +var INVALID_HOST = 'Invalid host'; +var INVALID_PORT = 'Invalid port'; + +var ALPHA = /[A-Za-z]/; +var ALPHANUMERIC = /[\d+-.A-Za-z]/; +var DIGIT = /\d/; +var HEX_START = /^(0x|0X)/; +var OCT = /^[0-7]+$/; +var DEC = /^\d+$/; +var HEX = /^[\dA-Fa-f]+$/; +// eslint-disable-next-line no-control-regex +var FORBIDDEN_HOST_CODE_POINT = /[\u0000\u0009\u000A\u000D #%/:?@[\\]]/; +// eslint-disable-next-line no-control-regex +var FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT = /[\u0000\u0009\u000A\u000D #/:?@[\\]]/; +// eslint-disable-next-line no-control-regex +var LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE = /^[\u0000-\u001F ]+|[\u0000-\u001F ]+$/g; +// eslint-disable-next-line no-control-regex +var TAB_AND_NEW_LINE = /[\u0009\u000A\u000D]/g; +var EOF; + +var parseHost = function (url, input) { + var result, codePoints, index; + if (input.charAt(0) == '[') { + if (input.charAt(input.length - 1) != ']') return INVALID_HOST; + result = parseIPv6(input.slice(1, -1)); + if (!result) return INVALID_HOST; + url.host = result; + // opaque host + } else if (!isSpecial(url)) { + if (FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT.test(input)) return INVALID_HOST; + result = ''; + codePoints = arrayFrom(input); + for (index = 0; index < codePoints.length; index++) { + result += percentEncode(codePoints[index], C0ControlPercentEncodeSet); + } + url.host = result; + } else { + input = toASCII(input); + if (FORBIDDEN_HOST_CODE_POINT.test(input)) return INVALID_HOST; + result = parseIPv4(input); + if (result === null) return INVALID_HOST; + url.host = result; + } +}; + +var parseIPv4 = function (input) { + var parts = input.split('.'); + var partsLength, numbers, index, part, radix, number, ipv4; + if (parts.length && parts[parts.length - 1] == '') { + parts.pop(); + } + partsLength = parts.length; + if (partsLength > 4) return input; + numbers = []; + for (index = 0; index < partsLength; index++) { + part = parts[index]; + if (part == '') return input; + radix = 10; + if (part.length > 1 && part.charAt(0) == '0') { + radix = HEX_START.test(part) ? 16 : 8; + part = part.slice(radix == 8 ? 1 : 2); + } + if (part === '') { + number = 0; + } else { + if (!(radix == 10 ? DEC : radix == 8 ? OCT : HEX).test(part)) return input; + number = parseInt(part, radix); + } + numbers.push(number); + } + for (index = 0; index < partsLength; index++) { + number = numbers[index]; + if (index == partsLength - 1) { + if (number >= pow(256, 5 - partsLength)) return null; + } else if (number > 255) return null; + } + ipv4 = numbers.pop(); + for (index = 0; index < numbers.length; index++) { + ipv4 += numbers[index] * pow(256, 3 - index); + } + return ipv4; +}; + +// eslint-disable-next-line max-statements +var parseIPv6 = function (input) { + var address = [0, 0, 0, 0, 0, 0, 0, 0]; + var pieceIndex = 0; + var compress = null; + var pointer = 0; + var value, length, numbersSeen, ipv4Piece, number, swaps, swap; + + var char = function () { + return input.charAt(pointer); + }; + + if (char() == ':') { + if (input.charAt(1) != ':') return; + pointer += 2; + pieceIndex++; + compress = pieceIndex; + } + while (char()) { + if (pieceIndex == 8) return; + if (char() == ':') { + if (compress !== null) return; + pointer++; + pieceIndex++; + compress = pieceIndex; + continue; + } + value = length = 0; + while (length < 4 && HEX.test(char())) { + value = value * 16 + parseInt(char(), 16); + pointer++; + length++; + } + if (char() == '.') { + if (length == 0) return; + pointer -= length; + if (pieceIndex > 6) return; + numbersSeen = 0; + while (char()) { + ipv4Piece = null; + if (numbersSeen > 0) { + if (char() == '.' && numbersSeen < 4) pointer++; + else return; + } + if (!DIGIT.test(char())) return; + while (DIGIT.test(char())) { + number = parseInt(char(), 10); + if (ipv4Piece === null) ipv4Piece = number; + else if (ipv4Piece == 0) return; + else ipv4Piece = ipv4Piece * 10 + number; + if (ipv4Piece > 255) return; + pointer++; + } + address[pieceIndex] = address[pieceIndex] * 256 + ipv4Piece; + numbersSeen++; + if (numbersSeen == 2 || numbersSeen == 4) pieceIndex++; + } + if (numbersSeen != 4) return; + break; + } else if (char() == ':') { + pointer++; + if (!char()) return; + } else if (char()) return; + address[pieceIndex++] = value; + } + if (compress !== null) { + swaps = pieceIndex - compress; + pieceIndex = 7; + while (pieceIndex != 0 && swaps > 0) { + swap = address[pieceIndex]; + address[pieceIndex--] = address[compress + swaps - 1]; + address[compress + --swaps] = swap; + } + } else if (pieceIndex != 8) return; + return address; +}; + +var findLongestZeroSequence = function (ipv6) { + var maxIndex = null; + var maxLength = 1; + var currStart = null; + var currLength = 0; + var index = 0; + for (; index < 8; index++) { + if (ipv6[index] !== 0) { + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + currStart = null; + currLength = 0; + } else { + if (currStart === null) currStart = index; + ++currLength; + } + } + if (currLength > maxLength) { + maxIndex = currStart; + maxLength = currLength; + } + return maxIndex; +}; + +var serializeHost = function (host) { + var result, index, compress, ignore0; + // ipv4 + if (typeof host == 'number') { + result = []; + for (index = 0; index < 4; index++) { + result.unshift(host % 256); + host = floor(host / 256); + } return result.join('.'); + // ipv6 + } else if (typeof host == 'object') { + result = ''; + compress = findLongestZeroSequence(host); + for (index = 0; index < 8; index++) { + if (ignore0 && host[index] === 0) continue; + if (ignore0) ignore0 = false; + if (compress === index) { + result += index ? ':' : '::'; + ignore0 = true; + } else { + result += host[index].toString(16); + if (index < 7) result += ':'; + } + } + return '[' + result + ']'; + } return host; +}; + +var C0ControlPercentEncodeSet = {}; +var fragmentPercentEncodeSet = assign({}, C0ControlPercentEncodeSet, { + ' ': 1, '"': 1, '<': 1, '>': 1, '`': 1 +}); +var pathPercentEncodeSet = assign({}, fragmentPercentEncodeSet, { + '#': 1, '?': 1, '{': 1, '}': 1 +}); +var userinfoPercentEncodeSet = assign({}, pathPercentEncodeSet, { + '/': 1, ':': 1, ';': 1, '=': 1, '@': 1, '[': 1, '\\': 1, ']': 1, '^': 1, '|': 1 +}); + +var percentEncode = function (char, set) { + var code = codeAt(char, 0); + return code > 0x20 && code < 0x7F && !has(set, char) ? char : encodeURIComponent(char); +}; + +var specialSchemes = { + ftp: 21, + file: null, + http: 80, + https: 443, + ws: 80, + wss: 443 +}; + +var isSpecial = function (url) { + return has(specialSchemes, url.scheme); +}; + +var includesCredentials = function (url) { + return url.username != '' || url.password != ''; +}; + +var cannotHaveUsernamePasswordPort = function (url) { + return !url.host || url.cannotBeABaseURL || url.scheme == 'file'; +}; + +var isWindowsDriveLetter = function (string, normalized) { + var second; + return string.length == 2 && ALPHA.test(string.charAt(0)) + && ((second = string.charAt(1)) == ':' || (!normalized && second == '|')); +}; + +var startsWithWindowsDriveLetter = function (string) { + var third; + return string.length > 1 && isWindowsDriveLetter(string.slice(0, 2)) && ( + string.length == 2 || + ((third = string.charAt(2)) === '/' || third === '\\' || third === '?' || third === '#') + ); +}; + +var shortenURLsPath = function (url) { + var path = url.path; + var pathSize = path.length; + if (pathSize && (url.scheme != 'file' || pathSize != 1 || !isWindowsDriveLetter(path[0], true))) { + path.pop(); + } +}; + +var isSingleDot = function (segment) { + return segment === '.' || segment.toLowerCase() === '%2e'; +}; + +var isDoubleDot = function (segment) { + segment = segment.toLowerCase(); + return segment === '..' || segment === '%2e.' || segment === '.%2e' || segment === '%2e%2e'; +}; + +// States: +var SCHEME_START = {}; +var SCHEME = {}; +var NO_SCHEME = {}; +var SPECIAL_RELATIVE_OR_AUTHORITY = {}; +var PATH_OR_AUTHORITY = {}; +var RELATIVE = {}; +var RELATIVE_SLASH = {}; +var SPECIAL_AUTHORITY_SLASHES = {}; +var SPECIAL_AUTHORITY_IGNORE_SLASHES = {}; +var AUTHORITY = {}; +var HOST = {}; +var HOSTNAME = {}; +var PORT = {}; +var FILE = {}; +var FILE_SLASH = {}; +var FILE_HOST = {}; +var PATH_START = {}; +var PATH = {}; +var CANNOT_BE_A_BASE_URL_PATH = {}; +var QUERY = {}; +var FRAGMENT = {}; + +// eslint-disable-next-line max-statements +var parseURL = function (url, input, stateOverride, base) { + var state = stateOverride || SCHEME_START; + var pointer = 0; + var buffer = ''; + var seenAt = false; + var seenBracket = false; + var seenPasswordToken = false; + var codePoints, char, bufferCodePoints, failure; + + if (!stateOverride) { + url.scheme = ''; + url.username = ''; + url.password = ''; + url.host = null; + url.port = null; + url.path = []; + url.query = null; + url.fragment = null; + url.cannotBeABaseURL = false; + input = input.replace(LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE, ''); + } + + input = input.replace(TAB_AND_NEW_LINE, ''); + + codePoints = arrayFrom(input); + + while (pointer <= codePoints.length) { + char = codePoints[pointer]; + switch (state) { + case SCHEME_START: + if (char && ALPHA.test(char)) { + buffer += char.toLowerCase(); + state = SCHEME; + } else if (!stateOverride) { + state = NO_SCHEME; + continue; + } else return INVALID_SCHEME; + break; + + case SCHEME: + if (char && (ALPHANUMERIC.test(char) || char == '+' || char == '-' || char == '.')) { + buffer += char.toLowerCase(); + } else if (char == ':') { + if (stateOverride && ( + (isSpecial(url) != has(specialSchemes, buffer)) || + (buffer == 'file' && (includesCredentials(url) || url.port !== null)) || + (url.scheme == 'file' && !url.host) + )) return; + url.scheme = buffer; + if (stateOverride) { + if (isSpecial(url) && specialSchemes[url.scheme] == url.port) url.port = null; + return; + } + buffer = ''; + if (url.scheme == 'file') { + state = FILE; + } else if (isSpecial(url) && base && base.scheme == url.scheme) { + state = SPECIAL_RELATIVE_OR_AUTHORITY; + } else if (isSpecial(url)) { + state = SPECIAL_AUTHORITY_SLASHES; + } else if (codePoints[pointer + 1] == '/') { + state = PATH_OR_AUTHORITY; + pointer++; + } else { + url.cannotBeABaseURL = true; + url.path.push(''); + state = CANNOT_BE_A_BASE_URL_PATH; + } + } else if (!stateOverride) { + buffer = ''; + state = NO_SCHEME; + pointer = 0; + continue; + } else return INVALID_SCHEME; + break; + + case NO_SCHEME: + if (!base || (base.cannotBeABaseURL && char != '#')) return INVALID_SCHEME; + if (base.cannotBeABaseURL && char == '#') { + url.scheme = base.scheme; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + url.cannotBeABaseURL = true; + state = FRAGMENT; + break; + } + state = base.scheme == 'file' ? FILE : RELATIVE; + continue; + + case SPECIAL_RELATIVE_OR_AUTHORITY: + if (char == '/' && codePoints[pointer + 1] == '/') { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + pointer++; + } else { + state = RELATIVE; + continue; + } break; + + case PATH_OR_AUTHORITY: + if (char == '/') { + state = AUTHORITY; + break; + } else { + state = PATH; + continue; + } + + case RELATIVE: + url.scheme = base.scheme; + if (char == EOF) { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '/' || (char == '\\' && isSpecial(url))) { + state = RELATIVE_SLASH; + } else if (char == '?') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + url.path = base.path.slice(); + url.path.pop(); + state = PATH; + continue; + } break; + + case RELATIVE_SLASH: + if (isSpecial(url) && (char == '/' || char == '\\')) { + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + } else if (char == '/') { + state = AUTHORITY; + } else { + url.username = base.username; + url.password = base.password; + url.host = base.host; + url.port = base.port; + state = PATH; + continue; + } break; + + case SPECIAL_AUTHORITY_SLASHES: + state = SPECIAL_AUTHORITY_IGNORE_SLASHES; + if (char != '/' || buffer.charAt(pointer + 1) != '/') continue; + pointer++; + break; + + case SPECIAL_AUTHORITY_IGNORE_SLASHES: + if (char != '/' && char != '\\') { + state = AUTHORITY; + continue; + } break; + + case AUTHORITY: + if (char == '@') { + if (seenAt) buffer = '%40' + buffer; + seenAt = true; + bufferCodePoints = arrayFrom(buffer); + for (var i = 0; i < bufferCodePoints.length; i++) { + var codePoint = bufferCodePoints[i]; + if (codePoint == ':' && !seenPasswordToken) { + seenPasswordToken = true; + continue; + } + var encodedCodePoints = percentEncode(codePoint, userinfoPercentEncodeSet); + if (seenPasswordToken) url.password += encodedCodePoints; + else url.username += encodedCodePoints; + } + buffer = ''; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (seenAt && buffer == '') return INVALID_AUTHORITY; + pointer -= arrayFrom(buffer).length + 1; + buffer = ''; + state = HOST; + } else buffer += char; + break; + + case HOST: + case HOSTNAME: + if (stateOverride && url.scheme == 'file') { + state = FILE_HOST; + continue; + } else if (char == ':' && !seenBracket) { + if (buffer == '') return INVALID_HOST; + failure = parseHost(url, buffer); + if (failure) return failure; + buffer = ''; + state = PORT; + if (stateOverride == HOSTNAME) return; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) + ) { + if (isSpecial(url) && buffer == '') return INVALID_HOST; + if (stateOverride && buffer == '' && (includesCredentials(url) || url.port !== null)) return; + failure = parseHost(url, buffer); + if (failure) return failure; + buffer = ''; + state = PATH_START; + if (stateOverride) return; + continue; + } else { + if (char == '[') seenBracket = true; + else if (char == ']') seenBracket = false; + buffer += char; + } break; + + case PORT: + if (DIGIT.test(char)) { + buffer += char; + } else if ( + char == EOF || char == '/' || char == '?' || char == '#' || + (char == '\\' && isSpecial(url)) || + stateOverride + ) { + if (buffer != '') { + var port = parseInt(buffer, 10); + if (port > 0xFFFF) return INVALID_PORT; + url.port = (isSpecial(url) && port === specialSchemes[url.scheme]) ? null : port; + buffer = ''; + } + if (stateOverride) return; + state = PATH_START; + continue; + } else return INVALID_PORT; + break; + + case FILE: + url.scheme = 'file'; + if (char == '/' || char == '\\') state = FILE_SLASH; + else if (base && base.scheme == 'file') { + if (char == EOF) { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + } else if (char == '?') { + url.host = base.host; + url.path = base.path.slice(); + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.host = base.host; + url.path = base.path.slice(); + url.query = base.query; + url.fragment = ''; + state = FRAGMENT; + } else { + if (!startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + url.host = base.host; + url.path = base.path.slice(); + shortenURLsPath(url); + } + state = PATH; + continue; + } + } else { + state = PATH; + continue; + } break; + + case FILE_SLASH: + if (char == '/' || char == '\\') { + state = FILE_HOST; + break; + } + if (base && base.scheme == 'file' && !startsWithWindowsDriveLetter(codePoints.slice(pointer).join(''))) { + if (isWindowsDriveLetter(base.path[0], true)) url.path.push(base.path[0]); + else url.host = base.host; + } + state = PATH; + continue; + + case FILE_HOST: + if (char == EOF || char == '/' || char == '\\' || char == '?' || char == '#') { + if (!stateOverride && isWindowsDriveLetter(buffer)) { + state = PATH; + } else if (buffer == '') { + url.host = ''; + if (stateOverride) return; + state = PATH_START; + } else { + failure = parseHost(url, buffer); + if (failure) return failure; + if (url.host == 'localhost') url.host = ''; + if (stateOverride) return; + buffer = ''; + state = PATH_START; + } continue; + } else buffer += char; + break; + + case PATH_START: + if (isSpecial(url)) { + state = PATH; + if (char != '/' && char != '\\') continue; + } else if (!stateOverride && char == '?') { + url.query = ''; + state = QUERY; + } else if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + state = PATH; + if (char != '/') continue; + } break; + + case PATH: + if ( + char == EOF || char == '/' || + (char == '\\' && isSpecial(url)) || + (!stateOverride && (char == '?' || char == '#')) + ) { + if (isDoubleDot(buffer)) { + shortenURLsPath(url); + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else if (isSingleDot(buffer)) { + if (char != '/' && !(char == '\\' && isSpecial(url))) { + url.path.push(''); + } + } else { + if (url.scheme == 'file' && !url.path.length && isWindowsDriveLetter(buffer)) { + if (url.host) url.host = ''; + buffer = buffer.charAt(0) + ':'; // normalize windows drive letter + } + url.path.push(buffer); + } + buffer = ''; + if (url.scheme == 'file' && (char == EOF || char == '?' || char == '#')) { + while (url.path.length > 1 && url.path[0] === '') { + url.path.shift(); + } + } + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } + } else { + buffer += percentEncode(char, pathPercentEncodeSet); + } break; + + case CANNOT_BE_A_BASE_URL_PATH: + if (char == '?') { + url.query = ''; + state = QUERY; + } else if (char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + url.path[0] += percentEncode(char, C0ControlPercentEncodeSet); + } break; + + case QUERY: + if (!stateOverride && char == '#') { + url.fragment = ''; + state = FRAGMENT; + } else if (char != EOF) { + if (char == "'" && isSpecial(url)) url.query += '%27'; + else if (char == '#') url.query += '%23'; + else url.query += percentEncode(char, C0ControlPercentEncodeSet); + } break; + + case FRAGMENT: + if (char != EOF) url.fragment += percentEncode(char, fragmentPercentEncodeSet); + break; + } + + pointer++; + } +}; + +// `URL` constructor +// https://url.spec.whatwg.org/#url-class +var URLConstructor = function URL(url /* , base */) { + var that = anInstance(this, URLConstructor, 'URL'); + var base = arguments.length > 1 ? arguments[1] : undefined; + var urlString = String(url); + var state = setInternalState(that, { type: 'URL' }); + var baseState, failure; + if (base !== undefined) { + if (base instanceof URLConstructor) baseState = getInternalURLState(base); + else { + failure = parseURL(baseState = {}, String(base)); + if (failure) throw TypeError(failure); + } + } + failure = parseURL(state, urlString, null, baseState); + if (failure) throw TypeError(failure); + var searchParams = state.searchParams = new URLSearchParams(); + var searchParamsState = getInternalSearchParamsState(searchParams); + searchParamsState.updateSearchParams(state.query); + searchParamsState.updateURL = function () { + state.query = String(searchParams) || null; + }; + if (!DESCRIPTORS) { + that.href = serializeURL.call(that); + that.origin = getOrigin.call(that); + that.protocol = getProtocol.call(that); + that.username = getUsername.call(that); + that.password = getPassword.call(that); + that.host = getHost.call(that); + that.hostname = getHostname.call(that); + that.port = getPort.call(that); + that.pathname = getPathname.call(that); + that.search = getSearch.call(that); + that.searchParams = getSearchParams.call(that); + that.hash = getHash.call(that); + } +}; + +var URLPrototype = URLConstructor.prototype; + +var serializeURL = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var username = url.username; + var password = url.password; + var host = url.host; + var port = url.port; + var path = url.path; + var query = url.query; + var fragment = url.fragment; + var output = scheme + ':'; + if (host !== null) { + output += '//'; + if (includesCredentials(url)) { + output += username + (password ? ':' + password : '') + '@'; + } + output += serializeHost(host); + if (port !== null) output += ':' + port; + } else if (scheme == 'file') output += '//'; + output += url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; + if (query !== null) output += '?' + query; + if (fragment !== null) output += '#' + fragment; + return output; +}; + +var getOrigin = function () { + var url = getInternalURLState(this); + var scheme = url.scheme; + var port = url.port; + if (scheme == 'blob') try { + return new URL(scheme.path[0]).origin; + } catch (error) { + return 'null'; + } + if (scheme == 'file' || !isSpecial(url)) return 'null'; + return scheme + '://' + serializeHost(url.host) + (port !== null ? ':' + port : ''); +}; + +var getProtocol = function () { + return getInternalURLState(this).scheme + ':'; +}; + +var getUsername = function () { + return getInternalURLState(this).username; +}; + +var getPassword = function () { + return getInternalURLState(this).password; +}; + +var getHost = function () { + var url = getInternalURLState(this); + var host = url.host; + var port = url.port; + return host === null ? '' + : port === null ? serializeHost(host) + : serializeHost(host) + ':' + port; +}; + +var getHostname = function () { + var host = getInternalURLState(this).host; + return host === null ? '' : serializeHost(host); +}; + +var getPort = function () { + var port = getInternalURLState(this).port; + return port === null ? '' : String(port); +}; + +var getPathname = function () { + var url = getInternalURLState(this); + var path = url.path; + return url.cannotBeABaseURL ? path[0] : path.length ? '/' + path.join('/') : ''; +}; + +var getSearch = function () { + var query = getInternalURLState(this).query; + return query ? '?' + query : ''; +}; + +var getSearchParams = function () { + return getInternalURLState(this).searchParams; +}; + +var getHash = function () { + var fragment = getInternalURLState(this).fragment; + return fragment ? '#' + fragment : ''; +}; + +var accessorDescriptor = function (getter, setter) { + return { get: getter, set: setter, configurable: true, enumerable: true }; +}; + +if (DESCRIPTORS) { + defineProperties(URLPrototype, { + // `URL.prototype.href` accessors pair + // https://url.spec.whatwg.org/#dom-url-href + href: accessorDescriptor(serializeURL, function (href) { + var url = getInternalURLState(this); + var urlString = String(href); + var failure = parseURL(url, urlString); + if (failure) throw TypeError(failure); + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.origin` getter + // https://url.spec.whatwg.org/#dom-url-origin + origin: accessorDescriptor(getOrigin), + // `URL.prototype.protocol` accessors pair + // https://url.spec.whatwg.org/#dom-url-protocol + protocol: accessorDescriptor(getProtocol, function (protocol) { + var url = getInternalURLState(this); + parseURL(url, String(protocol) + ':', SCHEME_START); + }), + // `URL.prototype.username` accessors pair + // https://url.spec.whatwg.org/#dom-url-username + username: accessorDescriptor(getUsername, function (username) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(username)); + if (cannotHaveUsernamePasswordPort(url)) return; + url.username = ''; + for (var i = 0; i < codePoints.length; i++) { + url.username += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.password` accessors pair + // https://url.spec.whatwg.org/#dom-url-password + password: accessorDescriptor(getPassword, function (password) { + var url = getInternalURLState(this); + var codePoints = arrayFrom(String(password)); + if (cannotHaveUsernamePasswordPort(url)) return; + url.password = ''; + for (var i = 0; i < codePoints.length; i++) { + url.password += percentEncode(codePoints[i], userinfoPercentEncodeSet); + } + }), + // `URL.prototype.host` accessors pair + // https://url.spec.whatwg.org/#dom-url-host + host: accessorDescriptor(getHost, function (host) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + parseURL(url, String(host), HOST); + }), + // `URL.prototype.hostname` accessors pair + // https://url.spec.whatwg.org/#dom-url-hostname + hostname: accessorDescriptor(getHostname, function (hostname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + parseURL(url, String(hostname), HOSTNAME); + }), + // `URL.prototype.port` accessors pair + // https://url.spec.whatwg.org/#dom-url-port + port: accessorDescriptor(getPort, function (port) { + var url = getInternalURLState(this); + if (cannotHaveUsernamePasswordPort(url)) return; + port = String(port); + if (port == '') url.port = null; + else parseURL(url, port, PORT); + }), + // `URL.prototype.pathname` accessors pair + // https://url.spec.whatwg.org/#dom-url-pathname + pathname: accessorDescriptor(getPathname, function (pathname) { + var url = getInternalURLState(this); + if (url.cannotBeABaseURL) return; + url.path = []; + parseURL(url, pathname + '', PATH_START); + }), + // `URL.prototype.search` accessors pair + // https://url.spec.whatwg.org/#dom-url-search + search: accessorDescriptor(getSearch, function (search) { + var url = getInternalURLState(this); + search = String(search); + if (search == '') { + url.query = null; + } else { + if ('?' == search.charAt(0)) search = search.slice(1); + url.query = ''; + parseURL(url, search, QUERY); + } + getInternalSearchParamsState(url.searchParams).updateSearchParams(url.query); + }), + // `URL.prototype.searchParams` getter + // https://url.spec.whatwg.org/#dom-url-searchparams + searchParams: accessorDescriptor(getSearchParams), + // `URL.prototype.hash` accessors pair + // https://url.spec.whatwg.org/#dom-url-hash + hash: accessorDescriptor(getHash, function (hash) { + var url = getInternalURLState(this); + hash = String(hash); + if (hash == '') { + url.fragment = null; + return; + } + if ('#' == hash.charAt(0)) hash = hash.slice(1); + url.fragment = ''; + parseURL(url, hash, FRAGMENT); + }) + }); +} + +// `URL.prototype.toJSON` method +// https://url.spec.whatwg.org/#dom-url-tojson +redefine(URLPrototype, 'toJSON', function toJSON() { + return serializeURL.call(this); +}, { enumerable: true }); + +// `URL.prototype.toString` method +// https://url.spec.whatwg.org/#URL-stringification-behavior +redefine(URLPrototype, 'toString', function toString() { + return serializeURL.call(this); +}, { enumerable: true }); + +if (NativeURL) { + var nativeCreateObjectURL = NativeURL.createObjectURL; + var nativeRevokeObjectURL = NativeURL.revokeObjectURL; + // `URL.createObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL + // eslint-disable-next-line no-unused-vars + if (nativeCreateObjectURL) redefine(URLConstructor, 'createObjectURL', function createObjectURL(blob) { + return nativeCreateObjectURL.apply(NativeURL, arguments); + }); + // `URL.revokeObjectURL` method + // https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL + // eslint-disable-next-line no-unused-vars + if (nativeRevokeObjectURL) redefine(URLConstructor, 'revokeObjectURL', function revokeObjectURL(url) { + return nativeRevokeObjectURL.apply(NativeURL, arguments); + }); +} + +setToStringTag(URLConstructor, 'URL'); + +$({ global: true, forced: !USE_NATIVE_URL, sham: !DESCRIPTORS }, { + URL: URLConstructor +}); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.to-json.js b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.to-json.js new file mode 100644 index 0000000..8b1a393 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/modules/web.url.to-json.js @@ -0,0 +1 @@ +// empty diff --git a/tic-tac-toe-app/node_modules/core-js-pure/package.json b/tic-tac-toe-app/node_modules/core-js-pure/package.json new file mode 100644 index 0000000..a1c69e6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/package.json @@ -0,0 +1,86 @@ +{ + "_from": "core-js-pure@^3.0.0", + "_id": "core-js-pure@3.6.5", + "_inBundle": false, + "_integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "_location": "/core-js-pure", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "core-js-pure@^3.0.0", + "name": "core-js-pure", + "escapedName": "core-js-pure", + "rawSpec": "^3.0.0", + "saveSpec": null, + "fetchSpec": "^3.0.0" + }, + "_requiredBy": [ + "/@babel/runtime-corejs3" + ], + "_resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "_shasum": "c79e75f5e38dbc85a662d91eea52b8256d53b813", + "_spec": "core-js-pure@^3.0.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/@babel/runtime-corejs3", + "bugs": { + "url": "https://github.com/zloirock/core-js/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Standard library", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + }, + "homepage": "https://github.com/zloirock/core-js#readme", + "keywords": [ + "ES3", + "ES5", + "ES6", + "ES7", + "ES2015", + "ES2016", + "ES2017", + "ES2018", + "ES2019", + "ES2020", + "ECMAScript 3", + "ECMAScript 5", + "ECMAScript 6", + "ECMAScript 7", + "ECMAScript 2015", + "ECMAScript 2016", + "ECMAScript 2017", + "ECMAScript 2018", + "ECMAScript 2019", + "ECMAScript 2020", + "Harmony", + "Strawman", + "Map", + "Set", + "WeakMap", + "WeakSet", + "Promise", + "Observable", + "Symbol", + "TypedArray", + "URL", + "URLSearchParams", + "queueMicrotask", + "setImmediate", + "polyfill", + "ponyfill", + "shim" + ], + "license": "MIT", + "main": "index.js", + "name": "core-js-pure", + "repository": { + "type": "git", + "url": "git+https://github.com/zloirock/core-js.git" + }, + "scripts": { + "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\"" + }, + "version": "3.6.5" +} diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/README.md b/tic-tac-toe-app/node_modules/core-js-pure/stable/README.md new file mode 100644 index 0000000..903150c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/README.md @@ -0,0 +1 @@ +This folder contains entry points for all stable `core-js` features with dependencies. It's the recommended way for usage only required features. diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/constructor.js new file mode 100644 index 0000000..14f239d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/constructor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer/constructor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/index.js new file mode 100644 index 0000000..cb81bbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/is-view.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/is-view.js new file mode 100644 index 0000000..02091ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/is-view.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer/is-view'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/slice.js new file mode 100644 index 0000000..1259ebf --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array-buffer/slice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array-buffer/slice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/concat.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/concat.js new file mode 100644 index 0000000..56c0625 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/concat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/concat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/copy-within.js new file mode 100644 index 0000000..3db5361 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/copy-within.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/copy-within'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/entries.js new file mode 100644 index 0000000..735b607 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/entries.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/entries'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/every.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/every.js new file mode 100644 index 0000000..8831dbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/every.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/every'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/fill.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/fill.js new file mode 100644 index 0000000..b640ccd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/fill.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/fill'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/filter.js new file mode 100644 index 0000000..c6fe56a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/filter.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/filter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/find-index.js new file mode 100644 index 0000000..312a7df --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/find-index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/find-index'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/find.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/find.js new file mode 100644 index 0000000..2fc46a5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/find.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/find'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat-map.js new file mode 100644 index 0000000..8e3e81a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat-map.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/flat-map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat.js new file mode 100644 index 0000000..f74816e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/flat.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/flat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/for-each.js new file mode 100644 index 0000000..a99f12c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/for-each.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/for-each'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/from.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/from.js new file mode 100644 index 0000000..9142d6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/from.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/from'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/includes.js new file mode 100644 index 0000000..52f040d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/includes.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/includes'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/index-of.js new file mode 100644 index 0000000..13b63f1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/index.js new file mode 100644 index 0000000..570f987 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/is-array.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/is-array.js new file mode 100644 index 0000000..89080ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/is-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/is-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/iterator.js new file mode 100644 index 0000000..bfa833f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/join.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/join.js new file mode 100644 index 0000000..74fbfc6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/join.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/join'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/keys.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/keys.js new file mode 100644 index 0000000..40b2e75 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/keys.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/keys'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/last-index-of.js new file mode 100644 index 0000000..bdcd762 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/last-index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/last-index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/map.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/map.js new file mode 100644 index 0000000..3768704 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/map.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/of.js new file mode 100644 index 0000000..d5b74f1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/of.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce-right.js new file mode 100644 index 0000000..f93b6de --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce-right.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/reduce-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce.js new file mode 100644 index 0000000..a3ae7b1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reduce.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/reduce'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reverse.js new file mode 100644 index 0000000..fc9faf1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/reverse.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/reverse'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/slice.js new file mode 100644 index 0000000..2c098bd --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/slice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/slice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/some.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/some.js new file mode 100644 index 0000000..a198c0e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/some.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/some'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/sort.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/sort.js new file mode 100644 index 0000000..5741a92 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/sort.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/sort'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/splice.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/splice.js new file mode 100644 index 0000000..e5aeb46 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/splice.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/splice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/values.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/values.js new file mode 100644 index 0000000..146bce3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/values.js @@ -0,0 +1,3 @@ +var parent = require('../../es/array/values'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/concat.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/concat.js new file mode 100644 index 0000000..9c9481b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/concat.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/concat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/copy-within.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/copy-within.js new file mode 100644 index 0000000..7d43d5c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/copy-within.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/copy-within'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/entries.js new file mode 100644 index 0000000..008e164 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/entries.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/entries'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/every.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/every.js new file mode 100644 index 0000000..3c661eb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/every.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/every'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/fill.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/fill.js new file mode 100644 index 0000000..b0a3b0e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/fill.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/fill'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/filter.js new file mode 100644 index 0000000..b78f806 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/filter.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/filter'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find-index.js new file mode 100644 index 0000000..0be7653 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find-index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/find-index'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find.js new file mode 100644 index 0000000..0f28d7c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/find.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/find'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat-map.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat-map.js new file mode 100644 index 0000000..5adc39b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat-map.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/flat-map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat.js new file mode 100644 index 0000000..cfafee6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/flat.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/flat'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/for-each.js new file mode 100644 index 0000000..ca081fb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/for-each.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/for-each'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/includes.js new file mode 100644 index 0000000..fc9bb00 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/includes.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/includes'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index-of.js new file mode 100644 index 0000000..aedd505 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index.js new file mode 100644 index 0000000..98d4718 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/iterator.js new file mode 100644 index 0000000..81ca2a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/join.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/join.js new file mode 100644 index 0000000..fe784ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/join.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/join'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/keys.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/keys.js new file mode 100644 index 0000000..6ed98ec --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/keys.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/keys'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/last-index-of.js new file mode 100644 index 0000000..697d588 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/last-index-of.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/last-index-of'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/map.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/map.js new file mode 100644 index 0000000..9475976 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/map.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce-right.js new file mode 100644 index 0000000..cf39fca --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce-right.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/reduce-right'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce.js new file mode 100644 index 0000000..5a08269 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reduce.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/reduce'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reverse.js new file mode 100644 index 0000000..099d13e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/reverse.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/reverse'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/slice.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/slice.js new file mode 100644 index 0000000..f308e00 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/slice.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/slice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/some.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/some.js new file mode 100644 index 0000000..d41a8e7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/some.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/some'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/sort.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/sort.js new file mode 100644 index 0000000..5da0daa --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/sort.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/sort'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/splice.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/splice.js new file mode 100644 index 0000000..4cbb494 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/splice.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/splice'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/values.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/values.js new file mode 100644 index 0000000..ebb6375 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/array/virtual/values.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/array/virtual/values'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/clear-immediate.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/clear-immediate.js new file mode 100644 index 0000000..8fbfd12 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/clear-immediate.js @@ -0,0 +1,4 @@ +require('../modules/web.immediate'); +var path = require('../internals/path'); + +module.exports = path.clearImmediate; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/data-view/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/data-view/index.js new file mode 100644 index 0000000..0387295 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/data-view/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/data-view'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/for-each.js new file mode 100644 index 0000000..3414fd7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/for-each.js @@ -0,0 +1,5 @@ +require('../../modules/web.dom-collections.for-each'); + +var parent = require('../../internals/array-for-each'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/index.js new file mode 100644 index 0000000..7d262cb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/index.js @@ -0,0 +1,12 @@ +require('../../modules/web.dom-collections.for-each'); +require('../../modules/web.dom-collections.iterator'); +var ArrayIterators = require('../../modules/es.array.iterator'); +var forEach = require('../../internals/array-for-each'); + +module.exports = { + keys: ArrayIterators.keys, + values: ArrayIterators.values, + entries: ArrayIterators.entries, + iterator: ArrayIterators.values, + forEach: forEach +}; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/iterator.js new file mode 100644 index 0000000..3bc1e90 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/dom-collections/iterator.js @@ -0,0 +1,4 @@ +require('../../modules/web.dom-collections.iterator'); +var entryUnbind = require('../../internals/entry-unbind'); + +module.exports = entryUnbind('Array', 'values'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/function/bind.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/bind.js new file mode 100644 index 0000000..b916d67 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/bind.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function/bind'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/function/has-instance.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/has-instance.js new file mode 100644 index 0000000..9538a80 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/has-instance.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function/has-instance'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/function/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/index.js new file mode 100644 index 0000000..f906e2e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/function/name.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/name.js new file mode 100644 index 0000000..a7729f5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/name.js @@ -0,0 +1,3 @@ +var parent = require('../../es/function/name'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/bind.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/bind.js new file mode 100644 index 0000000..e7b9a3b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/bind.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/function/virtual/bind'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/index.js new file mode 100644 index 0000000..2282ff4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/function/virtual/index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/function/virtual'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/index.js new file mode 100644 index 0000000..f0dc470 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/index.js @@ -0,0 +1,5 @@ +require('../es'); +require('../web'); +var path = require('../internals/path'); + +module.exports = path; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/json/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/json/index.js new file mode 100644 index 0000000..c53da9f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/json/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/json'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/json/stringify.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/json/stringify.js new file mode 100644 index 0000000..d6d8c52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/json/stringify.js @@ -0,0 +1,3 @@ +var parent = require('../../es/json/stringify'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/json/to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/json/to-string-tag.js new file mode 100644 index 0000000..5355956 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/json/to-string-tag.js @@ -0,0 +1,3 @@ +var parent = require('../../es/json/to-string-tag'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/map/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/map/index.js new file mode 100644 index 0000000..6ec56e8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/map/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/constructor.js new file mode 100644 index 0000000..6b5836e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/constructor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/constructor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/epsilon.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/epsilon.js new file mode 100644 index 0000000..fe2ccd7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/epsilon.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/epsilon'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/index.js new file mode 100644 index 0000000..81181a1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-finite.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-finite.js new file mode 100644 index 0000000..24b9773 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-finite.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-finite'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-integer.js new file mode 100644 index 0000000..b1592d0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-nan.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-nan.js new file mode 100644 index 0000000..fcbec50 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-nan.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-nan'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-safe-integer.js new file mode 100644 index 0000000..b25eb1c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/is-safe-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/is-safe-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/max-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/max-safe-integer.js new file mode 100644 index 0000000..e6689b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/max-safe-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/max-safe-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/min-safe-integer.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/min-safe-integer.js new file mode 100644 index 0000000..1159a47 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/min-safe-integer.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/min-safe-integer'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-float.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-float.js new file mode 100644 index 0000000..3b49c6a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-float.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/parse-float'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-int.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-int.js new file mode 100644 index 0000000..9e44651 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/parse-int.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/parse-int'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-fixed.js new file mode 100644 index 0000000..b103de9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-fixed.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/to-fixed'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-precision.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-precision.js new file mode 100644 index 0000000..5183347 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/to-precision.js @@ -0,0 +1,3 @@ +var parent = require('../../es/number/to-precision'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/index.js new file mode 100644 index 0000000..88eef4b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/index.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/number/virtual'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-fixed.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-fixed.js new file mode 100644 index 0000000..a9f83cc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-fixed.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/number/virtual/to-fixed'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-precision.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-precision.js new file mode 100644 index 0000000..adffb86 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/number/virtual/to-precision.js @@ -0,0 +1,3 @@ +var parent = require('../../../es/number/virtual/to-precision'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/parse-float.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/parse-float.js new file mode 100644 index 0000000..1bc853c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/parse-float.js @@ -0,0 +1,3 @@ +var parent = require('../es/parse-float'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/queue-microtask.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/queue-microtask.js new file mode 100644 index 0000000..8afd9c7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/queue-microtask.js @@ -0,0 +1,3 @@ +var parent = require('../web/queue-microtask'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/constructor.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/constructor.js new file mode 100644 index 0000000..2cd0149 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/constructor.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/constructor'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/flags.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/flags.js new file mode 100644 index 0000000..bdf1c8a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/flags.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/flags'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/index.js new file mode 100644 index 0000000..df41f17 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/match.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/match.js new file mode 100644 index 0000000..c995bbb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/match.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/match'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/replace.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/replace.js new file mode 100644 index 0000000..b1a9e65 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/replace.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/replace'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/search.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/search.js new file mode 100644 index 0000000..af17062 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/search.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/search'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/split.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/split.js new file mode 100644 index 0000000..fb0471a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/split.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/split'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/sticky.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/sticky.js new file mode 100644 index 0000000..c1307ad --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/sticky.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/sticky'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/test.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/test.js new file mode 100644 index 0000000..53f9166 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/test.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/test'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/to-string.js new file mode 100644 index 0000000..e2a4442 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/regexp/to-string.js @@ -0,0 +1,3 @@ +var parent = require('../../es/regexp/to-string'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/set-interval.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/set-interval.js new file mode 100644 index 0000000..cd6eddb --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/set-interval.js @@ -0,0 +1,4 @@ +require('../modules/web.timers'); +var path = require('../internals/path'); + +module.exports = path.setInterval; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/async-iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/async-iterator.js new file mode 100644 index 0000000..a624329 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/async-iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/async-iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/description.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/description.js new file mode 100644 index 0000000..7bb4b2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/description.js @@ -0,0 +1 @@ +require('../../modules/es.symbol.description'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/for.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/for.js new file mode 100644 index 0000000..28b29ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/for.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/for'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/has-instance.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/has-instance.js new file mode 100644 index 0000000..0334558 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/has-instance.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/has-instance'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/index.js new file mode 100644 index 0000000..2fb7ba5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/is-concat-spreadable.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/is-concat-spreadable.js new file mode 100644 index 0000000..7dc1d26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/is-concat-spreadable.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/is-concat-spreadable'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/iterator.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/iterator.js new file mode 100644 index 0000000..78f0139 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/iterator.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/iterator'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/key-for.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/key-for.js new file mode 100644 index 0000000..4f76f82 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/key-for.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/key-for'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match-all.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match-all.js new file mode 100644 index 0000000..6be4444 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match-all.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/match-all'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match.js new file mode 100644 index 0000000..2a502e4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/match.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/match'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/replace.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/replace.js new file mode 100644 index 0000000..225f7fe --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/replace.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/replace'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/search.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/search.js new file mode 100644 index 0000000..dd25b55 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/search.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/search'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/species.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/species.js new file mode 100644 index 0000000..6d3c418 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/species.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/species'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/split.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/split.js new file mode 100644 index 0000000..209b212 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/split.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/split'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-primitive.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-primitive.js new file mode 100644 index 0000000..cd15ff5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-primitive.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/to-primitive'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-string-tag.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-string-tag.js new file mode 100644 index 0000000..6948350 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/to-string-tag.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/to-string-tag'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/unscopables.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/unscopables.js new file mode 100644 index 0000000..a9d7820 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/symbol/unscopables.js @@ -0,0 +1,3 @@ +var parent = require('../../es/symbol/unscopables'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/entries.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/entries.js new file mode 100644 index 0000000..66cc6dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/entries.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/every.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/every.js new file mode 100644 index 0000000..681164b --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/every.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.every'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/fill.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/fill.js new file mode 100644 index 0000000..4d92ac6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/fill.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.fill'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/filter.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/filter.js new file mode 100644 index 0000000..7d0a630 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/filter.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.filter'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find-index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find-index.js new file mode 100644 index 0000000..039cd5e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find-index.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find-index'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find.js new file mode 100644 index 0000000..b3251b9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/find.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.find'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/float64-array.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/float64-array.js new file mode 100644 index 0000000..445dc3d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/float64-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/float64-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/for-each.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/for-each.js new file mode 100644 index 0000000..defe03a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/for-each.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.for-each'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/from.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/from.js new file mode 100644 index 0000000..e0f3444 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/from.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.from'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/includes.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/includes.js new file mode 100644 index 0000000..5ff65f9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/includes.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.includes'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index-of.js new file mode 100644 index 0000000..87081c0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.index-of'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index.js new file mode 100644 index 0000000..20a271d --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int16-array.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int16-array.js new file mode 100644 index 0000000..7ffdbae --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int16-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/int16-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int32-array.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int32-array.js new file mode 100644 index 0000000..bd2e75a --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/int32-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/int32-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/join.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/join.js new file mode 100644 index 0000000..431129c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/join.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.join'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/last-index-of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/last-index-of.js new file mode 100644 index 0000000..5682bf4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/last-index-of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.last-index-of'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/map.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/map.js new file mode 100644 index 0000000..db08fed --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/map.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.map'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/of.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/of.js new file mode 100644 index 0000000..121bf5e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/of.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.of'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce-right.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce-right.js new file mode 100644 index 0000000..cbd321f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce-right.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce-right'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce.js new file mode 100644 index 0000000..e2a6f28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reduce.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reduce'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reverse.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reverse.js new file mode 100644 index 0000000..14995f4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/reverse.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.reverse'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/set.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/set.js new file mode 100644 index 0000000..5330e22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/set.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.set'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/some.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/some.js new file mode 100644 index 0000000..495c322 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/some.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.some'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/sort.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/sort.js new file mode 100644 index 0000000..d6c7e30 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/sort.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.sort'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-locale-string.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-locale-string.js new file mode 100644 index 0000000..12c809e --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-locale-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-locale-string'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-string.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-string.js new file mode 100644 index 0000000..bf94160 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/to-string.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.to-string'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint16-array.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint16-array.js new file mode 100644 index 0000000..f35dc05 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint16-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/uint16-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-array.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-array.js new file mode 100644 index 0000000..7d853e4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/uint8-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-clamped-array.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-clamped-array.js new file mode 100644 index 0000000..a1e131c --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/uint8-clamped-array.js @@ -0,0 +1,3 @@ +var parent = require('../../es/typed-array/uint8-clamped-array'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/values.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/values.js new file mode 100644 index 0000000..66cc6dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/typed-array/values.js @@ -0,0 +1 @@ +require('../../modules/es.typed-array.iterator'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/url/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/url/index.js new file mode 100644 index 0000000..750f27f --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/url/index.js @@ -0,0 +1,3 @@ +var parent = require('../../web/url'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/url/to-json.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/url/to-json.js new file mode 100644 index 0000000..0d841b6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/url/to-json.js @@ -0,0 +1 @@ +require('../../modules/web.url.to-json'); diff --git a/tic-tac-toe-app/node_modules/core-js-pure/stable/weak-map/index.js b/tic-tac-toe-app/node_modules/core-js-pure/stable/weak-map/index.js new file mode 100644 index 0000000..0722356 --- /dev/null +++ b/tic-tac-toe-app/node_modules/core-js-pure/stable/weak-map/index.js @@ -0,0 +1,3 @@ +var parent = require('../../es/weak-map'); + +module.exports = parent; diff --git a/tic-tac-toe-app/node_modules/damerau-levenshtein/CHANGELOG.md b/tic-tac-toe-app/node_modules/damerau-levenshtein/CHANGELOG.md new file mode 100644 index 0000000..eb6af35 --- /dev/null +++ b/tic-tac-toe-app/node_modules/damerau-levenshtein/CHANGELOG.md @@ -0,0 +1,67 @@ +# Change Log + +All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/). This project adheres to [Semantic Versioning](http://semver.org/). + +## [Unreleased] + + +## [1.0.6] - 2020-01-27 + +Changed: +- Upgrade lodash to version 4.17.15 #16 + +## [1.0.5] - 2019-05-09 + +Changed: +- Upgrade Mocha to version 6.1.4 #12 by @whyboris +- Example use in README.md by @whyboris + +## [1.0.4] - 2017-03-24 + +Fixed: +- Fails in strict mode #7 by @gilly3 + +## [1.0.3] - 2016-09-26 + +Fixed: +- A title of this document :P + +Added: +- List of contributors +- Bugs URL +- Git repository URL + +## [1.0.2] - 2016-09-26 + +Fixed: +- Similarity 0 returned for equal strings #4 by @tad-lispy + +## [1.0.1] - 2016-09-12 + +Fixed: +- Wrong results for transposition #2 by @g-adolph + +Added: +- First unit test by @g-adolph +- A Change Log :) by @tad-lispy + +## [1.0.0] - 2016-02-23 + +Fixed: +- Update README to match the actual output by @gilly3 + +## [0.1.3] - 2013-09-02 + +Fixed: +- Clear matrix on each call @tad-lispy +- Always return an object @tad-lispy + +## [0.1.2] - 2013-08-29 + +Added: +- ReadMe + +## [0.1.1] - 2013-08-28 + +Added: +- Initial working release @tad-lispy diff --git a/tic-tac-toe-app/node_modules/damerau-levenshtein/LICENSE b/tic-tac-toe-app/node_modules/damerau-levenshtein/LICENSE new file mode 100644 index 0000000..3332001 --- /dev/null +++ b/tic-tac-toe-app/node_modules/damerau-levenshtein/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2018, Tadeusz Łazurski +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tic-tac-toe-app/node_modules/damerau-levenshtein/README.md b/tic-tac-toe-app/node_modules/damerau-levenshtein/README.md new file mode 100644 index 0000000..519436e --- /dev/null +++ b/tic-tac-toe-app/node_modules/damerau-levenshtein/README.md @@ -0,0 +1,47 @@ +[![NPM](https://nodei.co/npm/damerau-levenshtein.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/damerau-levenshtein/) + +It provides a function that takes two string arguments and returns a hash like this: + +``` javascript +{ + steps: 5, // Levenstein demerau distance + relative: 0.7, // steps / length of the longer string + similarity: 0.3 // 1 - relative +} +``` + +## Install + +```sh +npm install damerau-levenshtein +``` + +## Use with ES6 modules + +```js +import * as levenshtien from 'damerau-levenshtein'; + +const lev = levenshtien('hello world', 'Hello World!'); +// { steps: 4, relative: 0.3076923076923077, similarity: 0.6923076923076923 } +``` + +Please see [tests](./test/test.js) for more insights. + +## Use with TypeScript + +```ts +import * as levenshtien from 'damerau-levenshtein'; + +interface LevenshteinResponse { + steps: number; + relative: number; + similarity: number; +} + +const lev: LevenshteinResponse = levenshtien('hello world', 'Hello World!'); + +console.log(lev.steps); +// 2 +console.log(lev.foo); +// TypeScript Error: Property 'foo' does not exist on type 'LevenshteinResponse'. +``` diff --git a/tic-tac-toe-app/node_modules/damerau-levenshtein/index.js b/tic-tac-toe-app/node_modules/damerau-levenshtein/index.js new file mode 100644 index 0000000..17f3fcd --- /dev/null +++ b/tic-tac-toe-app/node_modules/damerau-levenshtein/index.js @@ -0,0 +1,72 @@ +// TheSpanishInquisition + +// Cache the matrix. Note that if you not pass a limit this implementation will use a dynamically calculate one. + +module.exports = function(__this, that, limit) { + + var thisLength = __this.length, + thatLength = that.length, + matrix = []; + + // If the limit is not defined it will be calculate from this and that args. + limit = (limit || ((thatLength > thisLength ? thatLength : thisLength)))+1; + + for (var i = 0; i < limit; i++) { + matrix[i] = [i]; + matrix[i].length = limit; + } + for (i = 0; i < limit; i++) { + matrix[0][i] = i; + } + + if (Math.abs(thisLength - thatLength) > (limit || 100)){ + return prepare (limit || 100); + } + if (thisLength === 0){ + return prepare (thatLength); + } + if (thatLength === 0){ + return prepare (thisLength); + } + + // Calculate matrix. + var j, this_i, that_j, cost, min, t; + for (i = 1; i <= thisLength; ++i) { + this_i = __this[i-1]; + + // Step 4 + for (j = 1; j <= thatLength; ++j) { + // Check the jagged ld total so far + if (i === j && matrix[i][j] > 4) return prepare (thisLength); + + that_j = that[j-1]; + cost = (this_i === that_j) ? 0 : 1; // Step 5 + // Calculate the minimum (much faster than Math.min(...)). + min = matrix[i - 1][j ] + 1; // Deletion. + if ((t = matrix[i ][j - 1] + 1 ) < min) min = t; // Insertion. + if ((t = matrix[i - 1][j - 1] + cost) < min) min = t; // Substitution. + + // Update matrix. + matrix[i][j] = (i > 1 && j > 1 && this_i === that[j-2] && __this[i-2] === that_j && (t = matrix[i-2][j-2]+cost) < min) ? t : min; // Transposition. + } + } + + return prepare (matrix[thisLength][thatLength]); + +/** + * + */ + function prepare(steps) { + var length = Math.max(thisLength, thatLength) + var relative = length === 0 + ? 0 + : (steps / length); + var similarity = 1 - relative + return { + steps: steps, + relative: relative, + similarity: similarity + }; + } + +}; diff --git a/tic-tac-toe-app/node_modules/damerau-levenshtein/package.json b/tic-tac-toe-app/node_modules/damerau-levenshtein/package.json new file mode 100644 index 0000000..65d8e36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/damerau-levenshtein/package.json @@ -0,0 +1,76 @@ +{ + "_from": "damerau-levenshtein@^1.0.4", + "_id": "damerau-levenshtein@1.0.6", + "_inBundle": false, + "_integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "_location": "/damerau-levenshtein", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "damerau-levenshtein@^1.0.4", + "name": "damerau-levenshtein", + "escapedName": "damerau-levenshtein", + "rawSpec": "^1.0.4", + "saveSpec": null, + "fetchSpec": "^1.0.4" + }, + "_requiredBy": [ + "/eslint-plugin-jsx-a11y" + ], + "_resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "_shasum": "143c1641cb3d85c60c32329e26899adea8701791", + "_spec": "damerau-levenshtein@^1.0.4", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y", + "author": { + "name": "The Spanish Inquisition" + }, + "bugs": { + "url": "https://github.com/tad-lispy/node-damerau-levenshtein/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Tadeusz Łazurski", + "url": "https://tad-lispy.com/" + }, + { + "name": "Gustavo Marques Adolph" + }, + { + "name": "Ivan Gilchrist", + "email": "github@jumpingfishes.com", + "url": "http://jumpingfishes.com" + }, + { + "name": "Boris Yakubchik", + "url": "http://dev.yboris.com/" + } + ], + "deprecated": false, + "description": "Damerau - Levenshtein distance by The Spanish Inquisition + relative distance", + "devDependencies": { + "mocha": "^6.1.4" + }, + "homepage": "https://github.com/tad-lispy/node-damerau-levenshtein#readme", + "keywords": [ + "Damerau-Levenshtein", + "Damerau", + "Levenshtein", + "distance", + "compare", + "relative" + ], + "license": "BSD-2-Clause", + "main": "index.js", + "name": "damerau-levenshtein", + "repository": { + "type": "git", + "url": "git+https://github.com/tad-lispy/node-damerau-levenshtein.git" + }, + "scripts": { + "test": "mocha --use_strict", + "version": "scripts/update-changelog.sh" + }, + "version": "1.0.6" +} diff --git a/tic-tac-toe-app/node_modules/damerau-levenshtein/scripts/update-changelog.sh b/tic-tac-toe-app/node_modules/damerau-levenshtein/scripts/update-changelog.sh new file mode 100755 index 0000000..fd5312b --- /dev/null +++ b/tic-tac-toe-app/node_modules/damerau-levenshtein/scripts/update-changelog.sh @@ -0,0 +1,21 @@ +#! /usr/bin/env bash + +set -euo pipefail + +# To make it work on OSX (provided gnu-sed in installed) +if type gsed +then + sed=gsed +fi + + +version=$(jq --raw-output ' .version ' "package.json") +date=$(date +%Y-%m-%d) + +$sed \ + --regexp-extended \ + --in-place="" \ + "s$^## \[Unreleased\]$\## [Unreleased\]\n\n\n## [${version}] - ${date}$" \ + CHANGELOG.md + +git add CHANGELOG.md diff --git a/tic-tac-toe-app/node_modules/damerau-levenshtein/test/test.js b/tic-tac-toe-app/node_modules/damerau-levenshtein/test/test.js new file mode 100644 index 0000000..0939f09 --- /dev/null +++ b/tic-tac-toe-app/node_modules/damerau-levenshtein/test/test.js @@ -0,0 +1,168 @@ +var levenshtien = require("./../index"); + +var assert = require("assert"); + +describe("Damerau - Levenshtein", function() { + describe("Equality", function() { + it("returns 0 steps for equal strings", function() { + assert.deepEqual(levenshtien("test", "test"), { + steps: 0, + relative: 0, + similarity: 1 + }); + }); + }); + + describe("Additions", function() { + it("returns 1 step when appending one char", function() { + assert.deepEqual(levenshtien("test", "tests"), { + steps: 1, + relative: 1 / 5, + similarity: 1 - 1 / 5 + }); + }); + + it("returns 1 step when prepending one char", function() { + assert.deepEqual(levenshtien("test", "stest"), { + steps: 1, + relative: 1 / 5, + similarity: 1 - 1 / 5 + }); + }); + + it("returns 2 steps when appending two char", function() { + assert.deepEqual(levenshtien("test", "mytest"), { + steps: 2, + relative: 2 / 6, + similarity: 1 - 2 / 6 + }); + }); + + it("returns 7 steps when appending seven char", function() { + assert.deepEqual(levenshtien("test", "mycrazytest"), { + steps: 7, + relative: 7 / 11, + similarity: 1 - 7 / 11 + }); + }); + + it("returns 9 steps when prepend two chars and append seven chars", function() { + assert.deepEqual(levenshtien("test", "mytestiscrazy"), { + steps: 9, + relative: 9 / 13, + similarity: 1 - 9 / 13 + }); + }); + }); + + + describe("Addition of repeated chars", function() { + it("returns 1 step when repeating a character", function() { + assert.deepEqual(levenshtien("test", "teest"), { + steps: 1, + relative: 1 / 5, + similarity: 1 - 1 / 5 + }); + }); + + it("returns 2 step when repeating a character twice", function() { + assert.deepEqual(levenshtien("test", "teeest"), { + steps: 2, + relative: 2 / 6, + similarity: 1 - 2 / 6 + }); + }); + }); + + + describe("#Deletion", function() { + it("returns 1 step when removing one char", function() { + assert.deepEqual(levenshtien("test", "tst"), { + steps: 1, + relative: 1 / 4, + similarity: 1 - 1 / 4 + }); + }); + }); + + + describe("Transposition", function() { + it("returns 1 step when transposing one char", function() { + assert.deepEqual(levenshtien("test", "tset"), { + steps: 1, + relative: 1 / 4, + similarity: 1 - 1 / 4 + }); + }); + }); + + + describe("Addition with transposition", function() { + it("returns 2 step when transposing one char and append another", function() { + assert.deepEqual(levenshtien("test", "tsets"), { + steps: 2, + relative: 2 / 5, + similarity: 1 - 2 / 5 + }); + }); + it("returns 2 step when transposing a char and repeating it", function() { + assert.deepEqual(levenshtien("test", "tsset"), { + steps: 2, + relative: 2 / 5, + similarity: 1 - 2 / 5 + }); + }); + }); + + describe("Transposition of multiple chars", function() { + it("returns 1 step when transposing two neighbouring characters", function() { + assert.deepEqual(levenshtien("banana", "banaan"), { + steps: 1, + relative: 1 / 6, + similarity: 1 - 1 / 6 + }); + }); + + it("returns 2 step when transposing two neighbouring characters by two places", function() { + assert.deepEqual(levenshtien("banana", "nabana"), { + steps: 2, + relative: 2 / 6, + similarity: 1 - 2 / 6 + }); + }); + + it("returns 2 step when transposing two pairs of characters", function() { + assert.deepEqual(levenshtien("banana", "abnaan"), { + steps: 2, + relative: 2 / 6, + similarity: 1 - 2 / 6 + }); + }); + }); + + describe("Empty strings", function() { + it("returns 0 step and 0 relative when both are empty", function() { + assert.deepEqual(levenshtien("", ""), { + steps: 0, + relative: 0, + similarity: 1 + }); + }); + + it("returns steps equal to first string lenght when second string is empty", function() { + assert.deepEqual(levenshtien("test", ""), { + steps: 4, + relative: 4 / 4, + similarity: 0 + }); + }); + + it("returns steps equal to second string lenght when first string is empty", function() { + assert.deepEqual(levenshtien("", "test"), { + steps: 4, + relative: 1, + similarity: 0 + }); + }); + }); +}); diff --git a/tic-tac-toe-app/node_modules/debug/.coveralls.yml b/tic-tac-toe-app/node_modules/debug/.coveralls.yml new file mode 100644 index 0000000..20a7068 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/.coveralls.yml @@ -0,0 +1 @@ +repo_token: SIAeZjKYlHK74rbcFvNHMUzjRiMpflxve diff --git a/tic-tac-toe-app/node_modules/debug/.eslintrc b/tic-tac-toe-app/node_modules/debug/.eslintrc new file mode 100644 index 0000000..8a37ae2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/.eslintrc @@ -0,0 +1,11 @@ +{ + "env": { + "browser": true, + "node": true + }, + "rules": { + "no-console": 0, + "no-empty": [1, { "allowEmptyCatch": true }] + }, + "extends": "eslint:recommended" +} diff --git a/tic-tac-toe-app/node_modules/debug/.npmignore b/tic-tac-toe-app/node_modules/debug/.npmignore new file mode 100644 index 0000000..5f60eec --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/.npmignore @@ -0,0 +1,9 @@ +support +test +examples +example +*.sock +dist +yarn.lock +coverage +bower.json diff --git a/tic-tac-toe-app/node_modules/debug/.travis.yml b/tic-tac-toe-app/node_modules/debug/.travis.yml new file mode 100644 index 0000000..6c6090c --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/.travis.yml @@ -0,0 +1,14 @@ + +language: node_js +node_js: + - "6" + - "5" + - "4" + +install: + - make node_modules + +script: + - make lint + - make test + - make coveralls diff --git a/tic-tac-toe-app/node_modules/debug/CHANGELOG.md b/tic-tac-toe-app/node_modules/debug/CHANGELOG.md new file mode 100644 index 0000000..eadaa18 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/CHANGELOG.md @@ -0,0 +1,362 @@ + +2.6.9 / 2017-09-22 +================== + + * remove ReDoS regexp in %o formatter (#504) + +2.6.8 / 2017-05-18 +================== + + * Fix: Check for undefined on browser globals (#462, @marbemac) + +2.6.7 / 2017-05-16 +================== + + * Fix: Update ms to 2.0.0 to fix regular expression denial of service vulnerability (#458, @hubdotcom) + * Fix: Inline extend function in node implementation (#452, @dougwilson) + * Docs: Fix typo (#455, @msasad) + +2.6.5 / 2017-04-27 +================== + + * Fix: null reference check on window.documentElement.style.WebkitAppearance (#447, @thebigredgeek) + * Misc: clean up browser reference checks (#447, @thebigredgeek) + * Misc: add npm-debug.log to .gitignore (@thebigredgeek) + + +2.6.4 / 2017-04-20 +================== + + * Fix: bug that would occure if process.env.DEBUG is a non-string value. (#444, @LucianBuzzo) + * Chore: ignore bower.json in npm installations. (#437, @joaovieira) + * Misc: update "ms" to v0.7.3 (@tootallnate) + +2.6.3 / 2017-03-13 +================== + + * Fix: Electron reference to `process.env.DEBUG` (#431, @paulcbetts) + * Docs: Changelog fix (@thebigredgeek) + +2.6.2 / 2017-03-10 +================== + + * Fix: DEBUG_MAX_ARRAY_LENGTH (#420, @slavaGanzin) + * Docs: Add backers and sponsors from Open Collective (#422, @piamancini) + * Docs: Add Slackin invite badge (@tootallnate) + +2.6.1 / 2017-02-10 +================== + + * Fix: Module's `export default` syntax fix for IE8 `Expected identifier` error + * Fix: Whitelist DEBUG_FD for values 1 and 2 only (#415, @pi0) + * Fix: IE8 "Expected identifier" error (#414, @vgoma) + * Fix: Namespaces would not disable once enabled (#409, @musikov) + +2.6.0 / 2016-12-28 +================== + + * Fix: added better null pointer checks for browser useColors (@thebigredgeek) + * Improvement: removed explicit `window.debug` export (#404, @tootallnate) + * Improvement: deprecated `DEBUG_FD` environment variable (#405, @tootallnate) + +2.5.2 / 2016-12-25 +================== + + * Fix: reference error on window within webworkers (#393, @KlausTrainer) + * Docs: fixed README typo (#391, @lurch) + * Docs: added notice about v3 api discussion (@thebigredgeek) + +2.5.1 / 2016-12-20 +================== + + * Fix: babel-core compatibility + +2.5.0 / 2016-12-20 +================== + + * Fix: wrong reference in bower file (@thebigredgeek) + * Fix: webworker compatibility (@thebigredgeek) + * Fix: output formatting issue (#388, @kribblo) + * Fix: babel-loader compatibility (#383, @escwald) + * Misc: removed built asset from repo and publications (@thebigredgeek) + * Misc: moved source files to /src (#378, @yamikuronue) + * Test: added karma integration and replaced babel with browserify for browser tests (#378, @yamikuronue) + * Test: coveralls integration (#378, @yamikuronue) + * Docs: simplified language in the opening paragraph (#373, @yamikuronue) + +2.4.5 / 2016-12-17 +================== + + * Fix: `navigator` undefined in Rhino (#376, @jochenberger) + * Fix: custom log function (#379, @hsiliev) + * Improvement: bit of cleanup + linting fixes (@thebigredgeek) + * Improvement: rm non-maintainted `dist/` dir (#375, @freewil) + * Docs: simplified language in the opening paragraph. (#373, @yamikuronue) + +2.4.4 / 2016-12-14 +================== + + * Fix: work around debug being loaded in preload scripts for electron (#368, @paulcbetts) + +2.4.3 / 2016-12-14 +================== + + * Fix: navigation.userAgent error for react native (#364, @escwald) + +2.4.2 / 2016-12-14 +================== + + * Fix: browser colors (#367, @tootallnate) + * Misc: travis ci integration (@thebigredgeek) + * Misc: added linting and testing boilerplate with sanity check (@thebigredgeek) + +2.4.1 / 2016-12-13 +================== + + * Fix: typo that broke the package (#356) + +2.4.0 / 2016-12-13 +================== + + * Fix: bower.json references unbuilt src entry point (#342, @justmatt) + * Fix: revert "handle regex special characters" (@tootallnate) + * Feature: configurable util.inspect()`options for NodeJS (#327, @tootallnate) + * Feature: %O`(big O) pretty-prints objects (#322, @tootallnate) + * Improvement: allow colors in workers (#335, @botverse) + * Improvement: use same color for same namespace. (#338, @lchenay) + +2.3.3 / 2016-11-09 +================== + + * Fix: Catch `JSON.stringify()` errors (#195, Jovan Alleyne) + * Fix: Returning `localStorage` saved values (#331, Levi Thomason) + * Improvement: Don't create an empty object when no `process` (Nathan Rajlich) + +2.3.2 / 2016-11-09 +================== + + * Fix: be super-safe in index.js as well (@TooTallNate) + * Fix: should check whether process exists (Tom Newby) + +2.3.1 / 2016-11-09 +================== + + * Fix: Added electron compatibility (#324, @paulcbetts) + * Improvement: Added performance optimizations (@tootallnate) + * Readme: Corrected PowerShell environment variable example (#252, @gimre) + * Misc: Removed yarn lock file from source control (#321, @fengmk2) + +2.3.0 / 2016-11-07 +================== + + * Fix: Consistent placement of ms diff at end of output (#215, @gorangajic) + * Fix: Escaping of regex special characters in namespace strings (#250, @zacronos) + * Fix: Fixed bug causing crash on react-native (#282, @vkarpov15) + * Feature: Enabled ES6+ compatible import via default export (#212 @bucaran) + * Feature: Added %O formatter to reflect Chrome's console.log capability (#279, @oncletom) + * Package: Update "ms" to 0.7.2 (#315, @DevSide) + * Package: removed superfluous version property from bower.json (#207 @kkirsche) + * Readme: fix USE_COLORS to DEBUG_COLORS + * Readme: Doc fixes for format string sugar (#269, @mlucool) + * Readme: Updated docs for DEBUG_FD and DEBUG_COLORS environment variables (#232, @mattlyons0) + * Readme: doc fixes for PowerShell (#271 #243, @exoticknight @unreadable) + * Readme: better docs for browser support (#224, @matthewmueller) + * Tooling: Added yarn integration for development (#317, @thebigredgeek) + * Misc: Renamed History.md to CHANGELOG.md (@thebigredgeek) + * Misc: Added license file (#226 #274, @CantemoInternal @sdaitzman) + * Misc: Updated contributors (@thebigredgeek) + +2.2.0 / 2015-05-09 +================== + + * package: update "ms" to v0.7.1 (#202, @dougwilson) + * README: add logging to file example (#193, @DanielOchoa) + * README: fixed a typo (#191, @amir-s) + * browser: expose `storage` (#190, @stephenmathieson) + * Makefile: add a `distclean` target (#189, @stephenmathieson) + +2.1.3 / 2015-03-13 +================== + + * Updated stdout/stderr example (#186) + * Updated example/stdout.js to match debug current behaviour + * Renamed example/stderr.js to stdout.js + * Update Readme.md (#184) + * replace high intensity foreground color for bold (#182, #183) + +2.1.2 / 2015-03-01 +================== + + * dist: recompile + * update "ms" to v0.7.0 + * package: update "browserify" to v9.0.3 + * component: fix "ms.js" repo location + * changed bower package name + * updated documentation about using debug in a browser + * fix: security error on safari (#167, #168, @yields) + +2.1.1 / 2014-12-29 +================== + + * browser: use `typeof` to check for `console` existence + * browser: check for `console.log` truthiness (fix IE 8/9) + * browser: add support for Chrome apps + * Readme: added Windows usage remarks + * Add `bower.json` to properly support bower install + +2.1.0 / 2014-10-15 +================== + + * node: implement `DEBUG_FD` env variable support + * package: update "browserify" to v6.1.0 + * package: add "license" field to package.json (#135, @panuhorsmalahti) + +2.0.0 / 2014-09-01 +================== + + * package: update "browserify" to v5.11.0 + * node: use stderr rather than stdout for logging (#29, @stephenmathieson) + +1.0.4 / 2014-07-15 +================== + + * dist: recompile + * example: remove `console.info()` log usage + * example: add "Content-Type" UTF-8 header to browser example + * browser: place %c marker after the space character + * browser: reset the "content" color via `color: inherit` + * browser: add colors support for Firefox >= v31 + * debug: prefer an instance `log()` function over the global one (#119) + * Readme: update documentation about styled console logs for FF v31 (#116, @wryk) + +1.0.3 / 2014-07-09 +================== + + * Add support for multiple wildcards in namespaces (#122, @seegno) + * browser: fix lint + +1.0.2 / 2014-06-10 +================== + + * browser: update color palette (#113, @gscottolson) + * common: make console logging function configurable (#108, @timoxley) + * node: fix %o colors on old node <= 0.8.x + * Makefile: find node path using shell/which (#109, @timoxley) + +1.0.1 / 2014-06-06 +================== + + * browser: use `removeItem()` to clear localStorage + * browser, node: don't set DEBUG if namespaces is undefined (#107, @leedm777) + * package: add "contributors" section + * node: fix comment typo + * README: list authors + +1.0.0 / 2014-06-04 +================== + + * make ms diff be global, not be scope + * debug: ignore empty strings in enable() + * node: make DEBUG_COLORS able to disable coloring + * *: export the `colors` array + * npmignore: don't publish the `dist` dir + * Makefile: refactor to use browserify + * package: add "browserify" as a dev dependency + * Readme: add Web Inspector Colors section + * node: reset terminal color for the debug content + * node: map "%o" to `util.inspect()` + * browser: map "%j" to `JSON.stringify()` + * debug: add custom "formatters" + * debug: use "ms" module for humanizing the diff + * Readme: add "bash" syntax highlighting + * browser: add Firebug color support + * browser: add colors for WebKit browsers + * node: apply log to `console` + * rewrite: abstract common logic for Node & browsers + * add .jshintrc file + +0.8.1 / 2014-04-14 +================== + + * package: re-add the "component" section + +0.8.0 / 2014-03-30 +================== + + * add `enable()` method for nodejs. Closes #27 + * change from stderr to stdout + * remove unnecessary index.js file + +0.7.4 / 2013-11-13 +================== + + * remove "browserify" key from package.json (fixes something in browserify) + +0.7.3 / 2013-10-30 +================== + + * fix: catch localStorage security error when cookies are blocked (Chrome) + * add debug(err) support. Closes #46 + * add .browser prop to package.json. Closes #42 + +0.7.2 / 2013-02-06 +================== + + * fix package.json + * fix: Mobile Safari (private mode) is broken with debug + * fix: Use unicode to send escape character to shell instead of octal to work with strict mode javascript + +0.7.1 / 2013-02-05 +================== + + * add repository URL to package.json + * add DEBUG_COLORED to force colored output + * add browserify support + * fix component. Closes #24 + +0.7.0 / 2012-05-04 +================== + + * Added .component to package.json + * Added debug.component.js build + +0.6.0 / 2012-03-16 +================== + + * Added support for "-" prefix in DEBUG [Vinay Pulim] + * Added `.enabled` flag to the node version [TooTallNate] + +0.5.0 / 2012-02-02 +================== + + * Added: humanize diffs. Closes #8 + * Added `debug.disable()` to the CS variant + * Removed padding. Closes #10 + * Fixed: persist client-side variant again. Closes #9 + +0.4.0 / 2012-02-01 +================== + + * Added browser variant support for older browsers [TooTallNate] + * Added `debug.enable('project:*')` to browser variant [TooTallNate] + * Added padding to diff (moved it to the right) + +0.3.0 / 2012-01-26 +================== + + * Added millisecond diff when isatty, otherwise UTC string + +0.2.0 / 2012-01-22 +================== + + * Added wildcard support + +0.1.0 / 2011-12-02 +================== + + * Added: remove colors unless stderr isatty [TooTallNate] + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/tic-tac-toe-app/node_modules/debug/LICENSE b/tic-tac-toe-app/node_modules/debug/LICENSE new file mode 100644 index 0000000..658c933 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/LICENSE @@ -0,0 +1,19 @@ +(The MIT License) + +Copyright (c) 2014 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software +and associated documentation files (the 'Software'), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/tic-tac-toe-app/node_modules/debug/Makefile b/tic-tac-toe-app/node_modules/debug/Makefile new file mode 100644 index 0000000..584da8b --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/Makefile @@ -0,0 +1,50 @@ +# get Makefile directory name: http://stackoverflow.com/a/5982798/376773 +THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) +THIS_DIR:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd) + +# BIN directory +BIN := $(THIS_DIR)/node_modules/.bin + +# Path +PATH := node_modules/.bin:$(PATH) +SHELL := /bin/bash + +# applications +NODE ?= $(shell which node) +YARN ?= $(shell which yarn) +PKG ?= $(if $(YARN),$(YARN),$(NODE) $(shell which npm)) +BROWSERIFY ?= $(NODE) $(BIN)/browserify + +.FORCE: + +install: node_modules + +node_modules: package.json + @NODE_ENV= $(PKG) install + @touch node_modules + +lint: .FORCE + eslint browser.js debug.js index.js node.js + +test-node: .FORCE + istanbul cover node_modules/mocha/bin/_mocha -- test/**.js + +test-browser: .FORCE + mkdir -p dist + + @$(BROWSERIFY) \ + --standalone debug \ + . > dist/debug.js + + karma start --single-run + rimraf dist + +test: .FORCE + concurrently \ + "make test-node" \ + "make test-browser" + +coveralls: + cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js + +.PHONY: all install clean distclean diff --git a/tic-tac-toe-app/node_modules/debug/README.md b/tic-tac-toe-app/node_modules/debug/README.md new file mode 100644 index 0000000..f67be6b --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/README.md @@ -0,0 +1,312 @@ +# debug +[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug) [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master) [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers) +[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors) + + + +A tiny node.js debugging utility modelled after node core's debugging technique. + +**Discussion around the V3 API is under way [here](https://github.com/visionmedia/debug/issues/370)** + +## Installation + +```bash +$ npm install debug +``` + +## Usage + +`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. + +Example _app.js_: + +```js +var debug = require('debug')('http') + , http = require('http') + , name = 'My App'; + +// fake app + +debug('booting %s', name); + +http.createServer(function(req, res){ + debug(req.method + ' ' + req.url); + res.end('hello\n'); +}).listen(3000, function(){ + debug('listening'); +}); + +// fake worker of some kind + +require('./worker'); +``` + +Example _worker.js_: + +```js +var debug = require('debug')('worker'); + +setInterval(function(){ + debug('doing some work'); +}, 1000); +``` + + The __DEBUG__ environment variable is then used to enable these based on space or comma-delimited names. Here are some examples: + + ![debug http and worker](http://f.cl.ly/items/18471z1H402O24072r1J/Screenshot.png) + + ![debug worker](http://f.cl.ly/items/1X413v1a3M0d3C2c1E0i/Screenshot.png) + +#### Windows note + + On Windows the environment variable is set using the `set` command. + + ```cmd + set DEBUG=*,-not_this + ``` + + Note that PowerShell uses different syntax to set environment variables. + + ```cmd + $env:DEBUG = "*,-not_this" + ``` + +Then, run the program to be debugged as usual. + +## Millisecond diff + + When actively developing an application it can be useful to see when the time spent between one `debug()` call and the next. Suppose for example you invoke `debug()` before requesting a resource, and after as well, the "+NNNms" will show you how much time was spent between calls. + + ![](http://f.cl.ly/items/2i3h1d3t121M2Z1A3Q0N/Screenshot.png) + + When stdout is not a TTY, `Date#toUTCString()` is used, making it more useful for logging the debug information as shown below: + + ![](http://f.cl.ly/items/112H3i0e0o0P0a2Q2r11/Screenshot.png) + +## Conventions + + If you're using this in one or more of your libraries, you _should_ use the name of your library so that developers may toggle debugging as desired without guessing names. If you have more than one debuggers you _should_ prefix them with your library name and use ":" to separate features. For example "bodyParser" from Connect would then be "connect:bodyParser". + +## Wildcards + + The `*` character may be used as a wildcard. Suppose for example your library has debuggers named "connect:bodyParser", "connect:compress", "connect:session", instead of listing all three with `DEBUG=connect:bodyParser,connect:compress,connect:session`, you may simply do `DEBUG=connect:*`, or to run everything using this module simply use `DEBUG=*`. + + You can also exclude specific debuggers by prefixing them with a "-" character. For example, `DEBUG=*,-connect:*` would include all debuggers except those starting with "connect:". + +## Environment Variables + + When running through Node.js, you can set a few environment variables that will + change the behavior of the debug logging: + +| Name | Purpose | +|-----------|-------------------------------------------------| +| `DEBUG` | Enables/disables specific debugging namespaces. | +| `DEBUG_COLORS`| Whether or not to use colors in the debug output. | +| `DEBUG_DEPTH` | Object inspection depth. | +| `DEBUG_SHOW_HIDDEN` | Shows hidden properties on inspected objects. | + + + __Note:__ The environment variables beginning with `DEBUG_` end up being + converted into an Options object that gets used with `%o`/`%O` formatters. + See the Node.js documentation for + [`util.inspect()`](https://nodejs.org/api/util.html#util_util_inspect_object_options) + for the complete list. + +## Formatters + + + Debug uses [printf-style](https://wikipedia.org/wiki/Printf_format_string) formatting. Below are the officially supported formatters: + +| Formatter | Representation | +|-----------|----------------| +| `%O` | Pretty-print an Object on multiple lines. | +| `%o` | Pretty-print an Object all on a single line. | +| `%s` | String. | +| `%d` | Number (both integer and float). | +| `%j` | JSON. Replaced with the string '[Circular]' if the argument contains circular references. | +| `%%` | Single percent sign ('%'). This does not consume an argument. | + +### Custom formatters + + You can add custom formatters by extending the `debug.formatters` object. For example, if you wanted to add support for rendering a Buffer as hex with `%h`, you could do something like: + +```js +const createDebug = require('debug') +createDebug.formatters.h = (v) => { + return v.toString('hex') +} + +// …elsewhere +const debug = createDebug('foo') +debug('this is hex: %h', new Buffer('hello world')) +// foo this is hex: 68656c6c6f20776f726c6421 +0ms +``` + +## Browser support + You can build a browser-ready script using [browserify](https://github.com/substack/node-browserify), + or just use the [browserify-as-a-service](https://wzrd.in/) [build](https://wzrd.in/standalone/debug@latest), + if you don't want to build it yourself. + + Debug's enable state is currently persisted by `localStorage`. + Consider the situation shown below where you have `worker:a` and `worker:b`, + and wish to debug both. You can enable this using `localStorage.debug`: + +```js +localStorage.debug = 'worker:*' +``` + +And then refresh the page. + +```js +a = debug('worker:a'); +b = debug('worker:b'); + +setInterval(function(){ + a('doing some work'); +}, 1000); + +setInterval(function(){ + b('doing some work'); +}, 1200); +``` + +#### Web Inspector Colors + + Colors are also enabled on "Web Inspectors" that understand the `%c` formatting + option. These are WebKit web inspectors, Firefox ([since version + 31](https://hacks.mozilla.org/2014/05/editable-box-model-multiple-selection-sublime-text-keys-much-more-firefox-developer-tools-episode-31/)) + and the Firebug plugin for Firefox (any version). + + Colored output looks something like: + + ![](https://cloud.githubusercontent.com/assets/71256/3139768/b98c5fd8-e8ef-11e3-862a-f7253b6f47c6.png) + + +## Output streams + + By default `debug` will log to stderr, however this can be configured per-namespace by overriding the `log` method: + +Example _stdout.js_: + +```js +var debug = require('debug'); +var error = debug('app:error'); + +// by default stderr is used +error('goes to stderr!'); + +var log = debug('app:log'); +// set this namespace to log via console.log +log.log = console.log.bind(console); // don't forget to bind to console! +log('goes to stdout'); +error('still goes to stderr!'); + +// set all output to go via console.info +// overrides all per-namespace log settings +debug.log = console.info.bind(console); +error('now goes to stdout via console.info'); +log('still goes to stdout, but via console.info now'); +``` + + +## Authors + + - TJ Holowaychuk + - Nathan Rajlich + - Andrew Rhyne + +## Backers + +Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Sponsors + +Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## License + +(The MIT License) + +Copyright (c) 2014-2016 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/debug/component.json b/tic-tac-toe-app/node_modules/debug/component.json new file mode 100644 index 0000000..9de2641 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/component.json @@ -0,0 +1,19 @@ +{ + "name": "debug", + "repo": "visionmedia/debug", + "description": "small debugging utility", + "version": "2.6.9", + "keywords": [ + "debug", + "log", + "debugger" + ], + "main": "src/browser.js", + "scripts": [ + "src/browser.js", + "src/debug.js" + ], + "dependencies": { + "rauchg/ms.js": "0.7.1" + } +} diff --git a/tic-tac-toe-app/node_modules/debug/karma.conf.js b/tic-tac-toe-app/node_modules/debug/karma.conf.js new file mode 100644 index 0000000..103a82d --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/karma.conf.js @@ -0,0 +1,70 @@ +// Karma configuration +// Generated on Fri Dec 16 2016 13:09:51 GMT+0000 (UTC) + +module.exports = function(config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['mocha', 'chai', 'sinon'], + + + // list of files / patterns to load in the browser + files: [ + 'dist/debug.js', + 'test/*spec.js' + ], + + + // list of files to exclude + exclude: [ + 'src/node.js' + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: { + }, + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress'], + + + // web server port + port: 9876, + + + // enable / disable colors in the output (reporters and logs) + colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ['PhantomJS'], + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +} diff --git a/tic-tac-toe-app/node_modules/debug/node.js b/tic-tac-toe-app/node_modules/debug/node.js new file mode 100644 index 0000000..7fc36fe --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/node.js @@ -0,0 +1 @@ +module.exports = require('./src/node'); diff --git a/tic-tac-toe-app/node_modules/debug/package.json b/tic-tac-toe-app/node_modules/debug/package.json new file mode 100644 index 0000000..2833bd0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/package.json @@ -0,0 +1,91 @@ +{ + "_from": "debug@2.6.9", + "_id": "debug@2.6.9", + "_inBundle": false, + "_integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "_location": "/debug", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "debug@2.6.9", + "name": "debug", + "escapedName": "debug", + "rawSpec": "2.6.9", + "saveSpec": null, + "fetchSpec": "2.6.9" + }, + "_requiredBy": [ + "/compression", + "/eslint-import-resolver-node", + "/eslint-module-utils", + "/eslint-plugin-import" + ], + "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "_shasum": "5d128515df134ff327e90a4c93f4e077a536341f", + "_spec": "debug@2.6.9", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/compression", + "author": { + "name": "TJ Holowaychuk", + "email": "tj@vision-media.ca" + }, + "browser": "./src/browser.js", + "bugs": { + "url": "https://github.com/visionmedia/debug/issues" + }, + "bundleDependencies": false, + "component": { + "scripts": { + "debug/index.js": "browser.js", + "debug/debug.js": "debug.js" + } + }, + "contributors": [ + { + "name": "Nathan Rajlich", + "email": "nathan@tootallnate.net", + "url": "http://n8.io" + }, + { + "name": "Andrew Rhyne", + "email": "rhyneandrew@gmail.com" + } + ], + "dependencies": { + "ms": "2.0.0" + }, + "deprecated": false, + "description": "small debugging utility", + "devDependencies": { + "browserify": "9.0.3", + "chai": "^3.5.0", + "concurrently": "^3.1.0", + "coveralls": "^2.11.15", + "eslint": "^3.12.1", + "istanbul": "^0.4.5", + "karma": "^1.3.0", + "karma-chai": "^0.1.0", + "karma-mocha": "^1.3.0", + "karma-phantomjs-launcher": "^1.0.2", + "karma-sinon": "^1.0.5", + "mocha": "^3.2.0", + "mocha-lcov-reporter": "^1.2.0", + "rimraf": "^2.5.4", + "sinon": "^1.17.6", + "sinon-chai": "^2.8.0" + }, + "homepage": "https://github.com/visionmedia/debug#readme", + "keywords": [ + "debug", + "log", + "debugger" + ], + "license": "MIT", + "main": "./src/index.js", + "name": "debug", + "repository": { + "type": "git", + "url": "git://github.com/visionmedia/debug.git" + }, + "version": "2.6.9" +} diff --git a/tic-tac-toe-app/node_modules/debug/src/browser.js b/tic-tac-toe-app/node_modules/debug/src/browser.js new file mode 100644 index 0000000..7106924 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/src/browser.js @@ -0,0 +1,185 @@ +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = require('./debug'); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') { + return true; + } + + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return; + + var c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit') + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + r = exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + return window.localStorage; + } catch (e) {} +} diff --git a/tic-tac-toe-app/node_modules/debug/src/debug.js b/tic-tac-toe-app/node_modules/debug/src/debug.js new file mode 100644 index 0000000..6a5e3fc --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/src/debug.js @@ -0,0 +1,202 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = createDebug.debug = createDebug['default'] = createDebug; +exports.coerce = coerce; +exports.disable = disable; +exports.enable = enable; +exports.enabled = enabled; +exports.humanize = require('ms'); + +/** + * The currently active debug mode names, and names to skip. + */ + +exports.names = []; +exports.skips = []; + +/** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + +exports.formatters = {}; + +/** + * Previous log timestamp. + */ + +var prevTime; + +/** + * Select a color. + * @param {String} namespace + * @return {Number} + * @api private + */ + +function selectColor(namespace) { + var hash = 0, i; + + for (i in namespace) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return exports.colors[Math.abs(hash) % exports.colors.length]; +} + +/** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + +function createDebug(namespace) { + + function debug() { + // disabled? + if (!debug.enabled) return; + + var self = debug; + + // set `diff` timestamp + var curr = +new Date(); + var ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + // turn the `arguments` into a proper Array + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + args[0] = exports.coerce(args[0]); + + if ('string' !== typeof args[0]) { + // anything else let's inspect with %O + args.unshift('%O'); + } + + // apply any `formatters` transformations + var index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { + // if we encounter an escaped % then don't increase the array index + if (match === '%%') return match; + index++; + var formatter = exports.formatters[format]; + if ('function' === typeof formatter) { + var val = args[index]; + match = formatter.call(self, val); + + // now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // apply env-specific formatting (colors, etc.) + exports.formatArgs.call(self, args); + + var logFn = debug.log || exports.log || console.log.bind(console); + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.enabled = exports.enabled(namespace); + debug.useColors = exports.useColors(); + debug.color = selectColor(namespace); + + // env-specific initialization logic for debug instances + if ('function' === typeof exports.init) { + exports.init(debug); + } + + return debug; +} + +/** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + +function enable(namespaces) { + exports.save(namespaces); + + exports.names = []; + exports.skips = []; + + var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + var len = split.length; + + for (var i = 0; i < len; i++) { + if (!split[i]) continue; // ignore empty strings + namespaces = split[i].replace(/\*/g, '.*?'); + if (namespaces[0] === '-') { + exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$')); + } else { + exports.names.push(new RegExp('^' + namespaces + '$')); + } + } +} + +/** + * Disable debug output. + * + * @api public + */ + +function disable() { + exports.enable(''); +} + +/** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + +function enabled(name) { + var i, len; + for (i = 0, len = exports.skips.length; i < len; i++) { + if (exports.skips[i].test(name)) { + return false; + } + } + for (i = 0, len = exports.names.length; i < len; i++) { + if (exports.names[i].test(name)) { + return true; + } + } + return false; +} + +/** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + +function coerce(val) { + if (val instanceof Error) return val.stack || val.message; + return val; +} diff --git a/tic-tac-toe-app/node_modules/debug/src/index.js b/tic-tac-toe-app/node_modules/debug/src/index.js new file mode 100644 index 0000000..e12cf4d --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/src/index.js @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer process, which is node, but we should + * treat as a browser. + */ + +if (typeof process !== 'undefined' && process.type === 'renderer') { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git a/tic-tac-toe-app/node_modules/debug/src/inspector-log.js b/tic-tac-toe-app/node_modules/debug/src/inspector-log.js new file mode 100644 index 0000000..60ea6c0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/src/inspector-log.js @@ -0,0 +1,15 @@ +module.exports = inspectorLog; + +// black hole +const nullStream = new (require('stream').Writable)(); +nullStream._write = () => {}; + +/** + * Outputs a `console.log()` to the Node.js Inspector console *only*. + */ +function inspectorLog() { + const stdout = console._stdout; + console._stdout = nullStream; + console.log.apply(console, arguments); + console._stdout = stdout; +} diff --git a/tic-tac-toe-app/node_modules/debug/src/node.js b/tic-tac-toe-app/node_modules/debug/src/node.js new file mode 100644 index 0000000..b15109c --- /dev/null +++ b/tic-tac-toe-app/node_modules/debug/src/node.js @@ -0,0 +1,248 @@ +/** + * Module dependencies. + */ + +var tty = require('tty'); +var util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = require('./debug'); +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(function (key) { + return /^debug_/i.test(key); +}).reduce(function (obj, key) { + // camel-case + var prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() }); + + // coerce string value into JS value + var val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) val = true; + else if (/^(no|off|false|disabled)$/i.test(val)) val = false; + else if (val === 'null') val = null; + else val = Number(val); + + obj[prop] = val; + return obj; +}, {}); + +/** + * The file descriptor to write the `debug()` calls to. + * Set the `DEBUG_FD` env variable to override with another value. i.e.: + * + * $ DEBUG_FD=3 node script.js 3>debug.log + */ + +var fd = parseInt(process.env.DEBUG_FD, 10) || 2; + +if (1 !== fd && 2 !== fd) { + util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')() +} + +var stream = 1 === fd ? process.stdout : + 2 === fd ? process.stderr : + createWritableStdioStream(fd); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts + ? Boolean(exports.inspectOpts.colors) + : tty.isatty(fd); +} + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +exports.formatters.o = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n').map(function(str) { + return str.trim() + }).join(' '); +}; + +/** + * Map %o to `util.inspect()`, allowing multiple lines if needed. + */ + +exports.formatters.O = function(v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + var name = this.namespace; + var useColors = this.useColors; + + if (useColors) { + var c = this.color; + var prefix = ' \u001b[3' + c + ';1m' + name + ' ' + '\u001b[0m'; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push('\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\u001b[0m'); + } else { + args[0] = new Date().toUTCString() + + ' ' + name + ' ' + args[0]; + } +} + +/** + * Invokes `util.format()` with the specified arguments and writes to `stream`. + */ + +function log() { + return stream.write(util.format.apply(util, arguments) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + if (null == namespaces) { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } else { + process.env.DEBUG = namespaces; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Copied from `node/src/node.js`. + * + * XXX: It's lame that node doesn't expose this API out-of-the-box. It also + * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame. + */ + +function createWritableStdioStream (fd) { + var stream; + var tty_wrap = process.binding('tty_wrap'); + + // Note stream._type is used for test-module-load-list.js + + switch (tty_wrap.guessHandleType(fd)) { + case 'TTY': + stream = new tty.WriteStream(fd); + stream._type = 'tty'; + + // Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; + + case 'FILE': + var fs = require('fs'); + stream = new fs.SyncWriteStream(fd, { autoClose: false }); + stream._type = 'fs'; + break; + + case 'PIPE': + case 'TCP': + var net = require('net'); + stream = new net.Socket({ + fd: fd, + readable: false, + writable: true + }); + + // FIXME Should probably have an option in net.Socket to create a + // stream from an existing fd which is writable only. But for now + // we'll just add this hack and set the `readable` member to false. + // Test: ./node test/fixtures/echo.js < /etc/passwd + stream.readable = false; + stream.read = null; + stream._type = 'pipe'; + + // FIXME Hack to have stream not keep the event loop alive. + // See https://github.com/joyent/node/issues/1726 + if (stream._handle && stream._handle.unref) { + stream._handle.unref(); + } + break; + + default: + // Probably an error on in uv_guess_handle() + throw new Error('Implement me. Unknown stream file type!'); + } + + // For supporting legacy API we put the FD here. + stream.fd = fd; + + stream._isStdio = true; + + return stream; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init (debug) { + debug.inspectOpts = {}; + + var keys = Object.keys(exports.inspectOpts); + for (var i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +/** + * Enable namespaces listed in `process.env.DEBUG` initially. + */ + +exports.enable(load()); diff --git a/tic-tac-toe-app/node_modules/deep-extend/CHANGELOG.md b/tic-tac-toe-app/node_modules/deep-extend/CHANGELOG.md new file mode 100644 index 0000000..dd13ec1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-extend/CHANGELOG.md @@ -0,0 +1,46 @@ +Changelog +========= + +v0.6.0 +------ + +- Updated "devDependencies" versions to fix vulnerability alerts +- Dropped support of io.js and node.js v0.12.x and lower since new versions of + "devDependencies" couldn't work with those old node.js versions + (minimal supported version of node.js now is v4.0.0) + +v0.5.1 +------ + +- Fix prototype pollution vulnerability (thanks to @mwakerman for the PR) +- Avoid using deprecated Buffer API (thanks to @ChALkeR for the PR) + +v0.5.0 +------ + +- Auto-testing provided by Travis CI; +- Support older Node.JS versions (`v0.11.x` and `v0.10.x`); +- Removed tests files from npm package. + +v0.4.2 +------ + +- Fix for `null` as an argument. + +v0.4.1 +------ + +- Removed test code from npm package + ([see pull request #21](https://github.com/unclechu/node-deep-extend/pull/21)); +- Increased minimal version of Node from `0.4.0` to `0.12.0` + (because can't run tests on lesser version anyway). + +v0.4.0 +------ + +- **WARNING!** Broken backward compatibility with `v0.3.x`; +- Fixed bug with extending arrays instead of cloning; +- Deep cloning for arrays; +- Check for own property; +- Fixed some documentation issues; +- Strict JS mode. diff --git a/tic-tac-toe-app/node_modules/deep-extend/LICENSE b/tic-tac-toe-app/node_modules/deep-extend/LICENSE new file mode 100644 index 0000000..5c58916 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-extend/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2013-2018, Viacheslav Lotsmanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/deep-extend/README.md b/tic-tac-toe-app/node_modules/deep-extend/README.md new file mode 100644 index 0000000..67c7fc0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-extend/README.md @@ -0,0 +1,91 @@ +Deep Extend +=========== + +Recursive object extending. + +[![Build Status](https://api.travis-ci.org/unclechu/node-deep-extend.svg?branch=master)](https://travis-ci.org/unclechu/node-deep-extend) + +[![NPM](https://nodei.co/npm/deep-extend.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/deep-extend/) + +Install +------- + +```bash +$ npm install deep-extend +``` + +Usage +----- + +```javascript +var deepExtend = require('deep-extend'); +var obj1 = { + a: 1, + b: 2, + d: { + a: 1, + b: [], + c: { test1: 123, test2: 321 } + }, + f: 5, + g: 123, + i: 321, + j: [1, 2] +}; +var obj2 = { + b: 3, + c: 5, + d: { + b: { first: 'one', second: 'two' }, + c: { test2: 222 } + }, + e: { one: 1, two: 2 }, + f: [], + g: (void 0), + h: /abc/g, + i: null, + j: [3, 4] +}; + +deepExtend(obj1, obj2); + +console.log(obj1); +/* +{ a: 1, + b: 3, + d: + { a: 1, + b: { first: 'one', second: 'two' }, + c: { test1: 123, test2: 222 } }, + f: [], + g: undefined, + c: 5, + e: { one: 1, two: 2 }, + h: /abc/g, + i: null, + j: [3, 4] } +*/ +``` + +Unit testing +------------ + +```bash +$ npm test +``` + +Changelog +--------- + +[CHANGELOG.md](./CHANGELOG.md) + +Any issues? +----------- + +Please, report about issues +[here](https://github.com/unclechu/node-deep-extend/issues). + +License +------- + +[MIT](./LICENSE) diff --git a/tic-tac-toe-app/node_modules/deep-extend/index.js b/tic-tac-toe-app/node_modules/deep-extend/index.js new file mode 100644 index 0000000..762d81e --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-extend/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/deep-extend'); diff --git a/tic-tac-toe-app/node_modules/deep-extend/lib/deep-extend.js b/tic-tac-toe-app/node_modules/deep-extend/lib/deep-extend.js new file mode 100644 index 0000000..651fd8d --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-extend/lib/deep-extend.js @@ -0,0 +1,150 @@ +/*! + * @description Recursive object extending + * @author Viacheslav Lotsmanov + * @license MIT + * + * The MIT License (MIT) + * + * Copyright (c) 2013-2018 Viacheslav Lotsmanov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +'use strict'; + +function isSpecificValue(val) { + return ( + val instanceof Buffer + || val instanceof Date + || val instanceof RegExp + ) ? true : false; +} + +function cloneSpecificValue(val) { + if (val instanceof Buffer) { + var x = Buffer.alloc + ? Buffer.alloc(val.length) + : new Buffer(val.length); + val.copy(x); + return x; + } else if (val instanceof Date) { + return new Date(val.getTime()); + } else if (val instanceof RegExp) { + return new RegExp(val); + } else { + throw new Error('Unexpected situation'); + } +} + +/** + * Recursive cloning array. + */ +function deepCloneArray(arr) { + var clone = []; + arr.forEach(function (item, index) { + if (typeof item === 'object' && item !== null) { + if (Array.isArray(item)) { + clone[index] = deepCloneArray(item); + } else if (isSpecificValue(item)) { + clone[index] = cloneSpecificValue(item); + } else { + clone[index] = deepExtend({}, item); + } + } else { + clone[index] = item; + } + }); + return clone; +} + +function safeGetProperty(object, property) { + return property === '__proto__' ? undefined : object[property]; +} + +/** + * Extening object that entered in first argument. + * + * Returns extended object or false if have no target object or incorrect type. + * + * If you wish to clone source object (without modify it), just use empty new + * object as first argument, like this: + * deepExtend({}, yourObj_1, [yourObj_N]); + */ +var deepExtend = module.exports = function (/*obj_1, [obj_2], [obj_N]*/) { + if (arguments.length < 1 || typeof arguments[0] !== 'object') { + return false; + } + + if (arguments.length < 2) { + return arguments[0]; + } + + var target = arguments[0]; + + // convert arguments to array and cut off target object + var args = Array.prototype.slice.call(arguments, 1); + + var val, src, clone; + + args.forEach(function (obj) { + // skip argument if isn't an object, is null, or is an array + if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) { + return; + } + + Object.keys(obj).forEach(function (key) { + src = safeGetProperty(target, key); // source value + val = safeGetProperty(obj, key); // new value + + // recursion prevention + if (val === target) { + return; + + /** + * if new value isn't object then just overwrite by new value + * instead of extending. + */ + } else if (typeof val !== 'object' || val === null) { + target[key] = val; + return; + + // just clone arrays (and recursive clone objects inside) + } else if (Array.isArray(val)) { + target[key] = deepCloneArray(val); + return; + + // custom cloning and overwrite for specific objects + } else if (isSpecificValue(val)) { + target[key] = cloneSpecificValue(val); + return; + + // overwrite by new value if source isn't object or array + } else if (typeof src !== 'object' || src === null || Array.isArray(src)) { + target[key] = deepExtend({}, val); + return; + + // source value and new value is objects both, extending... + } else { + target[key] = deepExtend(src, val); + return; + } + }); + }); + + return target; +}; diff --git a/tic-tac-toe-app/node_modules/deep-extend/package.json b/tic-tac-toe-app/node_modules/deep-extend/package.json new file mode 100644 index 0000000..da40e90 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-extend/package.json @@ -0,0 +1,92 @@ +{ + "_from": "deep-extend@^0.6.0", + "_id": "deep-extend@0.6.0", + "_inBundle": false, + "_integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "_location": "/deep-extend", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "deep-extend@^0.6.0", + "name": "deep-extend", + "escapedName": "deep-extend", + "rawSpec": "^0.6.0", + "saveSpec": null, + "fetchSpec": "^0.6.0" + }, + "_requiredBy": [ + "/rc" + ], + "_resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "_shasum": "c4fa7c95404a17a9c3e8ca7e1537312b736330ac", + "_spec": "deep-extend@^0.6.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/rc", + "author": { + "name": "Viacheslav Lotsmanov", + "email": "lotsmanov89@gmail.com" + }, + "bugs": { + "url": "https://github.com/unclechu/node-deep-extend/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Romain Prieto", + "url": "https://github.com/rprieto" + }, + { + "name": "Max Maximov", + "url": "https://github.com/maxmaximov" + }, + { + "name": "Marshall Bowers", + "url": "https://github.com/maxdeviant" + }, + { + "name": "Misha Wakerman", + "url": "https://github.com/mwakerman" + } + ], + "deprecated": false, + "description": "Recursive object extending", + "devDependencies": { + "mocha": "5.2.0", + "should": "13.2.1" + }, + "engines": { + "node": ">=4.0.0" + }, + "files": [ + "index.js", + "lib/" + ], + "homepage": "https://github.com/unclechu/node-deep-extend", + "keywords": [ + "deep-extend", + "extend", + "deep", + "recursive", + "xtend", + "clone", + "merge", + "json" + ], + "license": "MIT", + "licenses": [ + { + "type": "MIT", + "url": "https://raw.githubusercontent.com/unclechu/node-deep-extend/master/LICENSE" + } + ], + "main": "lib/deep-extend.js", + "name": "deep-extend", + "repository": { + "type": "git", + "url": "git://github.com/unclechu/node-deep-extend.git" + }, + "scripts": { + "test": "mocha" + }, + "version": "0.6.0" +} diff --git a/tic-tac-toe-app/node_modules/deep-is/.npmignore b/tic-tac-toe-app/node_modules/deep-is/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/tic-tac-toe-app/node_modules/deep-is/.travis.yml b/tic-tac-toe-app/node_modules/deep-is/.travis.yml new file mode 100644 index 0000000..d523c5f --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/.travis.yml @@ -0,0 +1,6 @@ +language: node_js +node_js: + - 0.4 + - 0.6 + - 0.8 + - 0.10 diff --git a/tic-tac-toe-app/node_modules/deep-is/LICENSE b/tic-tac-toe-app/node_modules/deep-is/LICENSE new file mode 100644 index 0000000..c38f840 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2012, 2013 Thorsten Lorenz +Copyright (c) 2012 James Halliday +Copyright (c) 2009 Thomas Robinson <280north.com> + +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/deep-is/README.markdown b/tic-tac-toe-app/node_modules/deep-is/README.markdown new file mode 100644 index 0000000..eb69a83 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/README.markdown @@ -0,0 +1,70 @@ +deep-is +========== + +Node's `assert.deepEqual() algorithm` as a standalone module. Exactly like +[deep-equal](https://github.com/substack/node-deep-equal) except for the fact that `deepEqual(NaN, NaN) === true`. + +This module is around [5 times faster](https://gist.github.com/2790507) +than wrapping `assert.deepEqual()` in a `try/catch`. + +[![browser support](http://ci.testling.com/thlorenz/deep-is.png)](http://ci.testling.com/thlorenz/deep-is) + +[![build status](https://secure.travis-ci.org/thlorenz/deep-is.png)](http://travis-ci.org/thlorenz/deep-is) + +example +======= + +``` js +var equal = require('deep-is'); +console.dir([ + equal( + { a : [ 2, 3 ], b : [ 4 ] }, + { a : [ 2, 3 ], b : [ 4 ] } + ), + equal( + { x : 5, y : [6] }, + { x : 5, y : 6 } + ) +]); +``` + +methods +======= + +var deepIs = require('deep-is') + +deepIs(a, b) +--------------- + +Compare objects `a` and `b`, returning whether they are equal according to a +recursive equality algorithm. + +install +======= + +With [npm](http://npmjs.org) do: + +``` +npm install deep-is +``` + +test +==== + +With [npm](http://npmjs.org) do: + +``` +npm test +``` + +license +======= + +Copyright (c) 2012, 2013 Thorsten Lorenz +Copyright (c) 2012 James Halliday + +Derived largely from node's assert module, which has the copyright statement: + +Copyright (c) 2009 Thomas Robinson <280north.com> + +Released under the MIT license, see LICENSE for details. diff --git a/tic-tac-toe-app/node_modules/deep-is/example/cmp.js b/tic-tac-toe-app/node_modules/deep-is/example/cmp.js new file mode 100644 index 0000000..67014b8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/example/cmp.js @@ -0,0 +1,11 @@ +var equal = require('../'); +console.dir([ + equal( + { a : [ 2, 3 ], b : [ 4 ] }, + { a : [ 2, 3 ], b : [ 4 ] } + ), + equal( + { x : 5, y : [6] }, + { x : 5, y : 6 } + ) +]); diff --git a/tic-tac-toe-app/node_modules/deep-is/index.js b/tic-tac-toe-app/node_modules/deep-is/index.js new file mode 100644 index 0000000..506fe27 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/index.js @@ -0,0 +1,102 @@ +var pSlice = Array.prototype.slice; +var Object_keys = typeof Object.keys === 'function' + ? Object.keys + : function (obj) { + var keys = []; + for (var key in obj) keys.push(key); + return keys; + } +; + +var deepEqual = module.exports = function (actual, expected) { + // enforce Object.is +0 !== -0 + if (actual === 0 && expected === 0) { + return areZerosEqual(actual, expected); + + // 7.1. All identical values are equivalent, as determined by ===. + } else if (actual === expected) { + return true; + + } else if (actual instanceof Date && expected instanceof Date) { + return actual.getTime() === expected.getTime(); + + } else if (isNumberNaN(actual)) { + return isNumberNaN(expected); + + // 7.3. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (typeof actual != 'object' && typeof expected != 'object') { + return actual == expected; + + // 7.4. For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +}; + +function isUndefinedOrNull(value) { + return value === null || value === undefined; +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function isNumberNaN(value) { + // NaN === NaN -> false + return typeof value == 'number' && value !== value; +} + +function areZerosEqual(zeroA, zeroB) { + // (1 / +0|0) -> Infinity, but (1 / -0) -> -Infinity and (Infinity !== -Infinity) + return (1 / zeroA) === (1 / zeroB); +} + +function objEquiv(a, b) { + if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) + return false; + + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + //~~~I've managed to break Object.keys through screwy arguments passing. + // Converting to array solves the problem. + if (isArguments(a)) { + if (!isArguments(b)) { + return false; + } + a = pSlice.call(a); + b = pSlice.call(b); + return deepEqual(a, b); + } + try { + var ka = Object_keys(a), + kb = Object_keys(b), + key, i; + } catch (e) {//happens when one is a string literal and the other isn't + return false; + } + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!deepEqual(a[key], b[key])) return false; + } + return true; +} diff --git a/tic-tac-toe-app/node_modules/deep-is/package.json b/tic-tac-toe-app/node_modules/deep-is/package.json new file mode 100644 index 0000000..c6430e1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/package.json @@ -0,0 +1,90 @@ +{ + "_from": "deep-is@~0.1.3", + "_id": "deep-is@0.1.3", + "_inBundle": false, + "_integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "_location": "/deep-is", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "deep-is@~0.1.3", + "name": "deep-is", + "escapedName": "deep-is", + "rawSpec": "~0.1.3", + "saveSpec": null, + "fetchSpec": "~0.1.3" + }, + "_requiredBy": [ + "/optionator" + ], + "_resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "_shasum": "b369d6fb5dbc13eecf524f91b070feedc357cf34", + "_spec": "deep-is@~0.1.3", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/optionator", + "author": { + "name": "Thorsten Lorenz", + "email": "thlorenz@gmx.de", + "url": "http://thlorenz.com" + }, + "bugs": { + "url": "https://github.com/thlorenz/deep-is/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "node's assert.deepEqual algorithm except for NaN being equal to NaN", + "devDependencies": { + "tape": "~1.0.2" + }, + "directories": { + "lib": ".", + "example": "example", + "test": "test" + }, + "homepage": "https://github.com/thlorenz/deep-is#readme", + "keywords": [ + "equality", + "equal", + "compare" + ], + "license": { + "type": "MIT", + "url": "https://github.com/thlorenz/deep-is/blob/master/LICENSE" + }, + "main": "index.js", + "name": "deep-is", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/thlorenz/deep-is.git" + }, + "scripts": { + "test": "tape test/*.js" + }, + "testling": { + "files": "test/*.js", + "browsers": { + "ie": [ + 6, + 7, + 8, + 9 + ], + "ff": [ + 3.5, + 10, + 15 + ], + "chrome": [ + 10, + 22 + ], + "safari": [ + 5.1 + ], + "opera": [ + 12 + ] + } + }, + "version": "0.1.3" +} diff --git a/tic-tac-toe-app/node_modules/deep-is/test/NaN.js b/tic-tac-toe-app/node_modules/deep-is/test/NaN.js new file mode 100644 index 0000000..ddaa5a7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/test/NaN.js @@ -0,0 +1,16 @@ +var test = require('tape'); +var equal = require('../'); + +test('NaN and 0 values', function (t) { + t.ok(equal(NaN, NaN)); + t.notOk(equal(0, NaN)); + t.ok(equal(0, 0)); + t.notOk(equal(0, 1)); + t.end(); +}); + + +test('nested NaN values', function (t) { + t.ok(equal([ NaN, 1, NaN ], [ NaN, 1, NaN ])); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/deep-is/test/cmp.js b/tic-tac-toe-app/node_modules/deep-is/test/cmp.js new file mode 100644 index 0000000..3071013 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/test/cmp.js @@ -0,0 +1,23 @@ +var test = require('tape'); +var equal = require('../'); + +test('equal', function (t) { + t.ok(equal( + { a : [ 2, 3 ], b : [ 4 ] }, + { a : [ 2, 3 ], b : [ 4 ] } + )); + t.end(); +}); + +test('not equal', function (t) { + t.notOk(equal( + { x : 5, y : [6] }, + { x : 5, y : 6 } + )); + t.end(); +}); + +test('nested nulls', function (t) { + t.ok(equal([ null, null, null ], [ null, null, null ])); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/deep-is/test/neg-vs-pos-0.js b/tic-tac-toe-app/node_modules/deep-is/test/neg-vs-pos-0.js new file mode 100644 index 0000000..ac26130 --- /dev/null +++ b/tic-tac-toe-app/node_modules/deep-is/test/neg-vs-pos-0.js @@ -0,0 +1,15 @@ +var test = require('tape'); +var equal = require('../'); + +test('0 values', function (t) { + t.ok(equal( 0, 0), ' 0 === 0'); + t.ok(equal( 0, +0), ' 0 === +0'); + t.ok(equal(+0, +0), '+0 === +0'); + t.ok(equal(-0, -0), '-0 === -0'); + + t.notOk(equal(-0, 0), '-0 !== 0'); + t.notOk(equal(-0, +0), '-0 !== +0'); + + t.end(); +}); + diff --git a/tic-tac-toe-app/node_modules/define-properties/.editorconfig b/tic-tac-toe-app/node_modules/define-properties/.editorconfig new file mode 100644 index 0000000..eaa2141 --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +indent_style = tab; +insert_final_newline = true; +quote_type = auto; +space_after_anonymous_functions = true; +space_after_control_statements = true; +spaces_around_operators = true; +trim_trailing_whitespace = true; +spaces_in_brackets = false; +end_of_line = lf; + diff --git a/tic-tac-toe-app/node_modules/define-properties/.eslintrc b/tic-tac-toe-app/node_modules/define-properties/.eslintrc new file mode 100644 index 0000000..db992d7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/.eslintrc @@ -0,0 +1,12 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "id-length": [2, { "min": 1, "max": 35 }], + "max-lines-per-function": [2, 100], + "max-params": [2, 4], + "max-statements": [2, 13] + } +} diff --git a/tic-tac-toe-app/node_modules/define-properties/.jscs.json b/tic-tac-toe-app/node_modules/define-properties/.jscs.json new file mode 100644 index 0000000..6f2d7f9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/.jscs.json @@ -0,0 +1,175 @@ +{ + "es3": true, + + "additionalRules": [], + + "requireSemicolons": true, + + "disallowMultipleSpaces": true, + + "disallowIdentifierNames": [], + + "requireCurlyBraces": { + "allExcept": [], + "keywords": ["if", "else", "for", "while", "do", "try", "catch"] + }, + + "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch", "function"], + + "disallowSpaceAfterKeywords": [], + + "disallowSpaceBeforeComma": true, + "disallowSpaceAfterComma": false, + "disallowSpaceBeforeSemicolon": true, + + "disallowNodeTypes": [ + "DebuggerStatement", + "LabeledStatement", + "SwitchCase", + "SwitchStatement", + "WithStatement" + ], + + "requireObjectKeysOnNewLine": { "allExcept": ["sameLine"] }, + + "requireSpacesInAnonymousFunctionExpression": { "beforeOpeningRoundBrace": true, "beforeOpeningCurlyBrace": true }, + "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, + "requireSpacesInFunctionDeclaration": { "beforeOpeningCurlyBrace": true }, + "disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true }, + + "requireSpaceBetweenArguments": true, + + "disallowSpacesInsideParentheses": true, + + "disallowSpacesInsideArrayBrackets": true, + + "disallowQuotedKeysInObjects": { "allExcept": ["reserved"] }, + + "disallowSpaceAfterObjectKeys": true, + + "requireCommaBeforeLineBreak": true, + + "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], + "requireSpaceAfterPrefixUnaryOperators": [], + + "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], + "requireSpaceBeforePostfixUnaryOperators": [], + + "disallowSpaceBeforeBinaryOperators": [], + "requireSpaceBeforeBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + + "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!=="], + "disallowSpaceAfterBinaryOperators": [], + + "disallowImplicitTypeConversion": ["binary", "string"], + + "disallowKeywords": ["with", "eval"], + + "requireKeywordsOnNewLine": [], + "disallowKeywordsOnNewLine": ["else"], + + "requireLineFeedAtFileEnd": true, + + "disallowTrailingWhitespace": true, + + "disallowTrailingComma": true, + + "excludeFiles": ["node_modules/**", "vendor/**"], + + "disallowMultipleLineStrings": true, + + "requireDotNotation": { "allExcept": ["keywords"] }, + + "requireParenthesesAroundIIFE": true, + + "validateLineBreaks": "LF", + + "validateQuoteMarks": { + "escape": true, + "mark": "'" + }, + + "disallowOperatorBeforeLineBreak": [], + + "requireSpaceBeforeKeywords": [ + "do", + "for", + "if", + "else", + "switch", + "case", + "try", + "catch", + "finally", + "while", + "with", + "return" + ], + + "validateAlignedFunctionParameters": { + "lineBreakAfterOpeningBraces": true, + "lineBreakBeforeClosingBraces": true + }, + + "requirePaddingNewLinesBeforeExport": true, + + "validateNewlineAfterArrayElements": { + "maximum": 3 + }, + + "requirePaddingNewLinesAfterUseStrict": true, + + "disallowArrowFunctions": true, + + "disallowMultiLineTernary": true, + + "validateOrderInObjectKeys": "asc-insensitive", + + "disallowIdenticalDestructuringNames": true, + + "disallowNestedTernaries": { "maxLevel": 1 }, + + "requireSpaceAfterComma": { "allExcept": ["trailing"] }, + "requireAlignedMultilineParams": false, + + "requireSpacesInGenerator": { + "afterStar": true + }, + + "disallowSpacesInGenerator": { + "beforeStar": true + }, + + "disallowVar": false, + + "requireArrayDestructuring": false, + + "requireEnhancedObjectLiterals": false, + + "requireObjectDestructuring": false, + + "requireEarlyReturn": false, + + "requireCapitalizedConstructorsNew": { + "allExcept": ["Function", "String", "Object", "Symbol", "Number", "Date", "RegExp", "Error", "Boolean", "Array"] + }, + + "requireImportAlphabetized": false, + + "requireSpaceBeforeObjectValues": true, + "requireSpaceBeforeDestructuredValues": true, + + "disallowSpacesInsideTemplateStringPlaceholders": true, + + "disallowArrayDestructuringReturn": false, + + "requireNewlineBeforeSingleStatementsInIf": false, + + "disallowUnusedVariables": true, + + "requireSpacesInsideImportedObjectBraces": true, + + "requireUseStrict": true +} + diff --git a/tic-tac-toe-app/node_modules/define-properties/.travis.yml b/tic-tac-toe-app/node_modules/define-properties/.travis.yml new file mode 100644 index 0000000..ec72d5f --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/.travis.yml @@ -0,0 +1,233 @@ +language: node_js +os: + - linux +node_js: + - "10.8" + - "9.11" + - "8.11" + - "7.10" + - "6.14" + - "5.12" + - "4.9" + - "iojs-v3.3" + - "iojs-v2.5" + - "iojs-v1.8" + - "0.12" + - "0.10" + - "0.8" +before_install: + - 'case "${TRAVIS_NODE_VERSION}" in 0.*) export NPM_CONFIG_STRICT_SSL=false ;; esac' + - 'nvm install-latest-npm' +install: + - 'if [ "${TRAVIS_NODE_VERSION}" = "0.6" ] || [ "${TRAVIS_NODE_VERSION}" = "0.9" ]; then nvm install --latest-npm 0.8 && npm install && nvm use "${TRAVIS_NODE_VERSION}"; else npm install; fi;' +script: + - 'if [ -n "${PRETEST-}" ]; then npm run pretest ; fi' + - 'if [ -n "${POSTTEST-}" ]; then npm run posttest ; fi' + - 'if [ -n "${COVERAGE-}" ]; then npm run coverage ; fi' + - 'if [ -n "${TEST-}" ]; then npm run tests-only ; fi' +sudo: false +env: + - TEST=true +matrix: + fast_finish: true + include: + - node_js: "lts/*" + env: PRETEST=true + - node_js: "lts/*" + env: POSTTEST=true + - node_js: "4" + env: COVERAGE=true + - node_js: "10.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "10.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "9.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "8.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "7.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.13" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.12" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "6.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.10" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "5.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.8" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "4.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v3.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v2.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.7" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.5" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.4" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.3" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.2" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.1" + env: TEST=true ALLOW_FAILURE=true + - node_js: "iojs-v1.0" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.11" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.9" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.6" + env: TEST=true ALLOW_FAILURE=true + - node_js: "0.4" + env: TEST=true ALLOW_FAILURE=true + allow_failures: + - os: osx + - env: TEST=true ALLOW_FAILURE=true + - env: COVERAGE=true diff --git a/tic-tac-toe-app/node_modules/define-properties/CHANGELOG.md b/tic-tac-toe-app/node_modules/define-properties/CHANGELOG.md new file mode 100644 index 0000000..5cad1e2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/CHANGELOG.md @@ -0,0 +1,44 @@ +1.1.3 / 2018-08-14 +================= + * [Refactor] use a for loop instead of `foreach` to make for smaller bundle sizes + * [Robustness] cache `Array.prototype.concat` and `Object.defineProperty` + * [Deps] update `object-keys` + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `nsp`, `tape`, `jscs`; remove unused eccheck script + dep + * [Tests] use pretest/posttest for linting/security + * [Tests] fix npm upgrades on older nodes + +1.1.2 / 2015-10-14 +================= + * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG + * [Deps] Update `object-keys` + * [Dev Deps] update `jscs`, `tape`, `eslint`, `@ljharb/eslint-config`, `nsp` + * [Tests] up to `io.js` `v3.3`, `node` `v4.2` + +1.1.1 / 2015-07-21 +================= + * [Deps] Update `object-keys` + * [Dev Deps] Update `tape`, `eslint` + * [Tests] Test on `io.js` `v2.4` + +1.1.0 / 2015-07-01 +================= + * [New] Add support for symbol-valued properties. + * [Dev Deps] Update `nsp`, `eslint` + * [Tests] Test up to `io.js` `v2.3` + +1.0.3 / 2015-05-30 +================= + * Using a more reliable check for supported property descriptors. + +1.0.2 / 2015-05-23 +================= + * Test up to `io.js` `v2.0` + * Update `tape`, `jscs`, `nsp`, `eslint`, `object-keys`, `editorconfig-tools`, `covert` + +1.0.1 / 2015-01-06 +================= + * Update `object-keys` to fix ES3 support + +1.0.0 / 2015-01-04 +================= + * v1.0.0 diff --git a/tic-tac-toe-app/node_modules/define-properties/LICENSE b/tic-tac-toe-app/node_modules/define-properties/LICENSE new file mode 100644 index 0000000..8c271c1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (C) 2015 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/define-properties/README.md b/tic-tac-toe-app/node_modules/define-properties/README.md new file mode 100644 index 0000000..33b6111 --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/README.md @@ -0,0 +1,86 @@ +#define-properties [![Version Badge][npm-version-svg]][package-url] + +[![Build Status][travis-svg]][travis-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +[![browser support][testling-svg]][testling-url] + +Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines. +Existing properties are not overridden. Accepts a map of property names to a predicate that, when true, force-overrides. + +## Example + +```js +var define = require('define-properties'); +var assert = require('assert'); + +var obj = define({ a: 1, b: 2 }, { + a: 10, + b: 20, + c: 30 +}); +assert(obj.a === 1); +assert(obj.b === 2); +assert(obj.c === 30); +if (define.supportsDescriptors) { + assert.deepEqual(Object.keys(obj), ['a', 'b']); + assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'c'), { + configurable: true, + enumerable: false, + value: 30, + writable: false + }); +} +``` + +Then, with predicates: +```js +var define = require('define-properties'); +var assert = require('assert'); + +var obj = define({ a: 1, b: 2, c: 3 }, { + a: 10, + b: 20, + c: 30 +}, { + a: function () { return false; }, + b: function () { return true; } +}); +assert(obj.a === 1); +assert(obj.b === 20); +assert(obj.c === 3); +if (define.supportsDescriptors) { + assert.deepEqual(Object.keys(obj), ['a', 'c']); + assert.deepEqual(Object.getOwnPropertyDescriptor(obj, 'b'), { + configurable: true, + enumerable: false, + value: 20, + writable: false + }); +} +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/define-properties +[npm-version-svg]: http://versionbadg.es/ljharb/define-properties.svg +[travis-svg]: https://travis-ci.org/ljharb/define-properties.svg +[travis-url]: https://travis-ci.org/ljharb/define-properties +[deps-svg]: https://david-dm.org/ljharb/define-properties.svg +[deps-url]: https://david-dm.org/ljharb/define-properties +[dev-deps-svg]: https://david-dm.org/ljharb/define-properties/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/define-properties#info=devDependencies +[testling-svg]: https://ci.testling.com/ljharb/define-properties.png +[testling-url]: https://ci.testling.com/ljharb/define-properties +[npm-badge-png]: https://nodei.co/npm/define-properties.png?downloads=true&stars=true +[license-image]: http://img.shields.io/npm/l/define-properties.svg +[license-url]: LICENSE +[downloads-image]: http://img.shields.io/npm/dm/define-properties.svg +[downloads-url]: http://npm-stat.com/charts.html?package=define-properties + diff --git a/tic-tac-toe-app/node_modules/define-properties/index.js b/tic-tac-toe-app/node_modules/define-properties/index.js new file mode 100644 index 0000000..cb3ae1c --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/index.js @@ -0,0 +1,58 @@ +'use strict'; + +var keys = require('object-keys'); +var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol'; + +var toStr = Object.prototype.toString; +var concat = Array.prototype.concat; +var origDefineProperty = Object.defineProperty; + +var isFunction = function (fn) { + return typeof fn === 'function' && toStr.call(fn) === '[object Function]'; +}; + +var arePropertyDescriptorsSupported = function () { + var obj = {}; + try { + origDefineProperty(obj, 'x', { enumerable: false, value: obj }); + // eslint-disable-next-line no-unused-vars, no-restricted-syntax + for (var _ in obj) { // jscs:ignore disallowUnusedVariables + return false; + } + return obj.x === obj; + } catch (e) { /* this is IE 8. */ + return false; + } +}; +var supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported(); + +var defineProperty = function (object, name, value, predicate) { + if (name in object && (!isFunction(predicate) || !predicate())) { + return; + } + if (supportsDescriptors) { + origDefineProperty(object, name, { + configurable: true, + enumerable: false, + value: value, + writable: true + }); + } else { + object[name] = value; + } +}; + +var defineProperties = function (object, map) { + var predicates = arguments.length > 2 ? arguments[2] : {}; + var props = keys(map); + if (hasSymbols) { + props = concat.call(props, Object.getOwnPropertySymbols(map)); + } + for (var i = 0; i < props.length; i += 1) { + defineProperty(object, props[i], map[props[i]], predicates[props[i]]); + } +}; + +defineProperties.supportsDescriptors = !!supportsDescriptors; + +module.exports = defineProperties; diff --git a/tic-tac-toe-app/node_modules/define-properties/package.json b/tic-tac-toe-app/node_modules/define-properties/package.json new file mode 100644 index 0000000..abf0b52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/package.json @@ -0,0 +1,107 @@ +{ + "_from": "define-properties@^1.1.2", + "_id": "define-properties@1.1.3", + "_inBundle": false, + "_integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "_location": "/define-properties", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "define-properties@^1.1.2", + "name": "define-properties", + "escapedName": "define-properties", + "rawSpec": "^1.1.2", + "saveSpec": null, + "fetchSpec": "^1.1.2" + }, + "_requiredBy": [ + "/array-includes", + "/array.prototype.flat", + "/object.assign", + "/object.entries", + "/object.fromentries", + "/object.values", + "/regexp.prototype.flags", + "/string.prototype.matchall", + "/string.prototype.trimend", + "/string.prototype.trimleft", + "/string.prototype.trimright", + "/string.prototype.trimstart" + ], + "_resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "_shasum": "cf88da6cbee26fe6db7094f61d870cbd84cee9f1", + "_spec": "define-properties@^1.1.2", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/object.assign", + "author": { + "name": "Jordan Harband" + }, + "bugs": { + "url": "https://github.com/ljharb/define-properties/issues" + }, + "bundleDependencies": false, + "dependencies": { + "object-keys": "^1.0.12" + }, + "deprecated": false, + "description": "Define multiple non-enumerable properties at once. Uses `Object.defineProperty` when available; falls back to standard assignment in older engines.", + "devDependencies": { + "@ljharb/eslint-config": "^13.0.0", + "covert": "^1.1.0", + "eslint": "^5.3.0", + "jscs": "^3.0.7", + "nsp": "^3.2.1", + "tape": "^4.9.0" + }, + "engines": { + "node": ">= 0.4" + }, + "homepage": "https://github.com/ljharb/define-properties#readme", + "keywords": [ + "Object.defineProperty", + "Object.defineProperties", + "object", + "property descriptor", + "descriptor", + "define", + "ES5" + ], + "license": "MIT", + "main": "index.js", + "name": "define-properties", + "repository": { + "type": "git", + "url": "git://github.com/ljharb/define-properties.git" + }, + "scripts": { + "coverage": "covert test/*.js", + "coverage-quiet": "covert test/*.js --quiet", + "eslint": "eslint test/*.js *.js", + "jscs": "jscs test/*.js *.js", + "lint": "npm run --silent jscs && npm run --silent eslint", + "posttest": "npm run --silent security", + "pretest": "npm run --silent lint", + "security": "nsp check", + "test": "npm run --silent tests-only", + "tests-only": "node test/index.js" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "version": "1.1.3" +} diff --git a/tic-tac-toe-app/node_modules/define-properties/test/index.js b/tic-tac-toe-app/node_modules/define-properties/test/index.js new file mode 100644 index 0000000..3387f6b --- /dev/null +++ b/tic-tac-toe-app/node_modules/define-properties/test/index.js @@ -0,0 +1,125 @@ +'use strict'; + +var define = require('../'); +var test = require('tape'); +var keys = require('object-keys'); + +var arePropertyDescriptorsSupported = function () { + var obj = { a: 1 }; + try { + Object.defineProperty(obj, 'x', { value: obj }); + return obj.x === obj; + } catch (e) { /* this is IE 8. */ + return false; + } +}; +var descriptorsSupported = !!Object.defineProperty && arePropertyDescriptorsSupported(); + +var hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol'; + +test('defineProperties', function (dt) { + dt.test('with descriptor support', { skip: !descriptorsSupported }, function (t) { + var getDescriptor = function (value) { + return { + configurable: true, + enumerable: false, + value: value, + writable: true + }; + }; + + var obj = { + a: 1, + b: 2, + c: 3 + }; + t.deepEqual(keys(obj), ['a', 'b', 'c'], 'all literal-set keys start enumerable'); + define(obj, { + b: 3, + c: 4, + d: 5 + }); + t.deepEqual(obj, { + a: 1, + b: 2, + c: 3 + }, 'existing properties were not overridden'); + t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'd'), getDescriptor(5), 'new property "d" was added and is not enumerable'); + t.deepEqual(['a', 'b', 'c'], keys(obj), 'new keys are not enumerable'); + + define(obj, { + a: 2, + b: 3, + c: 4 + }, { + a: function () { return true; }, + b: function () { return false; } + }); + t.deepEqual(obj, { + b: 2, + c: 3 + }, 'properties only overriden when predicate exists and returns true'); + t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'd'), getDescriptor(5), 'existing property "d" remained and is not enumerable'); + t.deepEqual(Object.getOwnPropertyDescriptor(obj, 'a'), getDescriptor(2), 'existing property "a" was overridden and is not enumerable'); + t.deepEqual(['b', 'c'], keys(obj), 'overridden keys are not enumerable'); + + t.end(); + }); + + dt.test('without descriptor support', { skip: descriptorsSupported }, function (t) { + var obj = { + a: 1, + b: 2, + c: 3 + }; + define(obj, { + b: 3, + c: 4, + d: 5 + }); + t.deepEqual(obj, { + a: 1, + b: 2, + c: 3, + d: 5 + }, 'existing properties were not overridden, new properties were added'); + + define(obj, { + a: 2, + b: 3, + c: 4 + }, { + a: function () { return true; }, + b: function () { return false; } + }); + t.deepEqual(obj, { + a: 2, + b: 2, + c: 3, + d: 5 + }, 'properties only overriden when predicate exists and returns true'); + + t.end(); + }); + + dt.end(); +}); + +test('symbols', { skip: !hasSymbols }, function (t) { + var sym = Symbol('foo'); + var obj = {}; + var aValue = {}; + var bValue = {}; + var properties = { a: aValue }; + properties[sym] = bValue; + + define(obj, properties); + + t.deepEqual(Object.keys(obj), [], 'object has no enumerable keys'); + t.deepEqual(Object.getOwnPropertyNames(obj), ['a'], 'object has non-enumerable "a" key'); + t.deepEqual(Object.getOwnPropertySymbols(obj), [sym], 'object has non-enumerable symbol key'); + t.equal(obj.a, aValue, 'string keyed value is defined'); + t.equal(obj[sym], bValue, 'symbol keyed value is defined'); + + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/doctrine/CHANGELOG.md b/tic-tac-toe-app/node_modules/doctrine/CHANGELOG.md new file mode 100644 index 0000000..6141026 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/CHANGELOG.md @@ -0,0 +1,101 @@ +v3.0.0 - November 9, 2018 + +* 0b5a8c7 Breaking: drop support for Node < 6 (#223) (Kai Cataldo) +* a05e9f2 Upgrade: eslint-release@1.0.0 (#220) (Teddy Katz) +* 36ed027 Chore: upgrade coveralls to ^3.0.1 (#213) (Teddy Katz) +* 8667e34 Upgrade: eslint-release@^0.11.1 (#210) (Kevin Partington) + +v2.1.0 - January 6, 2018 + +* 827f314 Update: support node ranges (fixes #89) (#190) (Teddy Katz) + +v2.0.2 - November 25, 2017 + +* 5049ee3 Fix: Remove redundant LICENSE/README names from files (#203) (Kevin Partington) + +v2.0.1 - November 10, 2017 + +* 009f33d Fix: Making sure union type stringification respects compact flag (#199) (Mitermayer Reis) +* 19da935 Use native String.prototype.trim instead of a custom implementation. (#201) (Rouven Weßling) +* e3a011b chore: add mocha.opts to restore custom mocha config (Jason Kurian) +* d888200 chore: adds nyc and a newer version of mocha to accurately report coverage (Jason Kurian) +* 6b210a8 fix: support type expression for @this tag (fixes #181) (#182) (Frédéric Junod) +* 1c4a4c7 fix: Allow array indexes in names (#193) (Tom MacWright) +* 9aed54d Fix incorrect behavior when arrow functions are used as default values (#189) (Gaurab Paul) +* 9efb6ca Upgrade: Use Array.isArray instead of isarray package (#195) (medanat) + +v2.0.0 - November 15, 2016 + +* 7d7c5f1 Breaking: Re-license to Apache 2 (fixes #176) (#178) (Nicholas C. Zakas) +* 5496132 Docs: Update license copyright (Nicholas C. Zakas) + +v1.5.0 - October 13, 2016 + +* e33c6bb Update: Add support for BooleanLiteralType (#173) (Erik Arvidsson) + +v1.4.0 - September 13, 2016 + +* d7426e5 Update: add ability to parse optional properties in typedefs (refs #5) (#174) (ikokostya) + +v1.3.0 - August 22, 2016 + +* 12c7ad9 Update: Add support for numeric and string literal types (fixes #156) (#172) (Andrew Walter) + +v1.2.3 - August 16, 2016 + +* b96a884 Build: Add CI release script (Nicholas C. Zakas) +* 8d9b3c7 Upgrade: Upgrade esutils to v2.0.2 (fixes #170) (#171) (Emeegeemee) + +v1.2.2 - May 19, 2016 + +* ebe0b08 Fix: Support case insensitive tags (fixes #163) (#164) (alberto) +* 8e6d81e Chore: Remove copyright and license from headers (Nicholas C. Zakas) +* 79035c6 Chore: Include jQuery Foundation copyright (Nicholas C. Zakas) +* 06910a7 Fix: Preserve whitespace in default param string values (fixes #157) (Kai Cataldo) + +v1.2.1 - March 29, 2016 + +* 1f54014 Fix: allow hyphens in names (fixes #116) (Kai Cataldo) +* bbee469 Docs: Add issue template (Nicholas C. Zakas) + +v1.2.0 - February 19, 2016 + +* 18136c5 Build: Cleanup build system (Nicholas C. Zakas) +* b082f85 Update: Add support for slash in namepaths (fixes #100) (Ryan Duffy) +* def53a2 Docs: Fix typo in option lineNumbers (Daniel Tschinder) +* e2cbbc5 Update: Bump isarray to v1.0.0 (Shinnosuke Watanabe) +* ae07aa8 Fix: Allow whitespace in optional param with default value (fixes #141) (chris) + +v1.1.0 - January 6, 2016 + +* Build: Switch to Makefile.js (Nicholas C. Zakas) +* New: support name expression for @this tag (fixes #143) (Tim Schaub) +* Build: Update ESLint settings (Nicholas C. Zakas) + +v1.0.0 - December 21, 2015 + +* New: parse caption tags in examples into separate property. (fixes #131) (Tom MacWright) + +v0.7.2 - November 27, 2015 + +* Fix: Line numbers for some tags (fixes #138) Fixing issue where input was not consumed via advance() but was skipped when parsing tags resulting in sometimes incorrect reported lineNumber. (TEHEK) +* Build: Add missing linefix package (Nicholas C. Zakas) + +v0.7.1 - November 13, 2015 + +* Update: Begin switch to Makefile.js (Nicholas C. Zakas) +* Fix: permit return tag without type (fixes #136) (Tom MacWright) +* Fix: package.json homepage field (Bogdan Chadkin) +* Fix: Parse array default syntax. Fixes #133 (Tom MacWright) +* Fix: Last tag always has \n in the description (fixes #87) (Burak Yigit Kaya) +* Docs: Add changelog (Nicholas C. Zakas) + +v0.7.0 - September 21, 2015 + +* Docs: Update README with new info (fixes #127) (Nicholas C. Zakas) +* Fix: Parsing fix for param with arrays and properties (fixes #111) (Gyandeep Singh) +* Build: Add travis build (fixes #123) (Gyandeep Singh) +* Fix: Parsing of parameter name without a type (fixes #120) (Gyandeep Singh) +* New: added preserveWhitespace option (Aleks Totic) +* New: Add "files" entry to only deploy select files (Rob Loach) +* New: Add support and tests for typedefs. Refs #5 (Tom MacWright) diff --git a/tic-tac-toe-app/node_modules/doctrine/LICENSE b/tic-tac-toe-app/node_modules/doctrine/LICENSE new file mode 100644 index 0000000..3e8ba72 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/LICENSE @@ -0,0 +1,177 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS diff --git a/tic-tac-toe-app/node_modules/doctrine/LICENSE.closure-compiler b/tic-tac-toe-app/node_modules/doctrine/LICENSE.closure-compiler new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/LICENSE.closure-compiler @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/tic-tac-toe-app/node_modules/doctrine/LICENSE.esprima b/tic-tac-toe-app/node_modules/doctrine/LICENSE.esprima new file mode 100644 index 0000000..3e580c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/LICENSE.esprima @@ -0,0 +1,19 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tic-tac-toe-app/node_modules/doctrine/README.md b/tic-tac-toe-app/node_modules/doctrine/README.md new file mode 100644 index 0000000..26fad18 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/README.md @@ -0,0 +1,165 @@ +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![Downloads][downloads-image]][downloads-url] +[![Join the chat at https://gitter.im/eslint/doctrine](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/eslint/doctrine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +# Doctrine + +Doctrine is a [JSDoc](http://usejsdoc.org) parser that parses documentation comments from JavaScript (you need to pass in the comment, not a whole JavaScript file). + +## Installation + +You can install Doctrine using [npm](https://npmjs.com): + +``` +$ npm install doctrine --save-dev +``` + +Doctrine can also be used in web browsers using [Browserify](http://browserify.org). + +## Usage + +Require doctrine inside of your JavaScript: + +```js +var doctrine = require("doctrine"); +``` + +### parse() + +The primary method is `parse()`, which accepts two arguments: the JSDoc comment to parse and an optional options object. The available options are: + +* `unwrap` - set to `true` to delete the leading `/**`, any `*` that begins a line, and the trailing `*/` from the source text. Default: `false`. +* `tags` - an array of tags to return. When specified, Doctrine returns only tags in this array. For example, if `tags` is `["param"]`, then only `@param` tags will be returned. Default: `null`. +* `recoverable` - set to `true` to keep parsing even when syntax errors occur. Default: `false`. +* `sloppy` - set to `true` to allow optional parameters to be specified in brackets (`@param {string} [foo]`). Default: `false`. +* `lineNumbers` - set to `true` to add `lineNumber` to each node, specifying the line on which the node is found in the source. Default: `false`. +* `range` - set to `true` to add `range` to each node, specifying the start and end index of the node in the original comment. Default: `false`. + +Here's a simple example: + +```js +var ast = doctrine.parse( + [ + "/**", + " * This function comment is parsed by doctrine", + " * @param {{ok:String}} userName", + "*/" + ].join('\n'), { unwrap: true }); +``` + +This example returns the following AST: + + { + "description": "This function comment is parsed by doctrine", + "tags": [ + { + "title": "param", + "description": null, + "type": { + "type": "RecordType", + "fields": [ + { + "type": "FieldType", + "key": "ok", + "value": { + "type": "NameExpression", + "name": "String" + } + } + ] + }, + "name": "userName" + } + ] + } + +See the [demo page](http://eslint.org/doctrine/demo/) more detail. + +## Team + +These folks keep the project moving and are resources for help: + +* Nicholas C. Zakas ([@nzakas](https://github.com/nzakas)) - project lead +* Yusuke Suzuki ([@constellation](https://github.com/constellation)) - reviewer + +## Contributing + +Issues and pull requests will be triaged and responded to as quickly as possible. We operate under the [ESLint Contributor Guidelines](http://eslint.org/docs/developer-guide/contributing), so please be sure to read them before contributing. If you're not sure where to dig in, check out the [issues](https://github.com/eslint/doctrine/issues). + +## Frequently Asked Questions + +### Can I pass a whole JavaScript file to Doctrine? + +No. Doctrine can only parse JSDoc comments, so you'll need to pass just the JSDoc comment to Doctrine in order to work. + + +### License + +#### doctrine + +Copyright JS Foundation and other contributors, https://js.foundation + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +#### esprima + +some of functions is derived from esprima + +Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) + (twitter: [@ariyahidayat](http://twitter.com/ariyahidayat)) and other contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +#### closure-compiler + +some of extensions is derived from closure-compiler + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + + +### Where to ask for help? + +Join our [Chatroom](https://gitter.im/eslint/doctrine) + +[npm-image]: https://img.shields.io/npm/v/doctrine.svg?style=flat-square +[npm-url]: https://www.npmjs.com/package/doctrine +[travis-image]: https://img.shields.io/travis/eslint/doctrine/master.svg?style=flat-square +[travis-url]: https://travis-ci.org/eslint/doctrine +[coveralls-image]: https://img.shields.io/coveralls/eslint/doctrine/master.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/eslint/doctrine?branch=master +[downloads-image]: http://img.shields.io/npm/dm/doctrine.svg?style=flat-square +[downloads-url]: https://www.npmjs.com/package/doctrine diff --git a/tic-tac-toe-app/node_modules/doctrine/lib/doctrine.js b/tic-tac-toe-app/node_modules/doctrine/lib/doctrine.js new file mode 100644 index 0000000..d246e33 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/lib/doctrine.js @@ -0,0 +1,898 @@ +/* + * @fileoverview Main Doctrine object + * @author Yusuke Suzuki + * @author Dan Tao + * @author Andrew Eisenberg + */ + +(function () { + 'use strict'; + + var typed, + utility, + jsdoc, + esutils, + hasOwnProperty; + + esutils = require('esutils'); + typed = require('./typed'); + utility = require('./utility'); + + function sliceSource(source, index, last) { + return source.slice(index, last); + } + + hasOwnProperty = (function () { + var func = Object.prototype.hasOwnProperty; + return function hasOwnProperty(obj, name) { + return func.call(obj, name); + }; + }()); + function shallowCopy(obj) { + var ret = {}, key; + for (key in obj) { + if (obj.hasOwnProperty(key)) { + ret[key] = obj[key]; + } + } + return ret; + } + + function isASCIIAlphanumeric(ch) { + return (ch >= 0x61 /* 'a' */ && ch <= 0x7A /* 'z' */) || + (ch >= 0x41 /* 'A' */ && ch <= 0x5A /* 'Z' */) || + (ch >= 0x30 /* '0' */ && ch <= 0x39 /* '9' */); + } + + function isParamTitle(title) { + return title === 'param' || title === 'argument' || title === 'arg'; + } + + function isReturnTitle(title) { + return title === 'return' || title === 'returns'; + } + + function isProperty(title) { + return title === 'property' || title === 'prop'; + } + + function isNameParameterRequired(title) { + return isParamTitle(title) || isProperty(title) || + title === 'alias' || title === 'this' || title === 'mixes' || title === 'requires'; + } + + function isAllowedName(title) { + return isNameParameterRequired(title) || title === 'const' || title === 'constant'; + } + + function isAllowedNested(title) { + return isProperty(title) || isParamTitle(title); + } + + function isAllowedOptional(title) { + return isProperty(title) || isParamTitle(title); + } + + function isTypeParameterRequired(title) { + return isParamTitle(title) || isReturnTitle(title) || + title === 'define' || title === 'enum' || + title === 'implements' || title === 'this' || + title === 'type' || title === 'typedef' || isProperty(title); + } + + // Consider deprecation instead using 'isTypeParameterRequired' and 'Rules' declaration to pick when a type is optional/required + // This would require changes to 'parseType' + function isAllowedType(title) { + return isTypeParameterRequired(title) || title === 'throws' || title === 'const' || title === 'constant' || + title === 'namespace' || title === 'member' || title === 'var' || title === 'module' || + title === 'constructor' || title === 'class' || title === 'extends' || title === 'augments' || + title === 'public' || title === 'private' || title === 'protected'; + } + + // A regex character class that contains all whitespace except linebreak characters (\r, \n, \u2028, \u2029) + var WHITESPACE = '[ \\f\\t\\v\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]'; + + var STAR_MATCHER = '(' + WHITESPACE + '*(?:\\*' + WHITESPACE + '?)?)(.+|[\r\n\u2028\u2029])'; + + function unwrapComment(doc) { + // JSDoc comment is following form + // /** + // * ....... + // */ + + return doc. + // remove /** + replace(/^\/\*\*?/, ''). + // remove */ + replace(/\*\/$/, ''). + // remove ' * ' at the beginning of a line + replace(new RegExp(STAR_MATCHER, 'g'), '$2'). + // remove trailing whitespace + replace(/\s*$/, ''); + } + + /** + * Converts an index in an "unwrapped" JSDoc comment to the corresponding index in the original "wrapped" version + * @param {string} originalSource The original wrapped comment + * @param {number} unwrappedIndex The index of a character in the unwrapped string + * @returns {number} The index of the corresponding character in the original wrapped string + */ + function convertUnwrappedCommentIndex(originalSource, unwrappedIndex) { + var replacedSource = originalSource.replace(/^\/\*\*?/, ''); + var numSkippedChars = 0; + var matcher = new RegExp(STAR_MATCHER, 'g'); + var match; + + while ((match = matcher.exec(replacedSource))) { + numSkippedChars += match[1].length; + + if (match.index + match[0].length > unwrappedIndex + numSkippedChars) { + return unwrappedIndex + numSkippedChars + originalSource.length - replacedSource.length; + } + } + + return originalSource.replace(/\*\/$/, '').replace(/\s*$/, '').length; + } + + // JSDoc Tag Parser + + (function (exports) { + var Rules, + index, + lineNumber, + length, + source, + originalSource, + recoverable, + sloppy, + strict; + + function advance() { + var ch = source.charCodeAt(index); + index += 1; + if (esutils.code.isLineTerminator(ch) && !(ch === 0x0D /* '\r' */ && source.charCodeAt(index) === 0x0A /* '\n' */)) { + lineNumber += 1; + } + return String.fromCharCode(ch); + } + + function scanTitle() { + var title = ''; + // waste '@' + advance(); + + while (index < length && isASCIIAlphanumeric(source.charCodeAt(index))) { + title += advance(); + } + + return title; + } + + function seekContent() { + var ch, waiting, last = index; + + waiting = false; + while (last < length) { + ch = source.charCodeAt(last); + if (esutils.code.isLineTerminator(ch) && !(ch === 0x0D /* '\r' */ && source.charCodeAt(last + 1) === 0x0A /* '\n' */)) { + waiting = true; + } else if (waiting) { + if (ch === 0x40 /* '@' */) { + break; + } + if (!esutils.code.isWhiteSpace(ch)) { + waiting = false; + } + } + last += 1; + } + return last; + } + + // type expression may have nest brace, such as, + // { { ok: string } } + // + // therefore, scanning type expression with balancing braces. + function parseType(title, last, addRange) { + var ch, brace, type, startIndex, direct = false; + + + // search '{' + while (index < last) { + ch = source.charCodeAt(index); + if (esutils.code.isWhiteSpace(ch)) { + advance(); + } else if (ch === 0x7B /* '{' */) { + advance(); + break; + } else { + // this is direct pattern + direct = true; + break; + } + } + + + if (direct) { + return null; + } + + // type expression { is found + brace = 1; + type = ''; + while (index < last) { + ch = source.charCodeAt(index); + if (esutils.code.isLineTerminator(ch)) { + advance(); + } else { + if (ch === 0x7D /* '}' */) { + brace -= 1; + if (brace === 0) { + advance(); + break; + } + } else if (ch === 0x7B /* '{' */) { + brace += 1; + } + if (type === '') { + startIndex = index; + } + type += advance(); + } + } + + if (brace !== 0) { + // braces is not balanced + return utility.throwError('Braces are not balanced'); + } + + if (isAllowedOptional(title)) { + return typed.parseParamType(type, {startIndex: convertIndex(startIndex), range: addRange}); + } + + return typed.parseType(type, {startIndex: convertIndex(startIndex), range: addRange}); + } + + function scanIdentifier(last) { + var identifier; + if (!esutils.code.isIdentifierStartES5(source.charCodeAt(index)) && !source[index].match(/[0-9]/)) { + return null; + } + identifier = advance(); + while (index < last && esutils.code.isIdentifierPartES5(source.charCodeAt(index))) { + identifier += advance(); + } + return identifier; + } + + function skipWhiteSpace(last) { + while (index < last && (esutils.code.isWhiteSpace(source.charCodeAt(index)) || esutils.code.isLineTerminator(source.charCodeAt(index)))) { + advance(); + } + } + + function parseName(last, allowBrackets, allowNestedParams) { + var name = '', + useBrackets, + insideString; + + + skipWhiteSpace(last); + + if (index >= last) { + return null; + } + + if (source.charCodeAt(index) === 0x5B /* '[' */) { + if (allowBrackets) { + useBrackets = true; + name = advance(); + } else { + return null; + } + } + + name += scanIdentifier(last); + + if (allowNestedParams) { + if (source.charCodeAt(index) === 0x3A /* ':' */ && ( + name === 'module' || + name === 'external' || + name === 'event')) { + name += advance(); + name += scanIdentifier(last); + + } + if(source.charCodeAt(index) === 0x5B /* '[' */ && source.charCodeAt(index + 1) === 0x5D /* ']' */){ + name += advance(); + name += advance(); + } + while (source.charCodeAt(index) === 0x2E /* '.' */ || + source.charCodeAt(index) === 0x2F /* '/' */ || + source.charCodeAt(index) === 0x23 /* '#' */ || + source.charCodeAt(index) === 0x2D /* '-' */ || + source.charCodeAt(index) === 0x7E /* '~' */) { + name += advance(); + name += scanIdentifier(last); + } + } + + if (useBrackets) { + skipWhiteSpace(last); + // do we have a default value for this? + if (source.charCodeAt(index) === 0x3D /* '=' */) { + // consume the '='' symbol + name += advance(); + skipWhiteSpace(last); + + var ch; + var bracketDepth = 1; + + // scan in the default value + while (index < last) { + ch = source.charCodeAt(index); + + if (esutils.code.isWhiteSpace(ch)) { + if (!insideString) { + skipWhiteSpace(last); + ch = source.charCodeAt(index); + } + } + + if (ch === 0x27 /* ''' */) { + if (!insideString) { + insideString = '\''; + } else { + if (insideString === '\'') { + insideString = ''; + } + } + } + + if (ch === 0x22 /* '"' */) { + if (!insideString) { + insideString = '"'; + } else { + if (insideString === '"') { + insideString = ''; + } + } + } + + if (ch === 0x5B /* '[' */) { + bracketDepth++; + } else if (ch === 0x5D /* ']' */ && + --bracketDepth === 0) { + break; + } + + name += advance(); + } + } + + skipWhiteSpace(last); + + if (index >= last || source.charCodeAt(index) !== 0x5D /* ']' */) { + // we never found a closing ']' + return null; + } + + // collect the last ']' + name += advance(); + } + + return name; + } + + function skipToTag() { + while (index < length && source.charCodeAt(index) !== 0x40 /* '@' */) { + advance(); + } + if (index >= length) { + return false; + } + utility.assert(source.charCodeAt(index) === 0x40 /* '@' */); + return true; + } + + function convertIndex(rangeIndex) { + if (source === originalSource) { + return rangeIndex; + } + return convertUnwrappedCommentIndex(originalSource, rangeIndex); + } + + function TagParser(options, title) { + this._options = options; + this._title = title.toLowerCase(); + this._tag = { + title: title, + description: null + }; + if (this._options.lineNumbers) { + this._tag.lineNumber = lineNumber; + } + this._first = index - title.length - 1; + this._last = 0; + // space to save special information for title parsers. + this._extra = { }; + } + + // addError(err, ...) + TagParser.prototype.addError = function addError(errorText) { + var args = Array.prototype.slice.call(arguments, 1), + msg = errorText.replace( + /%(\d)/g, + function (whole, index) { + utility.assert(index < args.length, 'Message reference must be in range'); + return args[index]; + } + ); + + if (!this._tag.errors) { + this._tag.errors = []; + } + if (strict) { + utility.throwError(msg); + } + this._tag.errors.push(msg); + return recoverable; + }; + + TagParser.prototype.parseType = function () { + // type required titles + if (isTypeParameterRequired(this._title)) { + try { + this._tag.type = parseType(this._title, this._last, this._options.range); + if (!this._tag.type) { + if (!isParamTitle(this._title) && !isReturnTitle(this._title)) { + if (!this.addError('Missing or invalid tag type')) { + return false; + } + } + } + } catch (error) { + this._tag.type = null; + if (!this.addError(error.message)) { + return false; + } + } + } else if (isAllowedType(this._title)) { + // optional types + try { + this._tag.type = parseType(this._title, this._last, this._options.range); + } catch (e) { + //For optional types, lets drop the thrown error when we hit the end of the file + } + } + return true; + }; + + TagParser.prototype._parseNamePath = function (optional) { + var name; + name = parseName(this._last, sloppy && isAllowedOptional(this._title), true); + if (!name) { + if (!optional) { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } + this._tag.name = name; + return true; + }; + + TagParser.prototype.parseNamePath = function () { + return this._parseNamePath(false); + }; + + TagParser.prototype.parseNamePathOptional = function () { + return this._parseNamePath(true); + }; + + + TagParser.prototype.parseName = function () { + var assign, name; + + // param, property requires name + if (isAllowedName(this._title)) { + this._tag.name = parseName(this._last, sloppy && isAllowedOptional(this._title), isAllowedNested(this._title)); + if (!this._tag.name) { + if (!isNameParameterRequired(this._title)) { + return true; + } + + // it's possible the name has already been parsed but interpreted as a type + // it's also possible this is a sloppy declaration, in which case it will be + // fixed at the end + if (isParamTitle(this._title) && this._tag.type && this._tag.type.name) { + this._extra.name = this._tag.type; + this._tag.name = this._tag.type.name; + this._tag.type = null; + } else { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } else { + name = this._tag.name; + if (name.charAt(0) === '[' && name.charAt(name.length - 1) === ']') { + // extract the default value if there is one + // example: @param {string} [somebody=John Doe] description + assign = name.substring(1, name.length - 1).split('='); + if (assign.length > 1) { + this._tag['default'] = assign.slice(1).join('='); + } + this._tag.name = assign[0]; + + // convert to an optional type + if (this._tag.type && this._tag.type.type !== 'OptionalType') { + this._tag.type = { + type: 'OptionalType', + expression: this._tag.type + }; + } + } + } + } + + + return true; + }; + + TagParser.prototype.parseDescription = function parseDescription() { + var description = sliceSource(source, index, this._last).trim(); + if (description) { + if ((/^-\s+/).test(description)) { + description = description.substring(2); + } + this._tag.description = description; + } + return true; + }; + + TagParser.prototype.parseCaption = function parseDescription() { + var description = sliceSource(source, index, this._last).trim(); + var captionStartTag = ''; + var captionEndTag = ''; + var captionStart = description.indexOf(captionStartTag); + var captionEnd = description.indexOf(captionEndTag); + if (captionStart >= 0 && captionEnd >= 0) { + this._tag.caption = description.substring( + captionStart + captionStartTag.length, captionEnd).trim(); + this._tag.description = description.substring(captionEnd + captionEndTag.length).trim(); + } else { + this._tag.description = description; + } + return true; + }; + + TagParser.prototype.parseKind = function parseKind() { + var kind, kinds; + kinds = { + 'class': true, + 'constant': true, + 'event': true, + 'external': true, + 'file': true, + 'function': true, + 'member': true, + 'mixin': true, + 'module': true, + 'namespace': true, + 'typedef': true + }; + kind = sliceSource(source, index, this._last).trim(); + this._tag.kind = kind; + if (!hasOwnProperty(kinds, kind)) { + if (!this.addError('Invalid kind name \'%0\'', kind)) { + return false; + } + } + return true; + }; + + TagParser.prototype.parseAccess = function parseAccess() { + var access; + access = sliceSource(source, index, this._last).trim(); + this._tag.access = access; + if (access !== 'private' && access !== 'protected' && access !== 'public') { + if (!this.addError('Invalid access name \'%0\'', access)) { + return false; + } + } + return true; + }; + + TagParser.prototype.parseThis = function parseThis() { + // this name may be a name expression (e.g. {foo.bar}), + // an union (e.g. {foo.bar|foo.baz}) or a name path (e.g. foo.bar) + var value = sliceSource(source, index, this._last).trim(); + if (value && value.charAt(0) === '{') { + var gotType = this.parseType(); + if (gotType && this._tag.type.type === 'NameExpression' || this._tag.type.type === 'UnionType') { + this._tag.name = this._tag.type.name; + return true; + } else { + return this.addError('Invalid name for this'); + } + } else { + return this.parseNamePath(); + } + }; + + TagParser.prototype.parseVariation = function parseVariation() { + var variation, text; + text = sliceSource(source, index, this._last).trim(); + variation = parseFloat(text, 10); + this._tag.variation = variation; + if (isNaN(variation)) { + if (!this.addError('Invalid variation \'%0\'', text)) { + return false; + } + } + return true; + }; + + TagParser.prototype.ensureEnd = function () { + var shouldBeEmpty = sliceSource(source, index, this._last).trim(); + if (shouldBeEmpty) { + if (!this.addError('Unknown content \'%0\'', shouldBeEmpty)) { + return false; + } + } + return true; + }; + + TagParser.prototype.epilogue = function epilogue() { + var description; + + description = this._tag.description; + // un-fix potentially sloppy declaration + if (isAllowedOptional(this._title) && !this._tag.type && description && description.charAt(0) === '[') { + this._tag.type = this._extra.name; + if (!this._tag.name) { + this._tag.name = undefined; + } + + if (!sloppy) { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } + + return true; + }; + + Rules = { + // http://usejsdoc.org/tags-access.html + 'access': ['parseAccess'], + // http://usejsdoc.org/tags-alias.html + 'alias': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-augments.html + 'augments': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-constructor.html + 'constructor': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-constructor.html + 'class': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-extends.html + 'extends': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-example.html + 'example': ['parseCaption'], + // http://usejsdoc.org/tags-deprecated.html + 'deprecated': ['parseDescription'], + // http://usejsdoc.org/tags-global.html + 'global': ['ensureEnd'], + // http://usejsdoc.org/tags-inner.html + 'inner': ['ensureEnd'], + // http://usejsdoc.org/tags-instance.html + 'instance': ['ensureEnd'], + // http://usejsdoc.org/tags-kind.html + 'kind': ['parseKind'], + // http://usejsdoc.org/tags-mixes.html + 'mixes': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-mixin.html + 'mixin': ['parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-member.html + 'member': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-method.html + 'method': ['parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-module.html + 'module': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-method.html + 'func': ['parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-method.html + 'function': ['parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-member.html + 'var': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-name.html + 'name': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-namespace.html + 'namespace': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-private.html + 'private': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-protected.html + 'protected': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-public.html + 'public': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-readonly.html + 'readonly': ['ensureEnd'], + // http://usejsdoc.org/tags-requires.html + 'requires': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-since.html + 'since': ['parseDescription'], + // http://usejsdoc.org/tags-static.html + 'static': ['ensureEnd'], + // http://usejsdoc.org/tags-summary.html + 'summary': ['parseDescription'], + // http://usejsdoc.org/tags-this.html + 'this': ['parseThis', 'ensureEnd'], + // http://usejsdoc.org/tags-todo.html + 'todo': ['parseDescription'], + // http://usejsdoc.org/tags-typedef.html + 'typedef': ['parseType', 'parseNamePathOptional'], + // http://usejsdoc.org/tags-variation.html + 'variation': ['parseVariation'], + // http://usejsdoc.org/tags-version.html + 'version': ['parseDescription'] + }; + + TagParser.prototype.parse = function parse() { + var i, iz, sequences, method; + + + // empty title + if (!this._title) { + if (!this.addError('Missing or invalid title')) { + return null; + } + } + + // Seek to content last index. + this._last = seekContent(this._title); + + if (this._options.range) { + this._tag.range = [this._first, source.slice(0, this._last).replace(/\s*$/, '').length].map(convertIndex); + } + + if (hasOwnProperty(Rules, this._title)) { + sequences = Rules[this._title]; + } else { + // default sequences + sequences = ['parseType', 'parseName', 'parseDescription', 'epilogue']; + } + + for (i = 0, iz = sequences.length; i < iz; ++i) { + method = sequences[i]; + if (!this[method]()) { + return null; + } + } + + return this._tag; + }; + + function parseTag(options) { + var title, parser, tag; + + // skip to tag + if (!skipToTag()) { + return null; + } + + // scan title + title = scanTitle(); + + // construct tag parser + parser = new TagParser(options, title); + tag = parser.parse(); + + // Seek global index to end of this tag. + while (index < parser._last) { + advance(); + } + + return tag; + } + + // + // Parse JSDoc + // + + function scanJSDocDescription(preserveWhitespace) { + var description = '', ch, atAllowed; + + atAllowed = true; + while (index < length) { + ch = source.charCodeAt(index); + + if (atAllowed && ch === 0x40 /* '@' */) { + break; + } + + if (esutils.code.isLineTerminator(ch)) { + atAllowed = true; + } else if (atAllowed && !esutils.code.isWhiteSpace(ch)) { + atAllowed = false; + } + + description += advance(); + } + + return preserveWhitespace ? description : description.trim(); + } + + function parse(comment, options) { + var tags = [], tag, description, interestingTags, i, iz; + + if (options === undefined) { + options = {}; + } + + if (typeof options.unwrap === 'boolean' && options.unwrap) { + source = unwrapComment(comment); + } else { + source = comment; + } + + originalSource = comment; + + // array of relevant tags + if (options.tags) { + if (Array.isArray(options.tags)) { + interestingTags = { }; + for (i = 0, iz = options.tags.length; i < iz; i++) { + if (typeof options.tags[i] === 'string') { + interestingTags[options.tags[i]] = true; + } else { + utility.throwError('Invalid "tags" parameter: ' + options.tags); + } + } + } else { + utility.throwError('Invalid "tags" parameter: ' + options.tags); + } + } + + length = source.length; + index = 0; + lineNumber = 0; + recoverable = options.recoverable; + sloppy = options.sloppy; + strict = options.strict; + + description = scanJSDocDescription(options.preserveWhitespace); + + while (true) { + tag = parseTag(options); + if (!tag) { + break; + } + if (!interestingTags || interestingTags.hasOwnProperty(tag.title)) { + tags.push(tag); + } + } + + return { + description: description, + tags: tags + }; + } + exports.parse = parse; + }(jsdoc = {})); + + exports.version = utility.VERSION; + exports.parse = jsdoc.parse; + exports.parseType = typed.parseType; + exports.parseParamType = typed.parseParamType; + exports.unwrapComment = unwrapComment; + exports.Syntax = shallowCopy(typed.Syntax); + exports.Error = utility.DoctrineError; + exports.type = { + Syntax: exports.Syntax, + parseType: typed.parseType, + parseParamType: typed.parseParamType, + stringify: typed.stringify + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/tic-tac-toe-app/node_modules/doctrine/lib/typed.js b/tic-tac-toe-app/node_modules/doctrine/lib/typed.js new file mode 100644 index 0000000..bdd3c39 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/lib/typed.js @@ -0,0 +1,1305 @@ +/* + * @fileoverview Type expression parser. + * @author Yusuke Suzuki + * @author Dan Tao + * @author Andrew Eisenberg + */ + +// "typed", the Type Expression Parser for doctrine. + +(function () { + 'use strict'; + + var Syntax, + Token, + source, + length, + index, + previous, + token, + value, + esutils, + utility, + rangeOffset, + addRange; + + esutils = require('esutils'); + utility = require('./utility'); + + Syntax = { + NullableLiteral: 'NullableLiteral', + AllLiteral: 'AllLiteral', + NullLiteral: 'NullLiteral', + UndefinedLiteral: 'UndefinedLiteral', + VoidLiteral: 'VoidLiteral', + UnionType: 'UnionType', + ArrayType: 'ArrayType', + RecordType: 'RecordType', + FieldType: 'FieldType', + FunctionType: 'FunctionType', + ParameterType: 'ParameterType', + RestType: 'RestType', + NonNullableType: 'NonNullableType', + OptionalType: 'OptionalType', + NullableType: 'NullableType', + NameExpression: 'NameExpression', + TypeApplication: 'TypeApplication', + StringLiteralType: 'StringLiteralType', + NumericLiteralType: 'NumericLiteralType', + BooleanLiteralType: 'BooleanLiteralType' + }; + + Token = { + ILLEGAL: 0, // ILLEGAL + DOT_LT: 1, // .< + REST: 2, // ... + LT: 3, // < + GT: 4, // > + LPAREN: 5, // ( + RPAREN: 6, // ) + LBRACE: 7, // { + RBRACE: 8, // } + LBRACK: 9, // [ + RBRACK: 10, // ] + COMMA: 11, // , + COLON: 12, // : + STAR: 13, // * + PIPE: 14, // | + QUESTION: 15, // ? + BANG: 16, // ! + EQUAL: 17, // = + NAME: 18, // name token + STRING: 19, // string + NUMBER: 20, // number + EOF: 21 + }; + + function isTypeName(ch) { + return '><(){}[],:*|?!='.indexOf(String.fromCharCode(ch)) === -1 && !esutils.code.isWhiteSpace(ch) && !esutils.code.isLineTerminator(ch); + } + + function Context(previous, index, token, value) { + this._previous = previous; + this._index = index; + this._token = token; + this._value = value; + } + + Context.prototype.restore = function () { + previous = this._previous; + index = this._index; + token = this._token; + value = this._value; + }; + + Context.save = function () { + return new Context(previous, index, token, value); + }; + + function maybeAddRange(node, range) { + if (addRange) { + node.range = [range[0] + rangeOffset, range[1] + rangeOffset]; + } + return node; + } + + function advance() { + var ch = source.charAt(index); + index += 1; + return ch; + } + + function scanHexEscape(prefix) { + var i, len, ch, code = 0; + + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && esutils.code.isHexDigit(source.charCodeAt(index))) { + ch = advance(); + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } + + function scanString() { + var str = '', quote, ch, code, unescaped, restore; //TODO review removal octal = false + quote = source.charAt(index); + ++index; + + while (index < length) { + ch = advance(); + + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = advance(); + if (!esutils.code.isLineTerminator(ch.charCodeAt(0))) { + switch (ch) { + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\v'; + break; + + default: + if (esutils.code.isOctalDigit(ch.charCodeAt(0))) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + // Deprecating unused code. TODO review removal + //if (code !== 0) { + // octal = true; + //} + + if (index < length && esutils.code.isOctalDigit(source.charCodeAt(index))) { + //TODO Review Removal octal = true; + code = code * 8 + '01234567'.indexOf(advance()); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + esutils.code.isOctalDigit(source.charCodeAt(index))) { + code = code * 8 + '01234567'.indexOf(advance()); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + if (ch === '\r' && source.charCodeAt(index) === 0x0A /* '\n' */) { + ++index; + } + } + } else if (esutils.code.isLineTerminator(ch.charCodeAt(0))) { + break; + } else { + str += ch; + } + } + + if (quote !== '') { + utility.throwError('unexpected quote'); + } + + value = str; + return Token.STRING; + } + + function scanNumber() { + var number, ch; + + number = ''; + ch = source.charCodeAt(index); + + if (ch !== 0x2E /* '.' */) { + number = advance(); + ch = source.charCodeAt(index); + + if (number === '0') { + if (ch === 0x78 /* 'x' */ || ch === 0x58 /* 'X' */) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isHexDigit(ch)) { + break; + } + number += advance(); + } + + if (number.length <= 2) { + // only 0x + utility.throwError('unexpected token'); + } + + if (index < length) { + ch = source.charCodeAt(index); + if (esutils.code.isIdentifierStartES5(ch)) { + utility.throwError('unexpected token'); + } + } + value = parseInt(number, 16); + return Token.NUMBER; + } + + if (esutils.code.isOctalDigit(ch)) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isOctalDigit(ch)) { + break; + } + number += advance(); + } + + if (index < length) { + ch = source.charCodeAt(index); + if (esutils.code.isIdentifierStartES5(ch) || esutils.code.isDecimalDigit(ch)) { + utility.throwError('unexpected token'); + } + } + value = parseInt(number, 8); + return Token.NUMBER; + } + + if (esutils.code.isDecimalDigit(ch)) { + utility.throwError('unexpected token'); + } + } + + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } + + if (ch === 0x2E /* '.' */) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } + + if (ch === 0x65 /* 'e' */ || ch === 0x45 /* 'E' */) { + number += advance(); + + ch = source.charCodeAt(index); + if (ch === 0x2B /* '+' */ || ch === 0x2D /* '-' */) { + number += advance(); + } + + ch = source.charCodeAt(index); + if (esutils.code.isDecimalDigit(ch)) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } else { + utility.throwError('unexpected token'); + } + } + + if (index < length) { + ch = source.charCodeAt(index); + if (esutils.code.isIdentifierStartES5(ch)) { + utility.throwError('unexpected token'); + } + } + + value = parseFloat(number); + return Token.NUMBER; + } + + + function scanTypeName() { + var ch, ch2; + + value = advance(); + while (index < length && isTypeName(source.charCodeAt(index))) { + ch = source.charCodeAt(index); + if (ch === 0x2E /* '.' */) { + if ((index + 1) >= length) { + return Token.ILLEGAL; + } + ch2 = source.charCodeAt(index + 1); + if (ch2 === 0x3C /* '<' */) { + break; + } + } + value += advance(); + } + return Token.NAME; + } + + function next() { + var ch; + + previous = index; + + while (index < length && esutils.code.isWhiteSpace(source.charCodeAt(index))) { + advance(); + } + if (index >= length) { + token = Token.EOF; + return token; + } + + ch = source.charCodeAt(index); + switch (ch) { + case 0x27: /* ''' */ + case 0x22: /* '"' */ + token = scanString(); + return token; + + case 0x3A: /* ':' */ + advance(); + token = Token.COLON; + return token; + + case 0x2C: /* ',' */ + advance(); + token = Token.COMMA; + return token; + + case 0x28: /* '(' */ + advance(); + token = Token.LPAREN; + return token; + + case 0x29: /* ')' */ + advance(); + token = Token.RPAREN; + return token; + + case 0x5B: /* '[' */ + advance(); + token = Token.LBRACK; + return token; + + case 0x5D: /* ']' */ + advance(); + token = Token.RBRACK; + return token; + + case 0x7B: /* '{' */ + advance(); + token = Token.LBRACE; + return token; + + case 0x7D: /* '}' */ + advance(); + token = Token.RBRACE; + return token; + + case 0x2E: /* '.' */ + if (index + 1 < length) { + ch = source.charCodeAt(index + 1); + if (ch === 0x3C /* '<' */) { + advance(); // '.' + advance(); // '<' + token = Token.DOT_LT; + return token; + } + + if (ch === 0x2E /* '.' */ && index + 2 < length && source.charCodeAt(index + 2) === 0x2E /* '.' */) { + advance(); // '.' + advance(); // '.' + advance(); // '.' + token = Token.REST; + return token; + } + + if (esutils.code.isDecimalDigit(ch)) { + token = scanNumber(); + return token; + } + } + token = Token.ILLEGAL; + return token; + + case 0x3C: /* '<' */ + advance(); + token = Token.LT; + return token; + + case 0x3E: /* '>' */ + advance(); + token = Token.GT; + return token; + + case 0x2A: /* '*' */ + advance(); + token = Token.STAR; + return token; + + case 0x7C: /* '|' */ + advance(); + token = Token.PIPE; + return token; + + case 0x3F: /* '?' */ + advance(); + token = Token.QUESTION; + return token; + + case 0x21: /* '!' */ + advance(); + token = Token.BANG; + return token; + + case 0x3D: /* '=' */ + advance(); + token = Token.EQUAL; + return token; + + case 0x2D: /* '-' */ + token = scanNumber(); + return token; + + default: + if (esutils.code.isDecimalDigit(ch)) { + token = scanNumber(); + return token; + } + + // type string permits following case, + // + // namespace.module.MyClass + // + // this reduced 1 token TK_NAME + utility.assert(isTypeName(ch)); + token = scanTypeName(); + return token; + } + } + + function consume(target, text) { + utility.assert(token === target, text || 'consumed token not matched'); + next(); + } + + function expect(target, message) { + if (token !== target) { + utility.throwError(message || 'unexpected token'); + } + next(); + } + + // UnionType := '(' TypeUnionList ')' + // + // TypeUnionList := + // <> + // | NonemptyTypeUnionList + // + // NonemptyTypeUnionList := + // TypeExpression + // | TypeExpression '|' NonemptyTypeUnionList + function parseUnionType() { + var elements, startIndex = index - 1; + consume(Token.LPAREN, 'UnionType should start with ('); + elements = []; + if (token !== Token.RPAREN) { + while (true) { + elements.push(parseTypeExpression()); + if (token === Token.RPAREN) { + break; + } + expect(Token.PIPE); + } + } + consume(Token.RPAREN, 'UnionType should end with )'); + return maybeAddRange({ + type: Syntax.UnionType, + elements: elements + }, [startIndex, previous]); + } + + // ArrayType := '[' ElementTypeList ']' + // + // ElementTypeList := + // <> + // | TypeExpression + // | '...' TypeExpression + // | TypeExpression ',' ElementTypeList + function parseArrayType() { + var elements, startIndex = index - 1, restStartIndex; + consume(Token.LBRACK, 'ArrayType should start with ['); + elements = []; + while (token !== Token.RBRACK) { + if (token === Token.REST) { + restStartIndex = index - 3; + consume(Token.REST); + elements.push(maybeAddRange({ + type: Syntax.RestType, + expression: parseTypeExpression() + }, [restStartIndex, previous])); + break; + } else { + elements.push(parseTypeExpression()); + } + if (token !== Token.RBRACK) { + expect(Token.COMMA); + } + } + expect(Token.RBRACK); + return maybeAddRange({ + type: Syntax.ArrayType, + elements: elements + }, [startIndex, previous]); + } + + function parseFieldName() { + var v = value; + if (token === Token.NAME || token === Token.STRING) { + next(); + return v; + } + + if (token === Token.NUMBER) { + consume(Token.NUMBER); + return String(v); + } + + utility.throwError('unexpected token'); + } + + // FieldType := + // FieldName + // | FieldName ':' TypeExpression + // + // FieldName := + // NameExpression + // | StringLiteral + // | NumberLiteral + // | ReservedIdentifier + function parseFieldType() { + var key, rangeStart = previous; + + key = parseFieldName(); + if (token === Token.COLON) { + consume(Token.COLON); + return maybeAddRange({ + type: Syntax.FieldType, + key: key, + value: parseTypeExpression() + }, [rangeStart, previous]); + } + return maybeAddRange({ + type: Syntax.FieldType, + key: key, + value: null + }, [rangeStart, previous]); + } + + // RecordType := '{' FieldTypeList '}' + // + // FieldTypeList := + // <> + // | FieldType + // | FieldType ',' FieldTypeList + function parseRecordType() { + var fields, rangeStart = index - 1, rangeEnd; + + consume(Token.LBRACE, 'RecordType should start with {'); + fields = []; + if (token === Token.COMMA) { + consume(Token.COMMA); + } else { + while (token !== Token.RBRACE) { + fields.push(parseFieldType()); + if (token !== Token.RBRACE) { + expect(Token.COMMA); + } + } + } + rangeEnd = index; + expect(Token.RBRACE); + return maybeAddRange({ + type: Syntax.RecordType, + fields: fields + }, [rangeStart, rangeEnd]); + } + + // NameExpression := + // Identifier + // | TagIdentifier ':' Identifier + // + // Tag identifier is one of "module", "external" or "event" + // Identifier is the same as Token.NAME, including any dots, something like + // namespace.module.MyClass + function parseNameExpression() { + var name = value, rangeStart = index - name.length; + expect(Token.NAME); + + if (token === Token.COLON && ( + name === 'module' || + name === 'external' || + name === 'event')) { + consume(Token.COLON); + name += ':' + value; + expect(Token.NAME); + } + + return maybeAddRange({ + type: Syntax.NameExpression, + name: name + }, [rangeStart, previous]); + } + + // TypeExpressionList := + // TopLevelTypeExpression + // | TopLevelTypeExpression ',' TypeExpressionList + function parseTypeExpressionList() { + var elements = []; + + elements.push(parseTop()); + while (token === Token.COMMA) { + consume(Token.COMMA); + elements.push(parseTop()); + } + return elements; + } + + // TypeName := + // NameExpression + // | NameExpression TypeApplication + // + // TypeApplication := + // '.<' TypeExpressionList '>' + // | '<' TypeExpressionList '>' // this is extension of doctrine + function parseTypeName() { + var expr, applications, startIndex = index - value.length; + + expr = parseNameExpression(); + if (token === Token.DOT_LT || token === Token.LT) { + next(); + applications = parseTypeExpressionList(); + expect(Token.GT); + return maybeAddRange({ + type: Syntax.TypeApplication, + expression: expr, + applications: applications + }, [startIndex, previous]); + } + return expr; + } + + // ResultType := + // <> + // | ':' void + // | ':' TypeExpression + // + // BNF is above + // but, we remove <> pattern, so token is always TypeToken::COLON + function parseResultType() { + consume(Token.COLON, 'ResultType should start with :'); + if (token === Token.NAME && value === 'void') { + consume(Token.NAME); + return { + type: Syntax.VoidLiteral + }; + } + return parseTypeExpression(); + } + + // ParametersType := + // RestParameterType + // | NonRestParametersType + // | NonRestParametersType ',' RestParameterType + // + // RestParameterType := + // '...' + // '...' Identifier + // + // NonRestParametersType := + // ParameterType ',' NonRestParametersType + // | ParameterType + // | OptionalParametersType + // + // OptionalParametersType := + // OptionalParameterType + // | OptionalParameterType, OptionalParametersType + // + // OptionalParameterType := ParameterType= + // + // ParameterType := TypeExpression | Identifier ':' TypeExpression + // + // Identifier is "new" or "this" + function parseParametersType() { + var params = [], optionalSequence = false, expr, rest = false, startIndex, restStartIndex = index - 3, nameStartIndex; + + while (token !== Token.RPAREN) { + if (token === Token.REST) { + // RestParameterType + consume(Token.REST); + rest = true; + } + + startIndex = previous; + + expr = parseTypeExpression(); + if (expr.type === Syntax.NameExpression && token === Token.COLON) { + nameStartIndex = previous - expr.name.length; + // Identifier ':' TypeExpression + consume(Token.COLON); + expr = maybeAddRange({ + type: Syntax.ParameterType, + name: expr.name, + expression: parseTypeExpression() + }, [nameStartIndex, previous]); + } + if (token === Token.EQUAL) { + consume(Token.EQUAL); + expr = maybeAddRange({ + type: Syntax.OptionalType, + expression: expr + }, [startIndex, previous]); + optionalSequence = true; + } else { + if (optionalSequence) { + utility.throwError('unexpected token'); + } + } + if (rest) { + expr = maybeAddRange({ + type: Syntax.RestType, + expression: expr + }, [restStartIndex, previous]); + } + params.push(expr); + if (token !== Token.RPAREN) { + expect(Token.COMMA); + } + } + return params; + } + + // FunctionType := 'function' FunctionSignatureType + // + // FunctionSignatureType := + // | TypeParameters '(' ')' ResultType + // | TypeParameters '(' ParametersType ')' ResultType + // | TypeParameters '(' 'this' ':' TypeName ')' ResultType + // | TypeParameters '(' 'this' ':' TypeName ',' ParametersType ')' ResultType + function parseFunctionType() { + var isNew, thisBinding, params, result, fnType, startIndex = index - value.length; + utility.assert(token === Token.NAME && value === 'function', 'FunctionType should start with \'function\''); + consume(Token.NAME); + + // Google Closure Compiler is not implementing TypeParameters. + // So we do not. if we don't get '(', we see it as error. + expect(Token.LPAREN); + + isNew = false; + params = []; + thisBinding = null; + if (token !== Token.RPAREN) { + // ParametersType or 'this' + if (token === Token.NAME && + (value === 'this' || value === 'new')) { + // 'this' or 'new' + // 'new' is Closure Compiler extension + isNew = value === 'new'; + consume(Token.NAME); + expect(Token.COLON); + thisBinding = parseTypeName(); + if (token === Token.COMMA) { + consume(Token.COMMA); + params = parseParametersType(); + } + } else { + params = parseParametersType(); + } + } + + expect(Token.RPAREN); + + result = null; + if (token === Token.COLON) { + result = parseResultType(); + } + + fnType = maybeAddRange({ + type: Syntax.FunctionType, + params: params, + result: result + }, [startIndex, previous]); + if (thisBinding) { + // avoid adding null 'new' and 'this' properties + fnType['this'] = thisBinding; + if (isNew) { + fnType['new'] = true; + } + } + return fnType; + } + + // BasicTypeExpression := + // '*' + // | 'null' + // | 'undefined' + // | TypeName + // | FunctionType + // | UnionType + // | RecordType + // | ArrayType + function parseBasicTypeExpression() { + var context, startIndex; + switch (token) { + case Token.STAR: + consume(Token.STAR); + return maybeAddRange({ + type: Syntax.AllLiteral + }, [previous - 1, previous]); + + case Token.LPAREN: + return parseUnionType(); + + case Token.LBRACK: + return parseArrayType(); + + case Token.LBRACE: + return parseRecordType(); + + case Token.NAME: + startIndex = index - value.length; + + if (value === 'null') { + consume(Token.NAME); + return maybeAddRange({ + type: Syntax.NullLiteral + }, [startIndex, previous]); + } + + if (value === 'undefined') { + consume(Token.NAME); + return maybeAddRange({ + type: Syntax.UndefinedLiteral + }, [startIndex, previous]); + } + + if (value === 'true' || value === 'false') { + consume(Token.NAME); + return maybeAddRange({ + type: Syntax.BooleanLiteralType, + value: value === 'true' + }, [startIndex, previous]); + } + + context = Context.save(); + if (value === 'function') { + try { + return parseFunctionType(); + } catch (e) { + context.restore(); + } + } + + return parseTypeName(); + + case Token.STRING: + next(); + return maybeAddRange({ + type: Syntax.StringLiteralType, + value: value + }, [previous - value.length - 2, previous]); + + case Token.NUMBER: + next(); + return maybeAddRange({ + type: Syntax.NumericLiteralType, + value: value + }, [previous - String(value).length, previous]); + + default: + utility.throwError('unexpected token'); + } + } + + // TypeExpression := + // BasicTypeExpression + // | '?' BasicTypeExpression + // | '!' BasicTypeExpression + // | BasicTypeExpression '?' + // | BasicTypeExpression '!' + // | '?' + // | BasicTypeExpression '[]' + function parseTypeExpression() { + var expr, rangeStart; + + if (token === Token.QUESTION) { + rangeStart = index - 1; + consume(Token.QUESTION); + if (token === Token.COMMA || token === Token.EQUAL || token === Token.RBRACE || + token === Token.RPAREN || token === Token.PIPE || token === Token.EOF || + token === Token.RBRACK || token === Token.GT) { + return maybeAddRange({ + type: Syntax.NullableLiteral + }, [rangeStart, previous]); + } + return maybeAddRange({ + type: Syntax.NullableType, + expression: parseBasicTypeExpression(), + prefix: true + }, [rangeStart, previous]); + } else if (token === Token.BANG) { + rangeStart = index - 1; + consume(Token.BANG); + return maybeAddRange({ + type: Syntax.NonNullableType, + expression: parseBasicTypeExpression(), + prefix: true + }, [rangeStart, previous]); + } else { + rangeStart = previous; + } + + expr = parseBasicTypeExpression(); + if (token === Token.BANG) { + consume(Token.BANG); + return maybeAddRange({ + type: Syntax.NonNullableType, + expression: expr, + prefix: false + }, [rangeStart, previous]); + } + + if (token === Token.QUESTION) { + consume(Token.QUESTION); + return maybeAddRange({ + type: Syntax.NullableType, + expression: expr, + prefix: false + }, [rangeStart, previous]); + } + + if (token === Token.LBRACK) { + consume(Token.LBRACK); + expect(Token.RBRACK, 'expected an array-style type declaration (' + value + '[])'); + return maybeAddRange({ + type: Syntax.TypeApplication, + expression: maybeAddRange({ + type: Syntax.NameExpression, + name: 'Array' + }, [rangeStart, previous]), + applications: [expr] + }, [rangeStart, previous]); + } + + return expr; + } + + // TopLevelTypeExpression := + // TypeExpression + // | TypeUnionList + // + // This rule is Google Closure Compiler extension, not ES4 + // like, + // { number | string } + // If strict to ES4, we should write it as + // { (number|string) } + function parseTop() { + var expr, elements; + + expr = parseTypeExpression(); + if (token !== Token.PIPE) { + return expr; + } + + elements = [expr]; + consume(Token.PIPE); + while (true) { + elements.push(parseTypeExpression()); + if (token !== Token.PIPE) { + break; + } + consume(Token.PIPE); + } + + return maybeAddRange({ + type: Syntax.UnionType, + elements: elements + }, [0, index]); + } + + function parseTopParamType() { + var expr; + + if (token === Token.REST) { + consume(Token.REST); + return maybeAddRange({ + type: Syntax.RestType, + expression: parseTop() + }, [0, index]); + } + + expr = parseTop(); + if (token === Token.EQUAL) { + consume(Token.EQUAL); + return maybeAddRange({ + type: Syntax.OptionalType, + expression: expr + }, [0, index]); + } + + return expr; + } + + function parseType(src, opt) { + var expr; + + source = src; + length = source.length; + index = 0; + previous = 0; + addRange = opt && opt.range; + rangeOffset = opt && opt.startIndex || 0; + + next(); + expr = parseTop(); + + if (opt && opt.midstream) { + return { + expression: expr, + index: previous + }; + } + + if (token !== Token.EOF) { + utility.throwError('not reach to EOF'); + } + + return expr; + } + + function parseParamType(src, opt) { + var expr; + + source = src; + length = source.length; + index = 0; + previous = 0; + addRange = opt && opt.range; + rangeOffset = opt && opt.startIndex || 0; + + next(); + expr = parseTopParamType(); + + if (opt && opt.midstream) { + return { + expression: expr, + index: previous + }; + } + + if (token !== Token.EOF) { + utility.throwError('not reach to EOF'); + } + + return expr; + } + + function stringifyImpl(node, compact, topLevel) { + var result, i, iz; + + switch (node.type) { + case Syntax.NullableLiteral: + result = '?'; + break; + + case Syntax.AllLiteral: + result = '*'; + break; + + case Syntax.NullLiteral: + result = 'null'; + break; + + case Syntax.UndefinedLiteral: + result = 'undefined'; + break; + + case Syntax.VoidLiteral: + result = 'void'; + break; + + case Syntax.UnionType: + if (!topLevel) { + result = '('; + } else { + result = ''; + } + + for (i = 0, iz = node.elements.length; i < iz; ++i) { + result += stringifyImpl(node.elements[i], compact); + if ((i + 1) !== iz) { + result += compact ? '|' : ' | '; + } + } + + if (!topLevel) { + result += ')'; + } + break; + + case Syntax.ArrayType: + result = '['; + for (i = 0, iz = node.elements.length; i < iz; ++i) { + result += stringifyImpl(node.elements[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += ']'; + break; + + case Syntax.RecordType: + result = '{'; + for (i = 0, iz = node.fields.length; i < iz; ++i) { + result += stringifyImpl(node.fields[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += '}'; + break; + + case Syntax.FieldType: + if (node.value) { + result = node.key + (compact ? ':' : ': ') + stringifyImpl(node.value, compact); + } else { + result = node.key; + } + break; + + case Syntax.FunctionType: + result = compact ? 'function(' : 'function ('; + + if (node['this']) { + if (node['new']) { + result += (compact ? 'new:' : 'new: '); + } else { + result += (compact ? 'this:' : 'this: '); + } + + result += stringifyImpl(node['this'], compact); + + if (node.params.length !== 0) { + result += compact ? ',' : ', '; + } + } + + for (i = 0, iz = node.params.length; i < iz; ++i) { + result += stringifyImpl(node.params[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + + result += ')'; + + if (node.result) { + result += (compact ? ':' : ': ') + stringifyImpl(node.result, compact); + } + break; + + case Syntax.ParameterType: + result = node.name + (compact ? ':' : ': ') + stringifyImpl(node.expression, compact); + break; + + case Syntax.RestType: + result = '...'; + if (node.expression) { + result += stringifyImpl(node.expression, compact); + } + break; + + case Syntax.NonNullableType: + if (node.prefix) { + result = '!' + stringifyImpl(node.expression, compact); + } else { + result = stringifyImpl(node.expression, compact) + '!'; + } + break; + + case Syntax.OptionalType: + result = stringifyImpl(node.expression, compact) + '='; + break; + + case Syntax.NullableType: + if (node.prefix) { + result = '?' + stringifyImpl(node.expression, compact); + } else { + result = stringifyImpl(node.expression, compact) + '?'; + } + break; + + case Syntax.NameExpression: + result = node.name; + break; + + case Syntax.TypeApplication: + result = stringifyImpl(node.expression, compact) + '.<'; + for (i = 0, iz = node.applications.length; i < iz; ++i) { + result += stringifyImpl(node.applications[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += '>'; + break; + + case Syntax.StringLiteralType: + result = '"' + node.value + '"'; + break; + + case Syntax.NumericLiteralType: + result = String(node.value); + break; + + case Syntax.BooleanLiteralType: + result = String(node.value); + break; + + default: + utility.throwError('Unknown type ' + node.type); + } + + return result; + } + + function stringify(node, options) { + if (options == null) { + options = {}; + } + return stringifyImpl(node, options.compact, options.topLevel); + } + + exports.parseType = parseType; + exports.parseParamType = parseParamType; + exports.stringify = stringify; + exports.Syntax = Syntax; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/tic-tac-toe-app/node_modules/doctrine/lib/utility.js b/tic-tac-toe-app/node_modules/doctrine/lib/utility.js new file mode 100644 index 0000000..381580e --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/lib/utility.js @@ -0,0 +1,35 @@ +/* + * @fileoverview Utilities for Doctrine + * @author Yusuke Suzuki + */ + + +(function () { + 'use strict'; + + var VERSION; + + VERSION = require('../package.json').version; + exports.VERSION = VERSION; + + function DoctrineError(message) { + this.name = 'DoctrineError'; + this.message = message; + } + DoctrineError.prototype = (function () { + var Middle = function () { }; + Middle.prototype = Error.prototype; + return new Middle(); + }()); + DoctrineError.prototype.constructor = DoctrineError; + exports.DoctrineError = DoctrineError; + + function throwError(message) { + throw new DoctrineError(message); + } + exports.throwError = throwError; + + exports.assert = require('assert'); +}()); + +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/tic-tac-toe-app/node_modules/doctrine/package.json b/tic-tac-toe-app/node_modules/doctrine/package.json new file mode 100644 index 0000000..27bb853 --- /dev/null +++ b/tic-tac-toe-app/node_modules/doctrine/package.json @@ -0,0 +1,89 @@ +{ + "_from": "doctrine@^3.0.0", + "_id": "doctrine@3.0.0", + "_inBundle": false, + "_integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "_location": "/doctrine", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "doctrine@^3.0.0", + "name": "doctrine", + "escapedName": "doctrine", + "rawSpec": "^3.0.0", + "saveSpec": null, + "fetchSpec": "^3.0.0" + }, + "_requiredBy": [ + "/eslint" + ], + "_resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "_shasum": "addebead72a6574db783639dc87a121773973961", + "_spec": "doctrine@^3.0.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint", + "bugs": { + "url": "https://github.com/eslint/doctrine/issues" + }, + "bundleDependencies": false, + "dependencies": { + "esutils": "^2.0.2" + }, + "deprecated": false, + "description": "JSDoc parser", + "devDependencies": { + "coveralls": "^3.0.1", + "dateformat": "^1.0.11", + "eslint": "^1.10.3", + "eslint-release": "^1.0.0", + "linefix": "^0.1.1", + "mocha": "^3.4.2", + "npm-license": "^0.3.1", + "nyc": "^10.3.2", + "semver": "^5.0.3", + "shelljs": "^0.5.3", + "shelljs-nodecli": "^0.1.1", + "should": "^5.0.1" + }, + "directories": { + "lib": "./lib" + }, + "engines": { + "node": ">=6.0.0" + }, + "files": [ + "lib" + ], + "homepage": "https://github.com/eslint/doctrine", + "license": "Apache-2.0", + "main": "lib/doctrine.js", + "maintainers": [ + { + "name": "Nicholas C. Zakas", + "email": "nicholas+npm@nczconsulting.com", + "url": "https://www.nczonline.net" + }, + { + "name": "Yusuke Suzuki", + "email": "utatane.tea@gmail.com", + "url": "https://github.com/Constellation" + } + ], + "name": "doctrine", + "repository": { + "type": "git", + "url": "git+https://github.com/eslint/doctrine.git" + }, + "scripts": { + "coveralls": "nyc report --reporter=text-lcov | coveralls", + "generate-alpharelease": "eslint-generate-prerelease alpha", + "generate-betarelease": "eslint-generate-prerelease beta", + "generate-rcrelease": "eslint-generate-prerelease rc", + "generate-release": "eslint-generate-release", + "lint": "eslint lib/", + "pretest": "npm run lint", + "publish-release": "eslint-publish-release", + "test": "nyc mocha" + }, + "version": "3.0.0" +} diff --git a/tic-tac-toe-app/node_modules/emoji-regex/LICENSE-MIT.txt b/tic-tac-toe-app/node_modules/emoji-regex/LICENSE-MIT.txt new file mode 100644 index 0000000..a41e0a7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/LICENSE-MIT.txt @@ -0,0 +1,20 @@ +Copyright Mathias Bynens + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/emoji-regex/README.md b/tic-tac-toe-app/node_modules/emoji-regex/README.md new file mode 100644 index 0000000..f10e173 --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/README.md @@ -0,0 +1,73 @@ +# emoji-regex [![Build status](https://travis-ci.org/mathiasbynens/emoji-regex.svg?branch=master)](https://travis-ci.org/mathiasbynens/emoji-regex) + +_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard. + +This repository contains a script that generates this regular expression based on [the data from Unicode v12](https://github.com/mathiasbynens/unicode-12.0.0). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard. + +## Installation + +Via [npm](https://www.npmjs.com/): + +```bash +npm install emoji-regex +``` + +In [Node.js](https://nodejs.org/): + +```js +const emojiRegex = require('emoji-regex'); +// Note: because the regular expression has the global flag set, this module +// exports a function that returns the regex rather than exporting the regular +// expression itself, to make it impossible to (accidentally) mutate the +// original regular expression. + +const text = ` +\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation) +\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji +\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base) +\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier +`; + +const regex = emojiRegex(); +let match; +while (match = regex.exec(text)) { + const emoji = match[0]; + console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`); +} +``` + +Console output: + +``` +Matched sequence ⌚ — code points: 1 +Matched sequence ⌚ — code points: 1 +Matched sequence ↔️ — code points: 2 +Matched sequence ↔️ — code points: 2 +Matched sequence 👩 — code points: 1 +Matched sequence 👩 — code points: 1 +Matched sequence 👩🏿 — code points: 2 +Matched sequence 👩🏿 — code points: 2 +``` + +To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex: + +```js +const emojiRegex = require('emoji-regex/text.js'); +``` + +Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes: + +```js +const emojiRegex = require('emoji-regex/es2015/index.js'); +const emojiRegexText = require('emoji-regex/es2015/text.js'); +``` + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## License + +_emoji-regex_ is available under the [MIT](https://mths.be/mit) license. diff --git a/tic-tac-toe-app/node_modules/emoji-regex/es2015/index.js b/tic-tac-toe-app/node_modules/emoji-regex/es2015/index.js new file mode 100644 index 0000000..b4cf3dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/es2015/index.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = () => { + // https://mths.be/emoji + return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu; +}; diff --git a/tic-tac-toe-app/node_modules/emoji-regex/es2015/text.js b/tic-tac-toe-app/node_modules/emoji-regex/es2015/text.js new file mode 100644 index 0000000..780309d --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/es2015/text.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = () => { + // https://mths.be/emoji + return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F?|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu; +}; diff --git a/tic-tac-toe-app/node_modules/emoji-regex/index.d.ts b/tic-tac-toe-app/node_modules/emoji-regex/index.d.ts new file mode 100644 index 0000000..1955b47 --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/index.d.ts @@ -0,0 +1,23 @@ +declare module 'emoji-regex' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} + +declare module 'emoji-regex/text' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} + +declare module 'emoji-regex/es2015' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} + +declare module 'emoji-regex/es2015/text' { + function emojiRegex(): RegExp; + + export default emojiRegex; +} diff --git a/tic-tac-toe-app/node_modules/emoji-regex/index.js b/tic-tac-toe-app/node_modules/emoji-regex/index.js new file mode 100644 index 0000000..d993a3a --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/index.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = function () { + // https://mths.be/emoji + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; +}; diff --git a/tic-tac-toe-app/node_modules/emoji-regex/package.json b/tic-tac-toe-app/node_modules/emoji-regex/package.json new file mode 100644 index 0000000..c4eae6f --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/package.json @@ -0,0 +1,77 @@ +{ + "_from": "emoji-regex@^8.0.0", + "_id": "emoji-regex@8.0.0", + "_inBundle": false, + "_integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "_location": "/emoji-regex", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "emoji-regex@^8.0.0", + "name": "emoji-regex", + "escapedName": "emoji-regex", + "rawSpec": "^8.0.0", + "saveSpec": null, + "fetchSpec": "^8.0.0" + }, + "_requiredBy": [ + "/inquirer/string-width" + ], + "_resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "_shasum": "e818fd69ce5ccfcb404594f842963bf53164cc37", + "_spec": "emoji-regex@^8.0.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/inquirer/node_modules/string-width", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "bugs": { + "url": "https://github.com/mathiasbynens/emoji-regex/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "A regular expression to match all Emoji-only symbols as per the Unicode Standard.", + "devDependencies": { + "@babel/cli": "^7.2.3", + "@babel/core": "^7.3.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.2.0", + "@babel/preset-env": "^7.3.4", + "mocha": "^6.0.2", + "regexgen": "^1.3.0", + "unicode-12.0.0": "^0.7.9" + }, + "files": [ + "LICENSE-MIT.txt", + "index.js", + "index.d.ts", + "text.js", + "es2015/index.js", + "es2015/text.js" + ], + "homepage": "https://mths.be/emoji-regex", + "keywords": [ + "unicode", + "regex", + "regexp", + "regular expressions", + "code points", + "symbols", + "characters", + "emoji" + ], + "license": "MIT", + "main": "index.js", + "name": "emoji-regex", + "repository": { + "type": "git", + "url": "git+https://github.com/mathiasbynens/emoji-regex.git" + }, + "scripts": { + "build": "rm -rf -- es2015; babel src -d .; NODE_ENV=es2015 babel src -d ./es2015; node script/inject-sequences.js", + "test": "mocha", + "test:watch": "npm run test -- --watch" + }, + "types": "index.d.ts", + "version": "8.0.0" +} diff --git a/tic-tac-toe-app/node_modules/emoji-regex/text.js b/tic-tac-toe-app/node_modules/emoji-regex/text.js new file mode 100644 index 0000000..0a55ce2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/emoji-regex/text.js @@ -0,0 +1,6 @@ +"use strict"; + +module.exports = function () { + // https://mths.be/emoji + return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F?|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g; +}; diff --git a/tic-tac-toe-app/node_modules/error-ex/LICENSE b/tic-tac-toe-app/node_modules/error-ex/LICENSE new file mode 100644 index 0000000..0a5f461 --- /dev/null +++ b/tic-tac-toe-app/node_modules/error-ex/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 JD Ballard + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/error-ex/README.md b/tic-tac-toe-app/node_modules/error-ex/README.md new file mode 100644 index 0000000..97f744a --- /dev/null +++ b/tic-tac-toe-app/node_modules/error-ex/README.md @@ -0,0 +1,144 @@ +# node-error-ex [![Travis-CI.org Build Status](https://img.shields.io/travis/Qix-/node-error-ex.svg?style=flat-square)](https://travis-ci.org/Qix-/node-error-ex) [![Coveralls.io Coverage Rating](https://img.shields.io/coveralls/Qix-/node-error-ex.svg?style=flat-square)](https://coveralls.io/r/Qix-/node-error-ex) +> Easily subclass and customize new Error types + +## Examples +To include in your project: +```javascript +var errorEx = require('error-ex'); +``` + +To create an error message type with a specific name (note, that `ErrorFn.name` +will not reflect this): +```javascript +var JSONError = errorEx('JSONError'); + +var err = new JSONError('error'); +err.name; //-> JSONError +throw err; //-> JSONError: error +``` + +To add a stack line: +```javascript +var JSONError = errorEx('JSONError', {fileName: errorEx.line('in %s')}); + +var err = new JSONError('error') +err.fileName = '/a/b/c/foo.json'; +throw err; //-> (line 2)-> in /a/b/c/foo.json +``` + +To append to the error message: +```javascript +var JSONError = errorEx('JSONError', {fileName: errorEx.append('in %s')}); + +var err = new JSONError('error'); +err.fileName = '/a/b/c/foo.json'; +throw err; //-> JSONError: error in /a/b/c/foo.json +``` + +## API + +#### `errorEx([name], [properties])` +Creates a new ErrorEx error type + +- `name`: the name of the new type (appears in the error message upon throw; + defaults to `Error.name`) +- `properties`: if supplied, used as a key/value dictionary of properties to + use when building up the stack message. Keys are property names that are + looked up on the error message, and then passed to function values. + - `line`: if specified and is a function, return value is added as a stack + entry (error-ex will indent for you). Passed the property value given + the key. + - `stack`: if specified and is a function, passed the value of the property + using the key, and the raw stack lines as a second argument. Takes no + return value (but the stack can be modified directly). + - `message`: if specified and is a function, return value is used as new + `.message` value upon get. Passed the property value of the property named + by key, and the existing message is passed as the second argument as an + array of lines (suitable for multi-line messages). + +Returns a constructor (Function) that can be used just like the regular Error +constructor. + +```javascript +var errorEx = require('error-ex'); + +var BasicError = errorEx(); + +var NamedError = errorEx('NamedError'); + +// -- + +var AdvancedError = errorEx('AdvancedError', { + foo: { + line: function (value, stack) { + if (value) { + return 'bar ' + value; + } + return null; + } + } +} + +var err = new AdvancedError('hello, world'); +err.foo = 'baz'; +throw err; + +/* + AdvancedError: hello, world + bar baz + at tryReadme() (readme.js:20:1) +*/ +``` + +#### `errorEx.line(str)` +Creates a stack line using a delimiter + +> This is a helper function. It is to be used in lieu of writing a value object +> for `properties` values. + +- `str`: The string to create + - Use the delimiter `%s` to specify where in the string the value should go + +```javascript +var errorEx = require('error-ex'); + +var FileError = errorEx('FileError', {fileName: errorEx.line('in %s')}); + +var err = new FileError('problem reading file'); +err.fileName = '/a/b/c/d/foo.js'; +throw err; + +/* + FileError: problem reading file + in /a/b/c/d/foo.js + at tryReadme() (readme.js:7:1) +*/ +``` + +#### `errorEx.append(str)` +Appends to the `error.message` string + +> This is a helper function. It is to be used in lieu of writing a value object +> for `properties` values. + +- `str`: The string to append + - Use the delimiter `%s` to specify where in the string the value should go + +```javascript +var errorEx = require('error-ex'); + +var SyntaxError = errorEx('SyntaxError', {fileName: errorEx.append('in %s')}); + +var err = new SyntaxError('improper indentation'); +err.fileName = '/a/b/c/d/foo.js'; +throw err; + +/* + SyntaxError: improper indentation in /a/b/c/d/foo.js + at tryReadme() (readme.js:7:1) +*/ +``` + +## License +Licensed under the [MIT License](http://opensource.org/licenses/MIT). +You can find a copy of it in [LICENSE](LICENSE). diff --git a/tic-tac-toe-app/node_modules/error-ex/index.js b/tic-tac-toe-app/node_modules/error-ex/index.js new file mode 100644 index 0000000..4fb20b4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/error-ex/index.js @@ -0,0 +1,141 @@ +'use strict'; + +var util = require('util'); +var isArrayish = require('is-arrayish'); + +var errorEx = function errorEx(name, properties) { + if (!name || name.constructor !== String) { + properties = name || {}; + name = Error.name; + } + + var errorExError = function ErrorEXError(message) { + if (!this) { + return new ErrorEXError(message); + } + + message = message instanceof Error + ? message.message + : (message || this.message); + + Error.call(this, message); + Error.captureStackTrace(this, errorExError); + + this.name = name; + + Object.defineProperty(this, 'message', { + configurable: true, + enumerable: false, + get: function () { + var newMessage = message.split(/\r?\n/g); + + for (var key in properties) { + if (!properties.hasOwnProperty(key)) { + continue; + } + + var modifier = properties[key]; + + if ('message' in modifier) { + newMessage = modifier.message(this[key], newMessage) || newMessage; + if (!isArrayish(newMessage)) { + newMessage = [newMessage]; + } + } + } + + return newMessage.join('\n'); + }, + set: function (v) { + message = v; + } + }); + + var overwrittenStack = null; + + var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack'); + var stackGetter = stackDescriptor.get; + var stackValue = stackDescriptor.value; + delete stackDescriptor.value; + delete stackDescriptor.writable; + + stackDescriptor.set = function (newstack) { + overwrittenStack = newstack; + }; + + stackDescriptor.get = function () { + var stack = (overwrittenStack || ((stackGetter) + ? stackGetter.call(this) + : stackValue)).split(/\r?\n+/g); + + // starting in Node 7, the stack builder caches the message. + // just replace it. + if (!overwrittenStack) { + stack[0] = this.name + ': ' + this.message; + } + + var lineCount = 1; + for (var key in properties) { + if (!properties.hasOwnProperty(key)) { + continue; + } + + var modifier = properties[key]; + + if ('line' in modifier) { + var line = modifier.line(this[key]); + if (line) { + stack.splice(lineCount++, 0, ' ' + line); + } + } + + if ('stack' in modifier) { + modifier.stack(this[key], stack); + } + } + + return stack.join('\n'); + }; + + Object.defineProperty(this, 'stack', stackDescriptor); + }; + + if (Object.setPrototypeOf) { + Object.setPrototypeOf(errorExError.prototype, Error.prototype); + Object.setPrototypeOf(errorExError, Error); + } else { + util.inherits(errorExError, Error); + } + + return errorExError; +}; + +errorEx.append = function (str, def) { + return { + message: function (v, message) { + v = v || def; + + if (v) { + message[0] += ' ' + str.replace('%s', v.toString()); + } + + return message; + } + }; +}; + +errorEx.line = function (str, def) { + return { + line: function (v) { + v = v || def; + + if (v) { + return str.replace('%s', v.toString()); + } + + return null; + } + }; +}; + +module.exports = errorEx; diff --git a/tic-tac-toe-app/node_modules/error-ex/package.json b/tic-tac-toe-app/node_modules/error-ex/package.json new file mode 100644 index 0000000..78c85af --- /dev/null +++ b/tic-tac-toe-app/node_modules/error-ex/package.json @@ -0,0 +1,86 @@ +{ + "_from": "error-ex@^1.2.0", + "_id": "error-ex@1.3.2", + "_inBundle": false, + "_integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "_location": "/error-ex", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "error-ex@^1.2.0", + "name": "error-ex", + "escapedName": "error-ex", + "rawSpec": "^1.2.0", + "saveSpec": null, + "fetchSpec": "^1.2.0" + }, + "_requiredBy": [ + "/parse-json" + ], + "_resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "_shasum": "b4ac40648107fdcdcfae242f428bea8a14d4f1bf", + "_spec": "error-ex@^1.2.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/parse-json", + "bugs": { + "url": "https://github.com/qix-/node-error-ex/issues" + }, + "bundleDependencies": false, + "dependencies": { + "is-arrayish": "^0.2.1" + }, + "deprecated": false, + "description": "Easy error subclassing and stack customization", + "devDependencies": { + "coffee-script": "^1.9.3", + "coveralls": "^2.11.2", + "istanbul": "^0.3.17", + "mocha": "^2.2.5", + "should": "^7.0.1", + "xo": "^0.7.1" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/qix-/node-error-ex#readme", + "keywords": [ + "error", + "errors", + "extend", + "extending", + "extension", + "subclass", + "stack", + "custom" + ], + "license": "MIT", + "maintainers": [ + { + "name": "Josh Junon", + "email": "i.am.qix@gmail.com", + "url": "github.com/qix-" + }, + { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + } + ], + "name": "error-ex", + "repository": { + "type": "git", + "url": "git+https://github.com/qix-/node-error-ex.git" + }, + "scripts": { + "pretest": "xo", + "test": "mocha --compilers coffee:coffee-script/register" + }, + "version": "1.3.2", + "xo": { + "rules": { + "operator-linebreak": [ + 0 + ] + } + } +} diff --git a/tic-tac-toe-app/node_modules/es-abstract/.editorconfig b/tic-tac-toe-app/node_modules/es-abstract/.editorconfig new file mode 100644 index 0000000..eaa2141 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.editorconfig @@ -0,0 +1,13 @@ +root = true + +[*] +indent_style = tab; +insert_final_newline = true; +quote_type = auto; +space_after_anonymous_functions = true; +space_after_control_statements = true; +spaces_around_operators = true; +trim_trailing_whitespace = true; +spaces_in_brackets = false; +end_of_line = lf; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/.eslintignore b/tic-tac-toe-app/node_modules/es-abstract/.eslintignore new file mode 100644 index 0000000..4ebc8ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.eslintignore @@ -0,0 +1 @@ +coverage diff --git a/tic-tac-toe-app/node_modules/es-abstract/.eslintrc b/tic-tac-toe-app/node_modules/es-abstract/.eslintrc new file mode 100644 index 0000000..1bac5b7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.eslintrc @@ -0,0 +1,66 @@ +{ + "root": true, + + "extends": "@ljharb", + + "env": { + "es6": true, + }, + + "rules": { + "array-bracket-newline": 0, + "array-element-newline": 0, + "complexity": 0, + "eqeqeq": [2, "allow-null"], + "func-name-matching": 0, + "id-length": [2, { "min": 1, "max": 40 }], + "max-params": [2, 4], + "max-statements-per-line": [2, { "max": 2 }], + "multiline-comment-style": 0, + "no-magic-numbers": 0, + "new-cap": 0, + "no-extra-parens": 1, + "operator-linebreak": [2, "before"], + "sort-keys": 0, + }, + + "overrides": [ + { + "files": "operations/*", + "rules": { + "max-lines": 0, + }, + }, + { + "files": "operations/*.js", + "parserOptions": { + "ecmaVersion": 2020, + }, + "rules": { + "no-console": 0, + "no-multi-str": 0, + }, + }, + { + "files": "operations/getOps.js", + "rules": { + "no-console": 0, + "no-process-exit": 0, + }, + }, + { + "files": "test/**", + "rules": { + "id-length": 0, + "max-lines": 0, + "max-lines-per-function": 0, + "max-statements-per-line": [2, { "max": 3 }], + "max-statements": 0, + "no-implicit-coercion": 0, + "no-invalid-this": 1, + "object-curly-newline": 0, + "prefer-regex-literals": 0, + }, + }, + ], +} diff --git a/tic-tac-toe-app/node_modules/es-abstract/.gitattributes b/tic-tac-toe-app/node_modules/es-abstract/.gitattributes new file mode 100644 index 0000000..9a65c9d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.gitattributes @@ -0,0 +1,472 @@ +2015/AbstractRelationalComparison.js spackled +2015/DateFromTime.js spackled +2015/Day.js spackled +2015/DayFromYear.js spackled +2015/DayWithinYear.js spackled +2015/DaysInYear.js spackled +2015/HourFromTime.js spackled +2015/InLeapYear.js spackled +2015/IsCallable.js spackled +2015/IsPropertyDescriptor.js spackled +2015/MakeDate.js spackled +2015/MakeDay.js spackled +2015/MakeTime.js spackled +2015/MinFromTime.js spackled +2015/MonthFromTime.js spackled +2015/SameValue.js spackled +2015/SecFromTime.js spackled +2015/StrictEqualityComparison.js spackled +2015/TimeClip.js spackled +2015/TimeFromYear.js spackled +2015/TimeWithinDay.js spackled +2015/ToBoolean.js spackled +2015/ToInt32.js spackled +2015/ToPropertyDescriptor.js spackled +2015/ToUint16.js spackled +2015/ToUint32.js spackled +2015/WeekDay.js spackled +2015/YearFromTime.js spackled +2015/modulo.js spackled +2015/msFromTime.js spackled +2016/AbstractEqualityComparison.js spackled +2016/AbstractRelationalComparison.js spackled +2016/AdvanceStringIndex.js spackled +2016/ArrayCreate.js spackled +2016/ArraySetLength.js spackled +2016/ArraySpeciesCreate.js spackled +2016/Call.js spackled +2016/CanonicalNumericIndexString.js spackled +2016/CompletePropertyDescriptor.js spackled +2016/CreateDataProperty.js spackled +2016/CreateDataPropertyOrThrow.js spackled +2016/CreateHTML.js spackled +2016/CreateIterResultObject.js spackled +2016/CreateListFromArrayLike.js spackled +2016/CreateMethodProperty.js spackled +2016/DateFromTime.js spackled +2016/Day.js spackled +2016/DayFromYear.js spackled +2016/DayWithinYear.js spackled +2016/DaysInYear.js spackled +2016/DefinePropertyOrThrow.js spackled +2016/DeletePropertyOrThrow.js spackled +2016/EnumerableOwnNames.js spackled +2016/FromPropertyDescriptor.js spackled +2016/Get.js spackled +2016/GetIterator.js spackled +2016/GetMethod.js spackled +2016/GetOwnPropertyKeys.js spackled +2016/GetPrototypeFromConstructor.js spackled +2016/GetSubstitution.js spackled +2016/GetV.js spackled +2016/HasOwnProperty.js spackled +2016/HasProperty.js spackled +2016/HourFromTime.js spackled +2016/InLeapYear.js spackled +2016/InstanceofOperator.js spackled +2016/Invoke.js spackled +2016/IsAccessorDescriptor.js spackled +2016/IsArray.js spackled +2016/IsCallable.js spackled +2016/IsConcatSpreadable.js spackled +2016/IsConstructor.js spackled +2016/IsDataDescriptor.js spackled +2016/IsExtensible.js spackled +2016/IsGenericDescriptor.js spackled +2016/IsInteger.js spackled +2016/IsPromise.js spackled +2016/IsPropertyDescriptor.js spackled +2016/IsPropertyKey.js spackled +2016/IsRegExp.js spackled +2016/IteratorClose.js spackled +2016/IteratorComplete.js spackled +2016/IteratorNext.js spackled +2016/IteratorStep.js spackled +2016/IteratorValue.js spackled +2016/MakeDate.js spackled +2016/MakeDay.js spackled +2016/MakeTime.js spackled +2016/MinFromTime.js spackled +2016/MonthFromTime.js spackled +2016/ObjectCreate.js spackled +2016/OrdinaryDefineOwnProperty.js spackled +2016/OrdinaryGetOwnProperty.js spackled +2016/OrdinaryHasInstance.js spackled +2016/OrdinaryHasProperty.js spackled +2016/RegExpExec.js spackled +2016/RequireObjectCoercible.js spackled +2016/SameValue.js spackled +2016/SameValueZero.js spackled +2016/SecFromTime.js spackled +2016/Set.js spackled +2016/SetFunctionName.js spackled +2016/SetIntegrityLevel.js spackled +2016/SpeciesConstructor.js spackled +2016/StrictEqualityComparison.js spackled +2016/SymbolDescriptiveString.js spackled +2016/TestIntegrityLevel.js spackled +2016/TimeClip.js spackled +2016/TimeFromYear.js spackled +2016/TimeWithinDay.js spackled +2016/ToBoolean.js spackled +2016/ToDateString.js spackled +2016/ToInt16.js spackled +2016/ToInt32.js spackled +2016/ToInt8.js spackled +2016/ToInteger.js spackled +2016/ToLength.js spackled +2016/ToNumber.js spackled +2016/ToObject.js spackled +2016/ToPrimitive.js spackled +2016/ToPropertyDescriptor.js spackled +2016/ToPropertyKey.js spackled +2016/ToString.js spackled +2016/ToUint16.js spackled +2016/ToUint32.js spackled +2016/ToUint8.js spackled +2016/ToUint8Clamp.js spackled +2016/Type.js spackled +2016/ValidateAndApplyPropertyDescriptor.js spackled +2016/WeekDay.js spackled +2016/YearFromTime.js spackled +2016/modulo.js spackled +2016/msFromTime.js spackled +2016/thisBooleanValue.js spackled +2016/thisNumberValue.js spackled +2016/thisStringValue.js spackled +2016/thisTimeValue.js spackled +2017/AbstractEqualityComparison.js spackled +2017/AbstractRelationalComparison.js spackled +2017/AdvanceStringIndex.js spackled +2017/ArrayCreate.js spackled +2017/ArraySetLength.js spackled +2017/ArraySpeciesCreate.js spackled +2017/Call.js spackled +2017/CanonicalNumericIndexString.js spackled +2017/CompletePropertyDescriptor.js spackled +2017/CreateDataProperty.js spackled +2017/CreateDataPropertyOrThrow.js spackled +2017/CreateHTML.js spackled +2017/CreateIterResultObject.js spackled +2017/CreateListFromArrayLike.js spackled +2017/CreateMethodProperty.js spackled +2017/DateFromTime.js spackled +2017/Day.js spackled +2017/DayFromYear.js spackled +2017/DayWithinYear.js spackled +2017/DaysInYear.js spackled +2017/DefinePropertyOrThrow.js spackled +2017/DeletePropertyOrThrow.js spackled +2017/FromPropertyDescriptor.js spackled +2017/Get.js spackled +2017/GetIterator.js spackled +2017/GetMethod.js spackled +2017/GetOwnPropertyKeys.js spackled +2017/GetPrototypeFromConstructor.js spackled +2017/GetSubstitution.js spackled +2017/GetV.js spackled +2017/HasOwnProperty.js spackled +2017/HasProperty.js spackled +2017/HourFromTime.js spackled +2017/InLeapYear.js spackled +2017/InstanceofOperator.js spackled +2017/Invoke.js spackled +2017/IsAccessorDescriptor.js spackled +2017/IsArray.js spackled +2017/IsCallable.js spackled +2017/IsConcatSpreadable.js spackled +2017/IsConstructor.js spackled +2017/IsDataDescriptor.js spackled +2017/IsExtensible.js spackled +2017/IsGenericDescriptor.js spackled +2017/IsInteger.js spackled +2017/IsPromise.js spackled +2017/IsPropertyDescriptor.js spackled +2017/IsPropertyKey.js spackled +2017/IsRegExp.js spackled +2017/IteratorClose.js spackled +2017/IteratorComplete.js spackled +2017/IteratorNext.js spackled +2017/IteratorStep.js spackled +2017/IteratorValue.js spackled +2017/MakeDate.js spackled +2017/MakeDay.js spackled +2017/MakeTime.js spackled +2017/MinFromTime.js spackled +2017/MonthFromTime.js spackled +2017/ObjectCreate.js spackled +2017/OrdinaryDefineOwnProperty.js spackled +2017/OrdinaryGetOwnProperty.js spackled +2017/OrdinaryGetPrototypeOf.js spackled +2017/OrdinaryHasInstance.js spackled +2017/OrdinaryHasProperty.js spackled +2017/OrdinarySetPrototypeOf.js spackled +2017/RegExpExec.js spackled +2017/RequireObjectCoercible.js spackled +2017/SameValue.js spackled +2017/SameValueNonNumber.js spackled +2017/SameValueZero.js spackled +2017/SecFromTime.js spackled +2017/Set.js spackled +2017/SetFunctionName.js spackled +2017/SetIntegrityLevel.js spackled +2017/SpeciesConstructor.js spackled +2017/StrictEqualityComparison.js spackled +2017/SymbolDescriptiveString.js spackled +2017/TestIntegrityLevel.js spackled +2017/TimeClip.js spackled +2017/TimeFromYear.js spackled +2017/TimeWithinDay.js spackled +2017/ToBoolean.js spackled +2017/ToDateString.js spackled +2017/ToInt16.js spackled +2017/ToInt32.js spackled +2017/ToInt8.js spackled +2017/ToInteger.js spackled +2017/ToLength.js spackled +2017/ToNumber.js spackled +2017/ToObject.js spackled +2017/ToPrimitive.js spackled +2017/ToPropertyDescriptor.js spackled +2017/ToPropertyKey.js spackled +2017/ToString.js spackled +2017/ToUint16.js spackled +2017/ToUint32.js spackled +2017/ToUint8.js spackled +2017/ToUint8Clamp.js spackled +2017/Type.js spackled +2017/ValidateAndApplyPropertyDescriptor.js spackled +2017/WeekDay.js spackled +2017/YearFromTime.js spackled +2017/modulo.js spackled +2017/msFromTime.js spackled +2017/thisBooleanValue.js spackled +2017/thisNumberValue.js spackled +2017/thisStringValue.js spackled +2017/thisTimeValue.js spackled +2018/AbstractEqualityComparison.js spackled +2018/AbstractRelationalComparison.js spackled +2018/AdvanceStringIndex.js spackled +2018/ArrayCreate.js spackled +2018/ArraySetLength.js spackled +2018/ArraySpeciesCreate.js spackled +2018/Call.js spackled +2018/CanonicalNumericIndexString.js spackled +2018/CompletePropertyDescriptor.js spackled +2018/CreateDataProperty.js spackled +2018/CreateDataPropertyOrThrow.js spackled +2018/CreateHTML.js spackled +2018/CreateIterResultObject.js spackled +2018/CreateListFromArrayLike.js spackled +2018/CreateMethodProperty.js spackled +2018/DateFromTime.js spackled +2018/Day.js spackled +2018/DayFromYear.js spackled +2018/DayWithinYear.js spackled +2018/DaysInYear.js spackled +2018/DefinePropertyOrThrow.js spackled +2018/DeletePropertyOrThrow.js spackled +2018/FromPropertyDescriptor.js spackled +2018/Get.js spackled +2018/GetIterator.js spackled +2018/GetMethod.js spackled +2018/GetOwnPropertyKeys.js spackled +2018/GetPrototypeFromConstructor.js spackled +2018/GetV.js spackled +2018/HasOwnProperty.js spackled +2018/HasProperty.js spackled +2018/HourFromTime.js spackled +2018/InLeapYear.js spackled +2018/InstanceofOperator.js spackled +2018/Invoke.js spackled +2018/IsAccessorDescriptor.js spackled +2018/IsArray.js spackled +2018/IsCallable.js spackled +2018/IsConcatSpreadable.js spackled +2018/IsConstructor.js spackled +2018/IsDataDescriptor.js spackled +2018/IsExtensible.js spackled +2018/IsGenericDescriptor.js spackled +2018/IsInteger.js spackled +2018/IsPromise.js spackled +2018/IsPropertyKey.js spackled +2018/IsRegExp.js spackled +2018/IterableToList.js spackled +2018/IteratorClose.js spackled +2018/IteratorComplete.js spackled +2018/IteratorNext.js spackled +2018/IteratorStep.js spackled +2018/IteratorValue.js spackled +2018/MakeDate.js spackled +2018/MakeDay.js spackled +2018/MakeTime.js spackled +2018/MinFromTime.js spackled +2018/MonthFromTime.js spackled +2018/ObjectCreate.js spackled +2018/OrdinaryDefineOwnProperty.js spackled +2018/OrdinaryGetOwnProperty.js spackled +2018/OrdinaryGetPrototypeOf.js spackled +2018/OrdinaryHasInstance.js spackled +2018/OrdinaryHasProperty.js spackled +2018/OrdinarySetPrototypeOf.js spackled +2018/RegExpExec.js spackled +2018/RequireObjectCoercible.js spackled +2018/SameValue.js spackled +2018/SameValueNonNumber.js spackled +2018/SameValueZero.js spackled +2018/SecFromTime.js spackled +2018/Set.js spackled +2018/SetFunctionName.js spackled +2018/SetIntegrityLevel.js spackled +2018/SpeciesConstructor.js spackled +2018/StrictEqualityComparison.js spackled +2018/SymbolDescriptiveString.js spackled +2018/TestIntegrityLevel.js spackled +2018/TimeClip.js spackled +2018/TimeFromYear.js spackled +2018/TimeWithinDay.js spackled +2018/ToBoolean.js spackled +2018/ToDateString.js spackled +2018/ToIndex.js spackled +2018/ToInt16.js spackled +2018/ToInt32.js spackled +2018/ToInt8.js spackled +2018/ToInteger.js spackled +2018/ToLength.js spackled +2018/ToNumber.js spackled +2018/ToObject.js spackled +2018/ToPrimitive.js spackled +2018/ToPropertyDescriptor.js spackled +2018/ToPropertyKey.js spackled +2018/ToString.js spackled +2018/ToUint16.js spackled +2018/ToUint32.js spackled +2018/ToUint8.js spackled +2018/ToUint8Clamp.js spackled +2018/Type.js spackled +2018/ValidateAndApplyPropertyDescriptor.js spackled +2018/WeekDay.js spackled +2018/YearFromTime.js spackled +2018/modulo.js spackled +2018/msFromTime.js spackled +2018/thisBooleanValue.js spackled +2018/thisNumberValue.js spackled +2018/thisStringValue.js spackled +2018/thisTimeValue.js spackled +2019/AbstractEqualityComparison.js spackled +2019/AbstractRelationalComparison.js spackled +2019/AdvanceStringIndex.js spackled +2019/ArrayCreate.js spackled +2019/ArraySetLength.js spackled +2019/ArraySpeciesCreate.js spackled +2019/Call.js spackled +2019/CanonicalNumericIndexString.js spackled +2019/CompletePropertyDescriptor.js spackled +2019/CopyDataProperties.js spackled +2019/CreateDataProperty.js spackled +2019/CreateDataPropertyOrThrow.js spackled +2019/CreateHTML.js spackled +2019/CreateIterResultObject.js spackled +2019/CreateListFromArrayLike.js spackled +2019/CreateMethodProperty.js spackled +2019/DateFromTime.js spackled +2019/DateString.js spackled +2019/Day.js spackled +2019/DayFromYear.js spackled +2019/DayWithinYear.js spackled +2019/DaysInYear.js spackled +2019/DefinePropertyOrThrow.js spackled +2019/DeletePropertyOrThrow.js spackled +2019/EnumerableOwnPropertyNames.js spackled +2019/FromPropertyDescriptor.js spackled +2019/Get.js spackled +2019/GetIterator.js spackled +2019/GetMethod.js spackled +2019/GetOwnPropertyKeys.js spackled +2019/GetPrototypeFromConstructor.js spackled +2019/GetSubstitution.js spackled +2019/GetV.js spackled +2019/HasOwnProperty.js spackled +2019/HasProperty.js spackled +2019/HourFromTime.js spackled +2019/InLeapYear.js spackled +2019/InstanceofOperator.js spackled +2019/Invoke.js spackled +2019/IsAccessorDescriptor.js spackled +2019/IsArray.js spackled +2019/IsCallable.js spackled +2019/IsConcatSpreadable.js spackled +2019/IsConstructor.js spackled +2019/IsDataDescriptor.js spackled +2019/IsExtensible.js spackled +2019/IsGenericDescriptor.js spackled +2019/IsInteger.js spackled +2019/IsPromise.js spackled +2019/IsPropertyKey.js spackled +2019/IsRegExp.js spackled +2019/IsStringPrefix.js spackled +2019/IterableToList.js spackled +2019/IteratorClose.js spackled +2019/IteratorComplete.js spackled +2019/IteratorNext.js spackled +2019/IteratorStep.js spackled +2019/IteratorValue.js spackled +2019/MakeDate.js spackled +2019/MakeDay.js spackled +2019/MakeTime.js spackled +2019/MinFromTime.js spackled +2019/MonthFromTime.js spackled +2019/NumberToString.js spackled +2019/ObjectCreate.js spackled +2019/OrdinaryDefineOwnProperty.js spackled +2019/OrdinaryGetOwnProperty.js spackled +2019/OrdinaryGetPrototypeOf.js spackled +2019/OrdinaryHasInstance.js spackled +2019/OrdinaryHasProperty.js spackled +2019/OrdinarySetPrototypeOf.js spackled +2019/PromiseResolve.js spackled +2019/RegExpExec.js spackled +2019/RequireObjectCoercible.js spackled +2019/SameValue.js spackled +2019/SameValueNonNumber.js spackled +2019/SameValueZero.js spackled +2019/SecFromTime.js spackled +2019/Set.js spackled +2019/SetFunctionName.js spackled +2019/SetIntegrityLevel.js spackled +2019/SpeciesConstructor.js spackled +2019/StrictEqualityComparison.js spackled +2019/SymbolDescriptiveString.js spackled +2019/TestIntegrityLevel.js spackled +2019/TimeClip.js spackled +2019/TimeFromYear.js spackled +2019/TimeString.js spackled +2019/TimeWithinDay.js spackled +2019/ToBoolean.js spackled +2019/ToDateString.js spackled +2019/ToIndex.js spackled +2019/ToInt16.js spackled +2019/ToInt32.js spackled +2019/ToInt8.js spackled +2019/ToInteger.js spackled +2019/ToLength.js spackled +2019/ToNumber.js spackled +2019/ToObject.js spackled +2019/ToPrimitive.js spackled +2019/ToPropertyDescriptor.js spackled +2019/ToPropertyKey.js spackled +2019/ToString.js spackled +2019/ToUint16.js spackled +2019/ToUint32.js spackled +2019/ToUint8.js spackled +2019/ToUint8Clamp.js spackled +2019/Type.js spackled +2019/ValidateAndApplyPropertyDescriptor.js spackled +2019/WeekDay.js spackled +2019/YearFromTime.js spackled +2019/modulo.js spackled +2019/msFromTime.js spackled +2019/thisBooleanValue.js spackled +2019/thisNumberValue.js spackled +2019/thisStringValue.js spackled +2019/thisSymbolValue.js spackled \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/es-abstract/.github/FUNDING.yml b/tic-tac-toe-app/node_modules/es-abstract/.github/FUNDING.yml new file mode 100644 index 0000000..beeb7a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-abstract +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with a single custom sponsorship URL diff --git a/tic-tac-toe-app/node_modules/es-abstract/.github/workflows/rebase.yml b/tic-tac-toe-app/node_modules/es-abstract/.github/workflows/rebase.yml new file mode 100644 index 0000000..436cb79 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.github/workflows/rebase.yml @@ -0,0 +1,15 @@ +name: Automatic Rebase + +on: [pull_request] + +jobs: + _: + name: "Automatic Rebase" + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - uses: ljharb/rebase@master + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/tic-tac-toe-app/node_modules/es-abstract/.nycrc b/tic-tac-toe-app/node_modules/es-abstract/.nycrc new file mode 100644 index 0000000..d316b4d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.nycrc @@ -0,0 +1,14 @@ +{ + "all": true, + "check-coverage": false, + "reporter": ["text-summary", "text", "html", "json"], + "lines": 86, + "statements": 85.93, + "functions": 82.43, + "branches": 76.06, + "exclude": [ + "coverage", + "operations", + "test" + ] +} diff --git a/tic-tac-toe-app/node_modules/es-abstract/.travis.yml b/tic-tac-toe-app/node_modules/es-abstract/.travis.yml new file mode 100644 index 0000000..5c34024 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/.travis.yml @@ -0,0 +1,32 @@ +version: ~> 1.0 +language: node_js +os: + - linux +cache: + directories: + - "$HOME/.npm" + - "$(nvm cache dir)" + - "$(nvm_version_path $(nvm_version_remote 0.4))" + - "$(nvm_version_path $(nvm_version_remote 0.6))" + - "$(nvm_version_path $(nvm_version_remote 0.10))" +import: + - ljharb/travis-ci:node/all.yml + - ljharb/travis-ci:node/pretest.yml + - ljharb/travis-ci:node/posttest.yml +script: + - 'if [ -n "${COVERAGE-}" ]; then npm run coverage && bash <(curl -s https://codecov.io/bash) -f coverage/*.json; fi' +matrix: + include: + - node_js: "8" + env: COVERAGE=true + - node_js: "4" + env: COVERAGE=true + - node_js: "0.12" + env: COVERAGE=true + - node_js: "0.8" + env: COVERAGE=true + exclude: + - node_js: "0.12" + env: TEST=true + - node_js: "0.8" + env: TEST=true diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/AbstractEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2015/AbstractEqualityComparison.js new file mode 100644 index 0000000..40b3909 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/AbstractEqualityComparison.js @@ -0,0 +1,37 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison + +module.exports = function AbstractEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType === yType) { + return x === y; // ES6+ specified this shortcut anyways. + } + if (x == null && y == null) { + return true; + } + if (xType === 'Number' && yType === 'String') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if (xType === 'String' && yType === 'Number') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (xType === 'Boolean') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (yType === 'Boolean') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') { + return AbstractEqualityComparison(x, ToPrimitive(y)); + } + if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) { + return AbstractEqualityComparison(ToPrimitive(x), y); + } + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/AbstractRelationalComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2015/AbstractRelationalComparison.js new file mode 100644 index 0000000..bc7ca83 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/AbstractRelationalComparison.js @@ -0,0 +1,66 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Number = GetIntrinsic('%Number%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var isPrefixOf = require('../helpers/isPrefixOf'); + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 + +// eslint-disable-next-line max-statements +module.exports = function AbstractRelationalComparison(x, y, LeftFirst) { + if (Type(LeftFirst) !== 'Boolean') { + throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean'); + } + var px; + var py; + if (LeftFirst) { + px = ToPrimitive(x, $Number); + py = ToPrimitive(y, $Number); + } else { + py = ToPrimitive(y, $Number); + px = ToPrimitive(x, $Number); + } + var bothStrings = Type(px) === 'String' && Type(py) === 'String'; + if (!bothStrings) { + var nx = ToNumber(px); + var ny = ToNumber(py); + if ($isNaN(nx) || $isNaN(ny)) { + return undefined; + } + if ($isFinite(nx) && $isFinite(ny) && nx === ny) { + return false; + } + if (nx === 0 && ny === 0) { + return false; + } + if (nx === Infinity) { + return false; + } + if (ny === Infinity) { + return true; + } + if (ny === -Infinity) { + return false; + } + if (nx === -Infinity) { + return true; + } + return nx < ny; // by now, these are both nonzero, finite, and not equal + } + if (isPrefixOf(py, px)) { + return false; + } + if (isPrefixOf(px, py)) { + return true; + } + return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/AdvanceStringIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2015/AdvanceStringIndex.js new file mode 100644 index 0000000..666f578 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/AdvanceStringIndex.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $charCodeAt = require('../helpers/callBound')('String.prototype.charCodeAt'); + +// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex + +module.exports = function AdvanceStringIndex(S, index, unicode) { + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + if (!IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) { + throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53'); + } + if (Type(unicode) !== 'Boolean') { + throw new $TypeError('Assertion failed: `unicode` must be a Boolean'); + } + if (!unicode) { + return index + 1; + } + var length = S.length; + if ((index + 1) >= length) { + return index + 1; + } + + var first = $charCodeAt(S, index); + if (first < 0xD800 || first > 0xDBFF) { + return index + 1; + } + + var second = $charCodeAt(S, index + 1); + if (second < 0xDC00 || second > 0xDFFF) { + return index + 1; + } + + return index + 2; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ArrayCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ArrayCreate.js new file mode 100644 index 0000000..fc9a7cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ArrayCreate.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ArrayPrototype = GetIntrinsic('%Array.prototype%'); +var $RangeError = GetIntrinsic('%RangeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsInteger = require('./IsInteger'); + +var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1; + +var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || ( + // eslint-disable-next-line no-proto, no-negated-condition + [].__proto__ !== $ArrayPrototype + ? null + : function (O, proto) { + O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign + return O; + } +); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate + +module.exports = function ArrayCreate(length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0'); + } + if (length > MAX_ARRAY_LENGTH) { + throw new $RangeError('length is greater than (2**32 - 1)'); + } + var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype; + var A = []; // steps 5 - 7, and 9 + if (proto !== $ArrayPrototype) { // step 8 + if (!$setProto) { + throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]'); + } + $setProto(A, proto); + } + if (length !== 0) { // bypasses the need for step 2 + A.length = length; + } + /* step 10, the above as a shortcut for the below + OrdinaryDefineOwnProperty(A, 'length', { + '[[Configurable]]': false, + '[[Enumerable]]': false, + '[[Value]]': length, + '[[Writable]]': true + }); + */ + return A; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ArraySetLength.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ArraySetLength.js new file mode 100644 index 0000000..c9134c6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ArraySetLength.js @@ -0,0 +1,85 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var assign = require('object.assign'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsArray = require('./IsArray'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var ToUint32 = require('./ToUint32'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraysetlength + +// eslint-disable-next-line max-statements, max-lines-per-function +module.exports = function ArraySetLength(A, Desc) { + if (!IsArray(A)) { + throw new $TypeError('Assertion failed: A must be an Array'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!('[[Value]]' in Desc)) { + return OrdinaryDefineOwnProperty(A, 'length', Desc); + } + var newLenDesc = assign({}, Desc); + var newLen = ToUint32(Desc['[[Value]]']); + var numberLen = ToNumber(Desc['[[Value]]']); + if (newLen !== numberLen) { + throw new $RangeError('Invalid array length'); + } + newLenDesc['[[Value]]'] = newLen; + var oldLenDesc = OrdinaryGetOwnProperty(A, 'length'); + if (!IsDataDescriptor(oldLenDesc)) { + throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`'); + } + var oldLen = oldLenDesc['[[Value]]']; + if (newLen >= oldLen) { + return OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + } + if (!oldLenDesc['[[Writable]]']) { + return false; + } + var newWritable; + if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) { + newWritable = true; + } else { + newWritable = false; + newLenDesc['[[Writable]]'] = true; + } + var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + if (!succeeded) { + return false; + } + while (newLen < oldLen) { + oldLen -= 1; + // eslint-disable-next-line no-param-reassign + var deleteSucceeded = delete A[ToString(oldLen)]; + if (!deleteSucceeded) { + newLenDesc['[[Value]]'] = oldLen + 1; + if (!newWritable) { + newLenDesc['[[Writable]]'] = false; + OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + return false; + } + } + } + if (!newWritable) { + return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ArraySpeciesCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ArraySpeciesCreate.js new file mode 100644 index 0000000..98b9b56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ArraySpeciesCreate.js @@ -0,0 +1,46 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var IsConstructor = require('./IsConstructor'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate + +module.exports = function ArraySpeciesCreate(originalArray, length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: length must be an integer >= 0'); + } + var len = length === 0 ? 0 : length; + var C; + var isArray = IsArray(originalArray); + if (isArray) { + C = Get(originalArray, 'constructor'); + // TODO: figure out how to make a cross-realm normal Array, a same-realm Array + // if (IsConstructor(C)) { + // if C is another realm's Array, C = undefined + // Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ? + // } + if ($species && Type(C) === 'Object') { + C = Get(C, $species); + if (C === null) { + C = void 0; + } + } + } + if (typeof C === 'undefined') { + return $Array(len); + } + if (!IsConstructor(C)) { + throw new $TypeError('C must be a constructor'); + } + return new C(len); // Construct(C, len); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/Call.js b/tic-tac-toe-app/node_modules/es-abstract/2015/Call.js new file mode 100644 index 0000000..f31960d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/Call.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsCallable = require('./IsCallable'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-call + +module.exports = function Call(F, V) { + var args = arguments.length > 2 ? arguments[2] : []; + if (!IsCallable(F)) { + throw new $TypeError(inspect(F) + ' is not a function'); + } + return F.apply(V, args); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CanonicalNumericIndexString.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CanonicalNumericIndexString.js new file mode 100644 index 0000000..625f853 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CanonicalNumericIndexString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring + +module.exports = function CanonicalNumericIndexString(argument) { + if (Type(argument) !== 'String') { + throw new $TypeError('Assertion failed: `argument` must be a String'); + } + if (argument === '-0') { return -0; } + var n = ToNumber(argument); + if (SameValue(ToString(n), argument)) { return n; } + return void 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CompletePropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CompletePropertyDescriptor.js new file mode 100644 index 0000000..548bf41 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CompletePropertyDescriptor.js @@ -0,0 +1,39 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor + +module.exports = function CompletePropertyDescriptor(Desc) { + /* eslint no-param-reassign: 0 */ + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (!has(Desc, '[[Value]]')) { + Desc['[[Value]]'] = void 0; + } + if (!has(Desc, '[[Writable]]')) { + Desc['[[Writable]]'] = false; + } + } else { + if (!has(Desc, '[[Get]]')) { + Desc['[[Get]]'] = void 0; + } + if (!has(Desc, '[[Set]]')) { + Desc['[[Set]]'] = void 0; + } + } + if (!has(Desc, '[[Enumerable]]')) { + Desc['[[Enumerable]]'] = false; + } + if (!has(Desc, '[[Configurable]]')) { + Desc['[[Configurable]]'] = false; + } + return Desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataProperty.js new file mode 100644 index 0000000..32a86ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataProperty.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty + +module.exports = function CreateDataProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var oldDesc = OrdinaryGetOwnProperty(O, P); + var extensible = !oldDesc || IsExtensible(O); + var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']); + if (immutable || !extensible) { + return false; + } + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': true, + '[[Enumerable]]': true, + '[[Value]]': V, + '[[Writable]]': true + } + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataPropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataPropertyOrThrow.js new file mode 100644 index 0000000..9feaec8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateDataPropertyOrThrow.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var CreateDataProperty = require('./CreateDataProperty'); +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow + +module.exports = function CreateDataPropertyOrThrow(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var success = CreateDataProperty(O, P, V); + if (!success) { + throw new $TypeError('unable to create data property'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CreateHTML.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateHTML.js new file mode 100644 index 0000000..536c92d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateHTML.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $replace = callBound('String.prototype.replace'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml + +module.exports = function CreateHTML(string, tag, attribute, value) { + if (Type(tag) !== 'String' || Type(attribute) !== 'String') { + throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings'); + } + var str = RequireObjectCoercible(string); + var S = ToString(str); + var p1 = '<' + tag; + if (attribute !== '') { + var V = ToString(value); + var escapedV = $replace(V, /\x22/g, '"'); + p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22'; + } + return p1 + '>' + S + ''; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CreateIterResultObject.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateIterResultObject.js new file mode 100644 index 0000000..aef1d22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateIterResultObject.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject + +module.exports = function CreateIterResultObject(value, done) { + if (Type(done) !== 'Boolean') { + throw new $TypeError('Assertion failed: Type(done) is not Boolean'); + } + return { + value: value, + done: done + }; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CreateListFromArrayLike.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateListFromArrayLike.js new file mode 100644 index 0000000..d6b44b5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateListFromArrayLike.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBound = require('../helpers/callBound'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf'); +var $push = callBound('Array.prototype.push'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToLength = require('./ToLength'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike +module.exports = function CreateListFromArrayLike(obj) { + var elementTypes = arguments.length > 1 + ? arguments[1] + : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object']; + + if (Type(obj) !== 'Object') { + throw new $TypeError('Assertion failed: `obj` must be an Object'); + } + if (!IsArray(elementTypes)) { + throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array'); + } + var len = ToLength(Get(obj, 'length')); + var list = []; + var index = 0; + while (index < len) { + var indexName = ToString(index); + var next = Get(obj, indexName); + var nextType = Type(next); + if ($indexOf(elementTypes, nextType) < 0) { + throw new $TypeError('item type ' + nextType + ' is not a valid elementType'); + } + $push(list, next); + index += 1; + } + return list; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/CreateMethodProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateMethodProperty.js new file mode 100644 index 0000000..5b599ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/CreateMethodProperty.js @@ -0,0 +1,40 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createmethodproperty + +module.exports = function CreateMethodProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var newDesc = { + '[[Configurable]]': true, + '[[Enumerable]]': false, + '[[Value]]': V, + '[[Writable]]': true + }; + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + newDesc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/DateFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/DateFromTime.js new file mode 100644 index 0000000..962dba1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/DateFromTime.js @@ -0,0 +1,54 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); +var MonthFromTime = require('./MonthFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5 + +module.exports = function DateFromTime(t) { + var m = MonthFromTime(t); + var d = DayWithinYear(t); + if (m === 0) { + return d + 1; + } + if (m === 1) { + return d - 30; + } + var leap = InLeapYear(t); + if (m === 2) { + return d - 58 - leap; + } + if (m === 3) { + return d - 89 - leap; + } + if (m === 4) { + return d - 119 - leap; + } + if (m === 5) { + return d - 150 - leap; + } + if (m === 6) { + return d - 180 - leap; + } + if (m === 7) { + return d - 211 - leap; + } + if (m === 8) { + return d - 242 - leap; + } + if (m === 9) { + return d - 272 - leap; + } + if (m === 10) { + return d - 303 - leap; + } + if (m === 11) { + return d - 333 - leap; + } + throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/Day.js b/tic-tac-toe-app/node_modules/es-abstract/2015/Day.js new file mode 100644 index 0000000..00df813 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/Day.js @@ -0,0 +1,13 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function Day(t) { + return $floor(t / msPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/DayFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2015/DayFromYear.js new file mode 100644 index 0000000..08dd5af --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/DayFromYear.js @@ -0,0 +1,12 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DayFromYear(y) { + return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/DayWithinYear.js b/tic-tac-toe-app/node_modules/es-abstract/2015/DayWithinYear.js new file mode 100644 index 0000000..cfc4002 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/DayWithinYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var Day = require('./Day'); +var DayFromYear = require('./DayFromYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function DayWithinYear(t) { + return Day(t) - DayFromYear(YearFromTime(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/DaysInYear.js b/tic-tac-toe-app/node_modules/es-abstract/2015/DaysInYear.js new file mode 100644 index 0000000..db32251 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/DaysInYear.js @@ -0,0 +1,18 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DaysInYear(y) { + if (mod(y, 4) !== 0) { + return 365; + } + if (mod(y, 100) !== 0) { + return 366; + } + if (mod(y, 400) !== 0) { + return 365; + } + return 366; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/DefinePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2015/DefinePropertyOrThrow.js new file mode 100644 index 0000000..7977f6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/DefinePropertyOrThrow.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow + +module.exports = function DefinePropertyOrThrow(O, P, desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var Desc = isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, desc) ? desc : ToPropertyDescriptor(desc); + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor'); + } + + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/DeletePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2015/DeletePropertyOrThrow.js new file mode 100644 index 0000000..b476817 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/DeletePropertyOrThrow.js @@ -0,0 +1,27 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow + +module.exports = function DeletePropertyOrThrow(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // eslint-disable-next-line no-param-reassign + var success = delete O[P]; + if (!success) { + throw new $TypeError('Attempt to delete property failed.'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/EnumerableOwnNames.js b/tic-tac-toe-app/node_modules/es-abstract/2015/EnumerableOwnNames.js new file mode 100644 index 0000000..d068584 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/EnumerableOwnNames.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var keys = require('object-keys'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-enumerableownnames + +module.exports = function EnumerableOwnNames(O) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + return keys(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/FromPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/FromPropertyDescriptor.js new file mode 100644 index 0000000..5ec200e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/FromPropertyDescriptor.js @@ -0,0 +1,36 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor + +module.exports = function FromPropertyDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return Desc; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + var obj = {}; + if ('[[Value]]' in Desc) { + obj.value = Desc['[[Value]]']; + } + if ('[[Writable]]' in Desc) { + obj.writable = Desc['[[Writable]]']; + } + if ('[[Get]]' in Desc) { + obj.get = Desc['[[Get]]']; + } + if ('[[Set]]' in Desc) { + obj.set = Desc['[[Set]]']; + } + if ('[[Enumerable]]' in Desc) { + obj.enumerable = Desc['[[Enumerable]]']; + } + if ('[[Configurable]]' in Desc) { + obj.configurable = Desc['[[Configurable]]']; + } + return obj; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/Get.js b/tic-tac-toe-app/node_modules/es-abstract/2015/Get.js new file mode 100644 index 0000000..5b9ad78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/Get.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +/** + * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p + * 1. Assert: Type(O) is Object. + * 2. Assert: IsPropertyKey(P) is true. + * 3. Return O.[[Get]](P, O). + */ + +module.exports = function Get(O, P) { + // 7.3.1.1 + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + // 7.3.1.2 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P)); + } + // 7.3.1.3 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/GetIterator.js b/tic-tac-toe-app/node_modules/es-abstract/2015/GetIterator.js new file mode 100644 index 0000000..7beddac --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/GetIterator.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getIteratorMethod = require('../helpers/getIteratorMethod'); +var AdvanceStringIndex = require('./AdvanceStringIndex'); +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsArray = require('./IsArray'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getiterator + +module.exports = function GetIterator(obj, method) { + var actualMethod = method; + if (arguments.length < 2) { + actualMethod = getIteratorMethod( + { + AdvanceStringIndex: AdvanceStringIndex, + GetMethod: GetMethod, + IsArray: IsArray, + Type: Type + }, + obj + ); + } + var iterator = Call(actualMethod, obj); + if (Type(iterator) !== 'Object') { + throw new $TypeError('iterator must return an object'); + } + + return iterator; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/GetMethod.js b/tic-tac-toe-app/node_modules/es-abstract/2015/GetMethod.js new file mode 100644 index 0000000..aef8cbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/GetMethod.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var GetV = require('./GetV'); +var IsCallable = require('./IsCallable'); +var IsPropertyKey = require('./IsPropertyKey'); + +/** + * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let func be GetV(O, P). + * 3. ReturnIfAbrupt(func). + * 4. If func is either undefined or null, return undefined. + * 5. If IsCallable(func) is false, throw a TypeError exception. + * 6. Return func. + */ + +module.exports = function GetMethod(O, P) { + // 7.3.9.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.9.2 + var func = GetV(O, P); + + // 7.3.9.4 + if (func == null) { + return void 0; + } + + // 7.3.9.5 + if (!IsCallable(func)) { + throw new $TypeError(P + 'is not a function'); + } + + // 7.3.9.6 + return func; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/GetOwnPropertyKeys.js b/tic-tac-toe-app/node_modules/es-abstract/2015/GetOwnPropertyKeys.js new file mode 100644 index 0000000..8d7e5ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/GetOwnPropertyKeys.js @@ -0,0 +1,31 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var hasSymbols = require('has-symbols')(); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%'); +var keys = require('object-keys'); + +var esType = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys + +module.exports = function GetOwnPropertyKeys(O, Type) { + if (esType(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (Type === 'Symbol') { + return $gOPS ? $gOPS(O) : []; + } + if (Type === 'String') { + if (!$gOPN) { + return keys(O); + } + return $gOPN(O); + } + throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js new file mode 100644 index 0000000..62da8fb --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/GetPrototypeFromConstructor.js @@ -0,0 +1,28 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Function = GetIntrinsic('%Function%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor + +module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { + var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic + if (!IsConstructor(constructor)) { + throw new $TypeError('Assertion failed: `constructor` must be a constructor'); + } + var proto = Get(constructor, 'prototype'); + if (Type(proto) !== 'Object') { + if (!(constructor instanceof $Function)) { + // ignore other realms, for now + throw new $TypeError('cross-realm constructors not currently supported'); + } + proto = intrinsic; + } + return proto; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/GetSubstitution.js b/tic-tac-toe-app/node_modules/es-abstract/2015/GetSubstitution.js new file mode 100644 index 0000000..de41b01 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/GetSubstitution.js @@ -0,0 +1,104 @@ + +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $parseInt = GetIntrinsic('%parseInt%'); + +var inspect = require('object-inspect'); + +var regexTester = require('../helpers/regexTester'); +var callBound = require('../helpers/callBound'); +var every = require('../helpers/every'); + +var isDigit = regexTester(/^[0-9]$/); + +var $charAt = callBound('String.prototype.charAt'); +var $strSlice = callBound('String.prototype.slice'); + +var IsArray = require('./IsArray'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false + +var isStringOrHole = function (capture, index, arr) { + return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined'); +}; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getsubstitution + +// eslint-disable-next-line max-statements, max-params, max-lines-per-function +module.exports = function GetSubstitution(matched, str, position, captures, replacement) { + if (Type(matched) !== 'String') { + throw new $TypeError('Assertion failed: `matched` must be a String'); + } + var matchLength = matched.length; + + if (Type(str) !== 'String') { + throw new $TypeError('Assertion failed: `str` must be a String'); + } + var stringLength = str.length; + + if (!IsInteger(position) || position < 0 || position > stringLength) { + throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position)); + } + + if (!IsArray(captures) || !every(captures, isStringOrHole)) { + throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures)); + } + + if (Type(replacement) !== 'String') { + throw new $TypeError('Assertion failed: `replacement` must be a String'); + } + + var tailPos = position + matchLength; + var m = captures.length; + + var result = ''; + for (var i = 0; i < replacement.length; i += 1) { + // if this is a $, and it's not the end of the replacement + var current = $charAt(replacement, i); + var isLast = (i + 1) >= replacement.length; + var nextIsLast = (i + 2) >= replacement.length; + if (current === '$' && !isLast) { + var next = $charAt(replacement, i + 1); + if (next === '$') { + result += '$'; + i += 1; + } else if (next === '&') { + result += matched; + i += 1; + } else if (next === '`') { + result += position === 0 ? '' : $strSlice(str, 0, position - 1); + i += 1; + } else if (next === "'") { + result += tailPos >= stringLength ? '' : $strSlice(str, tailPos); + i += 1; + } else { + var nextNext = nextIsLast ? null : $charAt(replacement, i + 2); + if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) { + // $1 through $9, and not followed by a digit + var n = $parseInt(next, 10); + // if (n > m, impl-defined) + result += (n <= m && Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1]; + i += 1; + } else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) { + // $00 through $99 + var nn = next + nextNext; + var nnI = $parseInt(nn, 10) - 1; + // if nn === '00' or nn > m, impl-defined + result += (nn <= m && Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI]; + i += 2; + } else { + result += '$'; + } + } + } else { + // the final $, or else not a $ + result += $charAt(replacement, i); + } + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/GetV.js b/tic-tac-toe-app/node_modules/es-abstract/2015/GetV.js new file mode 100644 index 0000000..7b5139a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/GetV.js @@ -0,0 +1,29 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var ToObject = require('./ToObject'); + +/** + * 7.3.2 GetV (V, P) + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let O be ToObject(V). + * 3. ReturnIfAbrupt(O). + * 4. Return O.[[Get]](P, V). + */ + +module.exports = function GetV(V, P) { + // 7.3.2.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.2.2-3 + var O = ToObject(V); + + // 7.3.2.4 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/HasOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2015/HasOwnProperty.js new file mode 100644 index 0000000..679059f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/HasOwnProperty.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var has = require('has'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty + +module.exports = function HasOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return has(O, P); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/HasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2015/HasProperty.js new file mode 100644 index 0000000..5f2d212 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/HasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty + +module.exports = function HasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/HourFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/HourFromTime.js new file mode 100644 index 0000000..957ce32 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/HourFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerHour = timeConstants.msPerHour; +var HoursPerDay = timeConstants.HoursPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function HourFromTime(t) { + return mod($floor(t / msPerHour), HoursPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/InLeapYear.js b/tic-tac-toe-app/node_modules/es-abstract/2015/InLeapYear.js new file mode 100644 index 0000000..38ba8fd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/InLeapYear.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DaysInYear = require('./DaysInYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function InLeapYear(t) { + var days = DaysInYear(YearFromTime(t)); + if (days === 365) { + return 0; + } + if (days === 366) { + return 1; + } + throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/InstanceofOperator.js b/tic-tac-toe-app/node_modules/es-abstract/2015/InstanceofOperator.js new file mode 100644 index 0000000..ebd308c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/InstanceofOperator.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $hasInstance = GetIntrinsic('Symbol.hasInstance', true); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var OrdinaryHasInstance = require('./OrdinaryHasInstance'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator + +module.exports = function InstanceofOperator(O, C) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0; + if (typeof instOfHandler !== 'undefined') { + return ToBoolean(Call(instOfHandler, C, [O])); + } + if (!IsCallable(C)) { + throw new $TypeError('`C` is not Callable'); + } + return OrdinaryHasInstance(C, O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/Invoke.js b/tic-tac-toe-app/node_modules/es-abstract/2015/Invoke.js new file mode 100644 index 0000000..769f0e3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/Invoke.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $arraySlice = require('../helpers/callBound')('Array.prototype.slice'); + +var Call = require('./Call'); +var GetV = require('./GetV'); +var IsPropertyKey = require('./IsPropertyKey'); + +// https://ecma-international.org/ecma-262/6.0/#sec-invoke + +module.exports = function Invoke(O, P) { + if (!IsPropertyKey(P)) { + throw new $TypeError('P must be a Property Key'); + } + var argumentsList = $arraySlice(arguments, 2); + var func = GetV(O, P); + return Call(func, O, argumentsList); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsAccessorDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsAccessorDescriptor.js new file mode 100644 index 0000000..5139464 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsAccessorDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor + +module.exports = function IsAccessorDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsArray.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsArray.js new file mode 100644 index 0000000..7b25f37 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsArray.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); + +// eslint-disable-next-line global-require +var toStr = !$Array.isArray && require('../helpers/callBound')('Object.prototype.toString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray + +module.exports = $Array.isArray || function IsArray(argument) { + return toStr(argument) === '[object Array]'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsCallable.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsCallable.js new file mode 100644 index 0000000..e4bfa36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsCallable.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11 + +module.exports = require('is-callable'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsConcatSpreadable.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsConcatSpreadable.js new file mode 100644 index 0000000..dc8aae1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsConcatSpreadable.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable + +module.exports = function IsConcatSpreadable(O) { + if (Type(O) !== 'Object') { + return false; + } + if ($isConcatSpreadable) { + var spreadable = Get(O, $isConcatSpreadable); + if (typeof spreadable !== 'undefined') { + return ToBoolean(spreadable); + } + } + return IsArray(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsConstructor.js new file mode 100644 index 0000000..00ea52c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsConstructor.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor + +module.exports = function IsConstructor(argument) { + return typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument` +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsDataDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsDataDescriptor.js new file mode 100644 index 0000000..0ad3045 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsDataDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor + +module.exports = function IsDataDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsExtensible.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsExtensible.js new file mode 100644 index 0000000..0c4c8a6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsExtensible.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var isPrimitive = require('../helpers/isPrimitive'); + +var $preventExtensions = $Object.preventExtensions; +var $isExtensible = $Object.isExtensible; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o + +module.exports = $preventExtensions + ? function IsExtensible(obj) { + return !isPrimitive(obj) && $isExtensible(obj); + } + : function IsExtensible(obj) { + return !isPrimitive(obj); + }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsGenericDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsGenericDescriptor.js new file mode 100644 index 0000000..8618ce4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsGenericDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor + +module.exports = function IsGenericDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) { + return true; + } + + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsInteger.js new file mode 100644 index 0000000..0f488b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsInteger.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isinteger + +module.exports = function IsInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var abs = $abs(argument); + return $floor(abs) === abs; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsPromise.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsPromise.js new file mode 100644 index 0000000..e8e92a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsPromise.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $PromiseThen = callBound('Promise.prototype.then', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise + +module.exports = function IsPromise(x) { + if (Type(x) !== 'Object') { + return false; + } + if (!$PromiseThen) { // Promises are not supported + return false; + } + try { + $PromiseThen(x); // throws if not a promise + } catch (e) { + return false; + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyDescriptor.js new file mode 100644 index 0000000..2a96c63 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyDescriptor.js @@ -0,0 +1,17 @@ +'use strict'; + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var Type = require('./Type'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); + +// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type + +module.exports = function IsPropertyDescriptor(Desc) { + return isPropertyDescriptor({ + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor, + Type: Type + }, Desc); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyKey.js new file mode 100644 index 0000000..74b8d95 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsPropertyKey.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey + +module.exports = function IsPropertyKey(argument) { + return typeof argument === 'string' || typeof argument === 'symbol'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IsRegExp.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IsRegExp.js new file mode 100644 index 0000000..fdf2323 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IsRegExp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $match = GetIntrinsic('%Symbol.match%', true); + +var hasRegExpMatcher = require('is-regex'); + +var ToBoolean = require('./ToBoolean'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isregexp + +module.exports = function IsRegExp(argument) { + if (!argument || typeof argument !== 'object') { + return false; + } + if ($match) { + var isRegExp = argument[$match]; + if (typeof isRegExp !== 'undefined') { + return ToBoolean(isRegExp); + } + } + return hasRegExpMatcher(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorClose.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorClose.js new file mode 100644 index 0000000..35c8c2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorClose.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose + +module.exports = function IteratorClose(iterator, completion) { + if (Type(iterator) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterator) is not Object'); + } + if (!IsCallable(completion)) { + throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record'); + } + var completionThunk = completion; + + var iteratorReturn = GetMethod(iterator, 'return'); + + if (typeof iteratorReturn === 'undefined') { + return completionThunk(); + } + + var completionRecord; + try { + var innerResult = Call(iteratorReturn, iterator, []); + } catch (e) { + // if we hit here, then "e" is the innerResult completion that needs re-throwing + + // if the completion is of type "throw", this will throw. + completionThunk(); + completionThunk = null; // ensure it's not called twice. + + // if not, then return the innerResult completion + throw e; + } + completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does + completionThunk = null; // ensure it's not called twice. + + if (Type(innerResult) !== 'Object') { + throw new $TypeError('iterator .return must return an object'); + } + + return completionRecord; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorComplete.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorComplete.js new file mode 100644 index 0000000..a62b9bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorComplete.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete + +module.exports = function IteratorComplete(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return ToBoolean(Get(iterResult, 'done')); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorNext.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorNext.js new file mode 100644 index 0000000..7e59915 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorNext.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Invoke = require('./Invoke'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext + +module.exports = function IteratorNext(iterator, value) { + var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]); + if (Type(result) !== 'Object') { + throw new $TypeError('iterator next must return an object'); + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorStep.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorStep.js new file mode 100644 index 0000000..41b9d1b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorStep.js @@ -0,0 +1,13 @@ +'use strict'; + +var IteratorComplete = require('./IteratorComplete'); +var IteratorNext = require('./IteratorNext'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep + +module.exports = function IteratorStep(iterator) { + var result = IteratorNext(iterator); + var done = IteratorComplete(result); + return done === true ? false : result; +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorValue.js b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorValue.js new file mode 100644 index 0000000..5e71a44 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/IteratorValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue + +module.exports = function IteratorValue(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return Get(iterResult, 'value'); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/MakeDate.js b/tic-tac-toe-app/node_modules/es-abstract/2015/MakeDate.js new file mode 100644 index 0000000..7b592d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/MakeDate.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13 + +module.exports = function MakeDate(day, time) { + if (!$isFinite(day) || !$isFinite(time)) { + return NaN; + } + return (day * msPerDay) + time; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/MakeDay.js b/tic-tac-toe-app/node_modules/es-abstract/2015/MakeDay.js new file mode 100644 index 0000000..f1ab810 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/MakeDay.js @@ -0,0 +1,33 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); +var $DateUTC = GetIntrinsic('%Date.UTC%'); + +var mod = require('../helpers/mod'); +var $isFinite = require('../helpers/isFinite'); + +var DateFromTime = require('./DateFromTime'); +var Day = require('./Day'); +var MonthFromTime = require('./MonthFromTime'); +var ToInteger = require('./ToInteger'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12 + +module.exports = function MakeDay(year, month, date) { + if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) { + return NaN; + } + var y = ToInteger(year); + var m = ToInteger(month); + var dt = ToInteger(date); + var ym = y + $floor(m / 12); + var mn = mod(m, 12); + var t = $DateUTC(ym, mn, 1); + if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) { + return NaN; + } + return Day(t) + dt - 1; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/MakeTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/MakeTime.js new file mode 100644 index 0000000..e118500 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/MakeTime.js @@ -0,0 +1,23 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var msPerMinute = timeConstants.msPerMinute; +var msPerHour = timeConstants.msPerHour; + +var ToInteger = require('./ToInteger'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11 + +module.exports = function MakeTime(hour, min, sec, ms) { + if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) { + return NaN; + } + var h = ToInteger(hour); + var m = ToInteger(min); + var s = ToInteger(sec); + var milli = ToInteger(ms); + var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli; + return t; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/MinFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/MinFromTime.js new file mode 100644 index 0000000..e80e191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/MinFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerMinute = timeConstants.msPerMinute; +var MinutesPerHour = timeConstants.MinutesPerHour; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function MinFromTime(t) { + return mod($floor(t / msPerMinute), MinutesPerHour); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/MonthFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/MonthFromTime.js new file mode 100644 index 0000000..4f120f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/MonthFromTime.js @@ -0,0 +1,47 @@ +'use strict'; + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function MonthFromTime(t) { + var day = DayWithinYear(t); + if (0 <= day && day < 31) { + return 0; + } + var leap = InLeapYear(t); + if (31 <= day && day < (59 + leap)) { + return 1; + } + if ((59 + leap) <= day && day < (90 + leap)) { + return 2; + } + if ((90 + leap) <= day && day < (120 + leap)) { + return 3; + } + if ((120 + leap) <= day && day < (151 + leap)) { + return 4; + } + if ((151 + leap) <= day && day < (181 + leap)) { + return 5; + } + if ((181 + leap) <= day && day < (212 + leap)) { + return 6; + } + if ((212 + leap) <= day && day < (243 + leap)) { + return 7; + } + if ((243 + leap) <= day && day < (273 + leap)) { + return 8; + } + if ((273 + leap) <= day && day < (304 + leap)) { + return 9; + } + if ((304 + leap) <= day && day < (334 + leap)) { + return 10; + } + if ((334 + leap) <= day && day < (365 + leap)) { + return 11; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ObjectCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ObjectCreate.js new file mode 100644 index 0000000..e2445b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ObjectCreate.js @@ -0,0 +1,37 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ObjectCreate = GetIntrinsic('%Object.create%', true); +var $TypeError = GetIntrinsic('%TypeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); + +var Type = require('./Type'); + +var hasProto = !({ __proto__: null } instanceof Object); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate + +module.exports = function ObjectCreate(proto, internalSlotsList) { + if (proto !== null && Type(proto) !== 'Object') { + throw new $TypeError('Assertion failed: `proto` must be null or an object'); + } + var slots = arguments.length < 2 ? [] : internalSlotsList; + if (slots.length > 0) { + throw new $SyntaxError('es-abstract does not yet support internal slots'); + } + + if ($ObjectCreate) { + return $ObjectCreate(proto); + } + if (hasProto) { + return { __proto__: proto }; + } + + if (proto === null) { + throw new $SyntaxError('native Object.create support is required to create null objects'); + } + var T = function T() {}; + T.prototype = proto; + return new T(); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js new file mode 100644 index 0000000..59780b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryDefineOwnProperty.js @@ -0,0 +1,61 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); +var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty + +module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!$gOPD) { + // ES3/IE 8 fallback + if (IsAccessorDescriptor(Desc)) { + throw new $SyntaxError('This environment does not support accessor property descriptors.'); + } + var creatingNormalDataProperty = !(P in O) + && Desc['[[Writable]]'] + && Desc['[[Enumerable]]'] + && Desc['[[Configurable]]'] + && '[[Value]]' in Desc; + var settingExistingDataProperty = (P in O) + && (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]']) + && (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]']) + && (!('[[Writable]]' in Desc) || Desc['[[Writable]]']) + && '[[Value]]' in Desc; + if (creatingNormalDataProperty || settingExistingDataProperty) { + O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign + return SameValue(O[P], Desc['[[Value]]']); + } + throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties'); + } + var desc = $gOPD(O, P); + var current = desc && ToPropertyDescriptor(desc); + var extensible = IsExtensible(O); + return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js new file mode 100644 index 0000000..b9882e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryGetOwnProperty.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +var has = require('has'); + +var IsArray = require('./IsArray'); +var IsPropertyKey = require('./IsPropertyKey'); +var IsRegExp = require('./IsRegExp'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty + +module.exports = function OrdinaryGetOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!has(O, P)) { + return void 0; + } + if (!$gOPD) { + // ES3 / IE 8 fallback + var arrayLength = IsArray(O) && P === 'length'; + var regexLastIndex = IsRegExp(O) && P === 'lastIndex'; + return { + '[[Configurable]]': !(arrayLength || regexLastIndex), + '[[Enumerable]]': $isEnumerable(O, P), + '[[Value]]': O[P], + '[[Writable]]': true + }; + } + return ToPropertyDescriptor($gOPD(O, P)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasInstance.js b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasInstance.js new file mode 100644 index 0000000..51abe26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasInstance.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance + +module.exports = function OrdinaryHasInstance(C, O) { + if (IsCallable(C) === false) { + return false; + } + if (Type(O) !== 'Object') { + return false; + } + var P = Get(C, 'prototype'); + if (Type(P) !== 'Object') { + throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.'); + } + return O instanceof C; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasProperty.js new file mode 100644 index 0000000..076c25a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/OrdinaryHasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty + +module.exports = function OrdinaryHasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/RegExpExec.js b/tic-tac-toe-app/node_modules/es-abstract/2015/RegExpExec.js new file mode 100644 index 0000000..15c9186 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/RegExpExec.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var regexExec = require('../helpers/callBound')('RegExp.prototype.exec'); + +var Call = require('./Call'); +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec + +module.exports = function RegExpExec(R, S) { + if (Type(R) !== 'Object') { + throw new $TypeError('Assertion failed: `R` must be an Object'); + } + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + var exec = Get(R, 'exec'); + if (IsCallable(exec)) { + var result = Call(exec, R, [S]); + if (result === null || Type(result) === 'Object') { + return result; + } + throw new $TypeError('"exec" method must return `null` or an Object'); + } + return regexExec(R, S); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/RequireObjectCoercible.js b/tic-tac-toe-app/node_modules/es-abstract/2015/RequireObjectCoercible.js new file mode 100644 index 0000000..9008359 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/RequireObjectCoercible.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../5/CheckObjectCoercible'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/SameValue.js b/tic-tac-toe-app/node_modules/es-abstract/2015/SameValue.js new file mode 100644 index 0000000..47c936d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/SameValue.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12 + +module.exports = function SameValue(x, y) { + if (x === y) { // 0 === -0, but they are not identical. + if (x === 0) { return 1 / x === 1 / y; } + return true; + } + return $isNaN(x) && $isNaN(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/SameValueZero.js b/tic-tac-toe-app/node_modules/es-abstract/2015/SameValueZero.js new file mode 100644 index 0000000..0dedcd2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/SameValueZero.js @@ -0,0 +1,9 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-samevaluezero + +module.exports = function SameValueZero(x, y) { + return (x === y) || ($isNaN(x) && $isNaN(y)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/SecFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/SecFromTime.js new file mode 100644 index 0000000..7190011 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/SecFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var SecondsPerMinute = timeConstants.SecondsPerMinute; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function SecFromTime(t) { + return mod($floor(t / msPerSecond), SecondsPerMinute); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/Set.js b/tic-tac-toe-app/node_modules/es-abstract/2015/Set.js new file mode 100644 index 0000000..18ebd99 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/Set.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw + +module.exports = function Set(O, P, V, Throw) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + if (Type(Throw) !== 'Boolean') { + throw new $TypeError('Assertion failed: `Throw` must be a Boolean'); + } + if (Throw) { + O[P] = V; // eslint-disable-line no-param-reassign + return true; + } else { + try { + O[P] = V; // eslint-disable-line no-param-reassign + } catch (e) { + return false; + } + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/SetFunctionName.js b/tic-tac-toe-app/node_modules/es-abstract/2015/SetFunctionName.js new file mode 100644 index 0000000..f93324a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/SetFunctionName.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var has = require('has'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getSymbolDescription = require('../helpers/getSymbolDescription'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsExtensible = require('./IsExtensible'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname + +module.exports = function SetFunctionName(F, name) { + if (typeof F !== 'function') { + throw new $TypeError('Assertion failed: `F` must be a function'); + } + if (!IsExtensible(F) || has(F, 'name')) { + throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property'); + } + var nameType = Type(name); + if (nameType !== 'Symbol' && nameType !== 'String') { + throw new $TypeError('Assertion failed: `name` must be a Symbol or a String'); + } + if (nameType === 'Symbol') { + var description = getSymbolDescription(name); + // eslint-disable-next-line no-param-reassign + name = typeof description === 'undefined' ? '' : '[' + description + ']'; + } + if (arguments.length > 2) { + var prefix = arguments[2]; + // eslint-disable-next-line no-param-reassign + name = prefix + ' ' + name; + } + return DefinePropertyOrThrow(F, 'name', { + '[[Value]]': name, + '[[Writable]]': false, + '[[Enumerable]]': false, + '[[Configurable]]': true + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/SetIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2015/SetIntegrityLevel.js new file mode 100644 index 0000000..3d5c81d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/SetIntegrityLevel.js @@ -0,0 +1,57 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); +var $preventExtensions = GetIntrinsic('%Object.preventExtensions%'); +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); + +var forEach = require('../helpers/forEach'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel + +module.exports = function SetIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + if (!$preventExtensions) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support'); + } + var status = $preventExtensions(O); + if (!status) { + return false; + } + if (!$gOPN) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support'); + } + var theKeys = $gOPN(O); + if (level === 'sealed') { + forEach(theKeys, function (k) { + DefinePropertyOrThrow(O, k, { configurable: false }); + }); + } else if (level === 'frozen') { + forEach(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + var desc; + if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) { + desc = { configurable: false }; + } else { + desc = { configurable: false, writable: false }; + } + DefinePropertyOrThrow(O, k, desc); + } + }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/SpeciesConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/SpeciesConstructor.js new file mode 100644 index 0000000..3cdcd74 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/SpeciesConstructor.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor + +module.exports = function SpeciesConstructor(O, defaultConstructor) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var C = O.constructor; + if (typeof C === 'undefined') { + return defaultConstructor; + } + if (Type(C) !== 'Object') { + throw new $TypeError('O.constructor is not an Object'); + } + var S = $species ? C[$species] : void 0; + if (S == null) { + return defaultConstructor; + } + if (IsConstructor(S)) { + return S; + } + throw new $TypeError('no constructor found'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/StrictEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2015/StrictEqualityComparison.js new file mode 100644 index 0000000..eea5df3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/StrictEqualityComparison.js @@ -0,0 +1,17 @@ +'use strict'; + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 + +module.exports = function StrictEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType !== yType) { + return false; + } + if (xType === 'Undefined' || xType === 'Null') { + return true; + } + return x === y; // shortcut for steps 4-7 +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/SymbolDescriptiveString.js b/tic-tac-toe-app/node_modules/es-abstract/2015/SymbolDescriptiveString.js new file mode 100644 index 0000000..7bd8191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/SymbolDescriptiveString.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $SymbolToString = callBound('Symbol.prototype.toString', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring + +module.exports = function SymbolDescriptiveString(sym) { + if (Type(sym) !== 'Symbol') { + throw new $TypeError('Assertion failed: `sym` must be a Symbol'); + } + return $SymbolToString(sym); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/TestIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2015/TestIntegrityLevel.js new file mode 100644 index 0000000..7a57397 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/TestIntegrityLevel.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var every = require('../helpers/every'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-testintegritylevel + +module.exports = function TestIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + var status = IsExtensible(O); + if (status) { + return false; + } + var theKeys = $gOPN(O); + return theKeys.length === 0 || every(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + if (currentDesc.configurable) { + return false; + } + if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) { + return false; + } + } + return true; + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/TimeClip.js b/tic-tac-toe-app/node_modules/es-abstract/2015/TimeClip.js new file mode 100644 index 0000000..57aa08c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/TimeClip.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); +var $Number = GetIntrinsic('%Number%'); +var $abs = GetIntrinsic('%Math.abs%'); + +var $isFinite = require('../helpers/isFinite'); + +var ToNumber = require('./ToNumber'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14 + +module.exports = function TimeClip(time) { + if (!$isFinite(time) || $abs(time) > 8.64e15) { + return NaN; + } + return $Number(new $Date(ToNumber(time))); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/TimeFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2015/TimeFromYear.js new file mode 100644 index 0000000..df646c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/TimeFromYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +var DayFromYear = require('./DayFromYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function TimeFromYear(y) { + return msPerDay * DayFromYear(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/TimeWithinDay.js b/tic-tac-toe-app/node_modules/es-abstract/2015/TimeWithinDay.js new file mode 100644 index 0000000..c5b21d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/TimeWithinDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function TimeWithinDay(t) { + return mod(t, msPerDay); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToBoolean.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToBoolean.js new file mode 100644 index 0000000..65d8737 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToBoolean.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 + +module.exports = function ToBoolean(value) { return !!value; }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToDateString.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToDateString.js new file mode 100644 index 0000000..7a6d4c4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToDateString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Date = GetIntrinsic('%Date%'); + +var $isNaN = require('../helpers/isNaN'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-todatestring + +module.exports = function ToDateString(tv) { + if (Type(tv) !== 'Number') { + throw new $TypeError('Assertion failed: `tv` must be a Number'); + } + if ($isNaN(tv)) { + return 'Invalid Date'; + } + return $Date(tv); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt16.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt16.js new file mode 100644 index 0000000..5a112c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt16.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint16 = require('./ToUint16'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint16 + +module.exports = function ToInt16(argument) { + var int16bit = ToUint16(argument); + return int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt32.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt32.js new file mode 100644 index 0000000..a8d2680 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.5 + +module.exports = function ToInt32(x) { + return ToNumber(x) >> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt8.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt8.js new file mode 100644 index 0000000..d103123 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInt8.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint8 = require('./ToUint8'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint8 + +module.exports = function ToInt8(argument) { + var int8bit = ToUint8(argument); + return int8bit >= 0x80 ? int8bit - 0x100 : int8bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInteger.js new file mode 100644 index 0000000..16f7db9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToInteger.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5ToInteger = require('../5/ToInteger'); + +var ToNumber = require('./ToNumber'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tointeger + +module.exports = function ToInteger(value) { + var number = ToNumber(value); + return ES5ToInteger(number); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToLength.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToLength.js new file mode 100644 index 0000000..1bef9be --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToLength.js @@ -0,0 +1,12 @@ +'use strict'; + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var ToInteger = require('./ToInteger'); + +module.exports = function ToLength(argument) { + var len = ToInteger(argument); + if (len <= 0) { return 0; } // includes converting -0 to +0 + if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; } + return len; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToNumber.js new file mode 100644 index 0000000..7a3cdc8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToNumber.js @@ -0,0 +1,59 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Number = GetIntrinsic('%Number%'); +var $RegExp = GetIntrinsic('%RegExp%'); +var $parseInteger = GetIntrinsic('%parseInt%'); + +var callBound = require('../helpers/callBound'); +var regexTester = require('../helpers/regexTester'); +var isPrimitive = require('../helpers/isPrimitive'); + +var $strSlice = callBound('String.prototype.slice'); +var isBinary = regexTester(/^0b[01]+$/i); +var isOctal = regexTester(/^0o[0-7]+$/i); +var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i); +var nonWS = ['\u0085', '\u200b', '\ufffe'].join(''); +var nonWSregex = new $RegExp('[' + nonWS + ']', 'g'); +var hasNonWS = regexTester(nonWSregex); + +// whitespace from: https://es5.github.io/#x15.5.4.20 +// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324 +var ws = [ + '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003', + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028', + '\u2029\uFEFF' +].join(''); +var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g'); +var $replace = callBound('String.prototype.replace'); +var $trim = function (value) { + return $replace(value, trimRegex, ''); +}; + +var ToPrimitive = require('./ToPrimitive'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tonumber + +module.exports = function ToNumber(argument) { + var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number); + if (typeof value === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a number'); + } + if (typeof value === 'string') { + if (isBinary(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 2)); + } else if (isOctal(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 8)); + } else if (hasNonWS(value) || isInvalidHexLiteral(value)) { + return NaN; + } else { + var trimmed = $trim(value); + if (trimmed !== value) { + return ToNumber(trimmed); + } + } + } + return $Number(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToObject.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToObject.js new file mode 100644 index 0000000..50d5b94 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToObject.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toobject + +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToPrimitive.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToPrimitive.js new file mode 100644 index 0000000..81c655d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToPrimitive.js @@ -0,0 +1,12 @@ +'use strict'; + +var toPrimitive = require('es-to-primitive/es2015'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive + +module.exports = function ToPrimitive(input) { + if (arguments.length > 1) { + return toPrimitive(input, arguments[1]); + } + return toPrimitive(input); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyDescriptor.js new file mode 100644 index 0000000..38e536e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyDescriptor.js @@ -0,0 +1,52 @@ +'use strict'; + +var has = require('has'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); +var ToBoolean = require('./ToBoolean'); +var IsCallable = require('./IsCallable'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5 + +module.exports = function ToPropertyDescriptor(Obj) { + if (Type(Obj) !== 'Object') { + throw new $TypeError('ToPropertyDescriptor requires an object'); + } + + var desc = {}; + if (has(Obj, 'enumerable')) { + desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable); + } + if (has(Obj, 'configurable')) { + desc['[[Configurable]]'] = ToBoolean(Obj.configurable); + } + if (has(Obj, 'value')) { + desc['[[Value]]'] = Obj.value; + } + if (has(Obj, 'writable')) { + desc['[[Writable]]'] = ToBoolean(Obj.writable); + } + if (has(Obj, 'get')) { + var getter = Obj.get; + if (typeof getter !== 'undefined' && !IsCallable(getter)) { + throw new TypeError('getter must be a function'); + } + desc['[[Get]]'] = getter; + } + if (has(Obj, 'set')) { + var setter = Obj.set; + if (typeof setter !== 'undefined' && !IsCallable(setter)) { + throw new $TypeError('setter must be a function'); + } + desc['[[Set]]'] = setter; + } + + if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) { + throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute'); + } + return desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyKey.js new file mode 100644 index 0000000..38f40dd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToPropertyKey.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +var ToPrimitive = require('./ToPrimitive'); +var ToString = require('./ToString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-topropertykey + +module.exports = function ToPropertyKey(argument) { + var key = ToPrimitive(argument, $String); + return typeof key === 'symbol' ? key : ToString(key); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToString.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToString.js new file mode 100644 index 0000000..a345431 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToString.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function ToString(argument) { + if (typeof argument === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a string'); + } + return $String(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint16.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint16.js new file mode 100644 index 0000000..c8a408b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint16.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.7 + +module.exports = function ToUint16(value) { + var number = ToNumber(value); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x10000); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint32.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint32.js new file mode 100644 index 0000000..3660f62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.6 + +module.exports = function ToUint32(x) { + return ToNumber(x) >>> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8.js new file mode 100644 index 0000000..bf84753 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +module.exports = function ToUint8(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x100); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8Clamp.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8Clamp.js new file mode 100644 index 0000000..c7f9f56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ToUint8Clamp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); + +var $floor = $Math.floor; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-touint8clamp + +module.exports = function ToUint8Clamp(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number <= 0) { return 0; } + if (number >= 0xFF) { return 0xFF; } + var f = $floor(argument); + if (f + 0.5 < number) { return f + 1; } + if (number < f + 0.5) { return f; } + if (f % 2 !== 0) { return f + 1; } + return f; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/Type.js b/tic-tac-toe-app/node_modules/es-abstract/2015/Type.js new file mode 100644 index 0000000..6c99376 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/Type.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5Type = require('../5/Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function Type(x) { + if (typeof x === 'symbol') { + return 'Symbol'; + } + return ES5Type(x); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/ValidateAndApplyPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2015/ValidateAndApplyPropertyDescriptor.js new file mode 100644 index 0000000..d4b9007 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/ValidateAndApplyPropertyDescriptor.js @@ -0,0 +1,170 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var isSamePropertyDescriptor = require('../helpers/isSamePropertyDescriptor'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-validateandapplypropertydescriptor +// https://www.ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor + +// eslint-disable-next-line max-lines-per-function, max-statements, max-params +module.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) { + // this uses the ES2017+ logic, since it fixes a number of bugs in the ES2015 logic. + var oType = Type(O); + if (oType !== 'Undefined' && oType !== 'Object') { + throw new $TypeError('Assertion failed: O must be undefined or an Object'); + } + if (Type(extensible) !== 'Boolean') { + throw new $TypeError('Assertion failed: extensible must be a Boolean'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (Type(current) !== 'Undefined' && !isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, current)) { + throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined'); + } + if (oType !== 'Undefined' && !IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: if O is not undefined, P must be a Property Key'); + } + if (Type(current) === 'Undefined') { + if (!extensible) { + return false; + } + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': Desc['[[Configurable]]'], + '[[Enumerable]]': Desc['[[Enumerable]]'], + '[[Value]]': Desc['[[Value]]'], + '[[Writable]]': Desc['[[Writable]]'] + } + ); + } + } else { + if (!IsAccessorDescriptor(Desc)) { + throw new $TypeError('Assertion failed: Desc is not an accessor descriptor'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + } + return true; + } + if (IsGenericDescriptor(Desc) && !('[[Configurable]]' in Desc) && !('[[Enumerable]]' in Desc)) { + return true; + } + if (isSamePropertyDescriptor({ SameValue: SameValue }, Desc, current)) { + return true; // removed by ES2017, but should still be correct + } + // "if every field in Desc is absent, return true" can't really match the assertion that it's a Property Descriptor + if (!current['[[Configurable]]']) { + if (Desc['[[Configurable]]']) { + return false; + } + if ('[[Enumerable]]' in Desc && !Desc['[[Enumerable]]'] === !!current['[[Enumerable]]']) { + return false; + } + } + if (IsGenericDescriptor(Desc)) { + // no further validation is required. + } else if (IsDataDescriptor(current) !== IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + return false; + } + if (IsDataDescriptor(current)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Get]]': undefined + } + ); + } + } else if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Value]]': undefined + } + ); + } + } else if (IsDataDescriptor(current) && IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]'] && !current['[[Writable]]']) { + if ('[[Writable]]' in Desc && Desc['[[Writable]]']) { + return false; + } + if ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) { + return false; + } + return true; + } + } else if (IsAccessorDescriptor(current) && IsAccessorDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + if ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) { + return false; + } + if ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) { + return false; + } + return true; + } + } else { + throw new $TypeError('Assertion failed: current and Desc are not both data, both accessors, or one accessor and one data.'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/WeekDay.js b/tic-tac-toe-app/node_modules/es-abstract/2015/WeekDay.js new file mode 100644 index 0000000..2973e02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/WeekDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +var Day = require('./Day'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6 + +module.exports = function WeekDay(t) { + return mod(Day(t) + 4, 7); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/YearFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/YearFromTime.js new file mode 100644 index 0000000..ff5339f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/YearFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); + +var callBound = require('../helpers/callBound'); + +var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function YearFromTime(t) { + // largest y such that this.TimeFromYear(y) <= t + return $getUTCFullYear(new $Date(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/modulo.js b/tic-tac-toe-app/node_modules/es-abstract/2015/modulo.js new file mode 100644 index 0000000..bc04c06 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/modulo.js @@ -0,0 +1,9 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-5.2 + +module.exports = function modulo(x, y) { + return mod(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/msFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2015/msFromTime.js new file mode 100644 index 0000000..c31eda0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/msFromTime.js @@ -0,0 +1,10 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerSecond = require('../helpers/timeConstants').msPerSecond; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function msFromTime(t) { + return mod(t, msPerSecond); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/thisBooleanValue.js b/tic-tac-toe-app/node_modules/es-abstract/2015/thisBooleanValue.js new file mode 100644 index 0000000..3ffac9c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/thisBooleanValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $BooleanValueOf = require('../helpers/callBound')('Boolean.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object + +module.exports = function thisBooleanValue(value) { + if (Type(value) === 'Boolean') { + return value; + } + + return $BooleanValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/thisNumberValue.js b/tic-tac-toe-app/node_modules/es-abstract/2015/thisNumberValue.js new file mode 100644 index 0000000..0345e52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/thisNumberValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var Type = require('./Type'); + +var $NumberValueOf = callBound('Number.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object + +module.exports = function thisNumberValue(value) { + if (Type(value) === 'Number') { + return value; + } + + return $NumberValueOf(value); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/thisStringValue.js b/tic-tac-toe-app/node_modules/es-abstract/2015/thisStringValue.js new file mode 100644 index 0000000..3b99b6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/thisStringValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $StringValueOf = require('../helpers/callBound')('String.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object + +module.exports = function thisStringValue(value) { + if (Type(value) === 'String') { + return value; + } + + return $StringValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2015/thisTimeValue.js b/tic-tac-toe-app/node_modules/es-abstract/2015/thisTimeValue.js new file mode 100644 index 0000000..d7cda28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2015/thisTimeValue.js @@ -0,0 +1,9 @@ +'use strict'; + +var $DateValueOf = require('../helpers/callBound')('Date.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object + +module.exports = function thisTimeValue(value) { + return $DateValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/AbstractEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2016/AbstractEqualityComparison.js new file mode 100644 index 0000000..40b3909 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/AbstractEqualityComparison.js @@ -0,0 +1,37 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison + +module.exports = function AbstractEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType === yType) { + return x === y; // ES6+ specified this shortcut anyways. + } + if (x == null && y == null) { + return true; + } + if (xType === 'Number' && yType === 'String') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if (xType === 'String' && yType === 'Number') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (xType === 'Boolean') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (yType === 'Boolean') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') { + return AbstractEqualityComparison(x, ToPrimitive(y)); + } + if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) { + return AbstractEqualityComparison(ToPrimitive(x), y); + } + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/AbstractRelationalComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2016/AbstractRelationalComparison.js new file mode 100644 index 0000000..bc7ca83 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/AbstractRelationalComparison.js @@ -0,0 +1,66 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Number = GetIntrinsic('%Number%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var isPrefixOf = require('../helpers/isPrefixOf'); + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 + +// eslint-disable-next-line max-statements +module.exports = function AbstractRelationalComparison(x, y, LeftFirst) { + if (Type(LeftFirst) !== 'Boolean') { + throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean'); + } + var px; + var py; + if (LeftFirst) { + px = ToPrimitive(x, $Number); + py = ToPrimitive(y, $Number); + } else { + py = ToPrimitive(y, $Number); + px = ToPrimitive(x, $Number); + } + var bothStrings = Type(px) === 'String' && Type(py) === 'String'; + if (!bothStrings) { + var nx = ToNumber(px); + var ny = ToNumber(py); + if ($isNaN(nx) || $isNaN(ny)) { + return undefined; + } + if ($isFinite(nx) && $isFinite(ny) && nx === ny) { + return false; + } + if (nx === 0 && ny === 0) { + return false; + } + if (nx === Infinity) { + return false; + } + if (ny === Infinity) { + return true; + } + if (ny === -Infinity) { + return false; + } + if (nx === -Infinity) { + return true; + } + return nx < ny; // by now, these are both nonzero, finite, and not equal + } + if (isPrefixOf(py, px)) { + return false; + } + if (isPrefixOf(px, py)) { + return true; + } + return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/AdvanceStringIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2016/AdvanceStringIndex.js new file mode 100644 index 0000000..666f578 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/AdvanceStringIndex.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $charCodeAt = require('../helpers/callBound')('String.prototype.charCodeAt'); + +// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex + +module.exports = function AdvanceStringIndex(S, index, unicode) { + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + if (!IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) { + throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53'); + } + if (Type(unicode) !== 'Boolean') { + throw new $TypeError('Assertion failed: `unicode` must be a Boolean'); + } + if (!unicode) { + return index + 1; + } + var length = S.length; + if ((index + 1) >= length) { + return index + 1; + } + + var first = $charCodeAt(S, index); + if (first < 0xD800 || first > 0xDBFF) { + return index + 1; + } + + var second = $charCodeAt(S, index + 1); + if (second < 0xDC00 || second > 0xDFFF) { + return index + 1; + } + + return index + 2; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ArrayCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ArrayCreate.js new file mode 100644 index 0000000..fc9a7cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ArrayCreate.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ArrayPrototype = GetIntrinsic('%Array.prototype%'); +var $RangeError = GetIntrinsic('%RangeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsInteger = require('./IsInteger'); + +var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1; + +var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || ( + // eslint-disable-next-line no-proto, no-negated-condition + [].__proto__ !== $ArrayPrototype + ? null + : function (O, proto) { + O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign + return O; + } +); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate + +module.exports = function ArrayCreate(length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0'); + } + if (length > MAX_ARRAY_LENGTH) { + throw new $RangeError('length is greater than (2**32 - 1)'); + } + var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype; + var A = []; // steps 5 - 7, and 9 + if (proto !== $ArrayPrototype) { // step 8 + if (!$setProto) { + throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]'); + } + $setProto(A, proto); + } + if (length !== 0) { // bypasses the need for step 2 + A.length = length; + } + /* step 10, the above as a shortcut for the below + OrdinaryDefineOwnProperty(A, 'length', { + '[[Configurable]]': false, + '[[Enumerable]]': false, + '[[Value]]': length, + '[[Writable]]': true + }); + */ + return A; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ArraySetLength.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ArraySetLength.js new file mode 100644 index 0000000..c9134c6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ArraySetLength.js @@ -0,0 +1,85 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var assign = require('object.assign'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsArray = require('./IsArray'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var ToUint32 = require('./ToUint32'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraysetlength + +// eslint-disable-next-line max-statements, max-lines-per-function +module.exports = function ArraySetLength(A, Desc) { + if (!IsArray(A)) { + throw new $TypeError('Assertion failed: A must be an Array'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!('[[Value]]' in Desc)) { + return OrdinaryDefineOwnProperty(A, 'length', Desc); + } + var newLenDesc = assign({}, Desc); + var newLen = ToUint32(Desc['[[Value]]']); + var numberLen = ToNumber(Desc['[[Value]]']); + if (newLen !== numberLen) { + throw new $RangeError('Invalid array length'); + } + newLenDesc['[[Value]]'] = newLen; + var oldLenDesc = OrdinaryGetOwnProperty(A, 'length'); + if (!IsDataDescriptor(oldLenDesc)) { + throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`'); + } + var oldLen = oldLenDesc['[[Value]]']; + if (newLen >= oldLen) { + return OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + } + if (!oldLenDesc['[[Writable]]']) { + return false; + } + var newWritable; + if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) { + newWritable = true; + } else { + newWritable = false; + newLenDesc['[[Writable]]'] = true; + } + var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + if (!succeeded) { + return false; + } + while (newLen < oldLen) { + oldLen -= 1; + // eslint-disable-next-line no-param-reassign + var deleteSucceeded = delete A[ToString(oldLen)]; + if (!deleteSucceeded) { + newLenDesc['[[Value]]'] = oldLen + 1; + if (!newWritable) { + newLenDesc['[[Writable]]'] = false; + OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + return false; + } + } + } + if (!newWritable) { + return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ArraySpeciesCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ArraySpeciesCreate.js new file mode 100644 index 0000000..98b9b56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ArraySpeciesCreate.js @@ -0,0 +1,46 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var IsConstructor = require('./IsConstructor'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate + +module.exports = function ArraySpeciesCreate(originalArray, length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: length must be an integer >= 0'); + } + var len = length === 0 ? 0 : length; + var C; + var isArray = IsArray(originalArray); + if (isArray) { + C = Get(originalArray, 'constructor'); + // TODO: figure out how to make a cross-realm normal Array, a same-realm Array + // if (IsConstructor(C)) { + // if C is another realm's Array, C = undefined + // Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ? + // } + if ($species && Type(C) === 'Object') { + C = Get(C, $species); + if (C === null) { + C = void 0; + } + } + } + if (typeof C === 'undefined') { + return $Array(len); + } + if (!IsConstructor(C)) { + throw new $TypeError('C must be a constructor'); + } + return new C(len); // Construct(C, len); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/Call.js b/tic-tac-toe-app/node_modules/es-abstract/2016/Call.js new file mode 100644 index 0000000..f31960d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/Call.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsCallable = require('./IsCallable'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-call + +module.exports = function Call(F, V) { + var args = arguments.length > 2 ? arguments[2] : []; + if (!IsCallable(F)) { + throw new $TypeError(inspect(F) + ' is not a function'); + } + return F.apply(V, args); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CanonicalNumericIndexString.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CanonicalNumericIndexString.js new file mode 100644 index 0000000..625f853 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CanonicalNumericIndexString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring + +module.exports = function CanonicalNumericIndexString(argument) { + if (Type(argument) !== 'String') { + throw new $TypeError('Assertion failed: `argument` must be a String'); + } + if (argument === '-0') { return -0; } + var n = ToNumber(argument); + if (SameValue(ToString(n), argument)) { return n; } + return void 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CompletePropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CompletePropertyDescriptor.js new file mode 100644 index 0000000..548bf41 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CompletePropertyDescriptor.js @@ -0,0 +1,39 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor + +module.exports = function CompletePropertyDescriptor(Desc) { + /* eslint no-param-reassign: 0 */ + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (!has(Desc, '[[Value]]')) { + Desc['[[Value]]'] = void 0; + } + if (!has(Desc, '[[Writable]]')) { + Desc['[[Writable]]'] = false; + } + } else { + if (!has(Desc, '[[Get]]')) { + Desc['[[Get]]'] = void 0; + } + if (!has(Desc, '[[Set]]')) { + Desc['[[Set]]'] = void 0; + } + } + if (!has(Desc, '[[Enumerable]]')) { + Desc['[[Enumerable]]'] = false; + } + if (!has(Desc, '[[Configurable]]')) { + Desc['[[Configurable]]'] = false; + } + return Desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataProperty.js new file mode 100644 index 0000000..32a86ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataProperty.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty + +module.exports = function CreateDataProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var oldDesc = OrdinaryGetOwnProperty(O, P); + var extensible = !oldDesc || IsExtensible(O); + var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']); + if (immutable || !extensible) { + return false; + } + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': true, + '[[Enumerable]]': true, + '[[Value]]': V, + '[[Writable]]': true + } + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataPropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataPropertyOrThrow.js new file mode 100644 index 0000000..9feaec8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateDataPropertyOrThrow.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var CreateDataProperty = require('./CreateDataProperty'); +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow + +module.exports = function CreateDataPropertyOrThrow(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var success = CreateDataProperty(O, P, V); + if (!success) { + throw new $TypeError('unable to create data property'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CreateHTML.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateHTML.js new file mode 100644 index 0000000..536c92d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateHTML.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $replace = callBound('String.prototype.replace'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml + +module.exports = function CreateHTML(string, tag, attribute, value) { + if (Type(tag) !== 'String' || Type(attribute) !== 'String') { + throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings'); + } + var str = RequireObjectCoercible(string); + var S = ToString(str); + var p1 = '<' + tag; + if (attribute !== '') { + var V = ToString(value); + var escapedV = $replace(V, /\x22/g, '"'); + p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22'; + } + return p1 + '>' + S + ''; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CreateIterResultObject.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateIterResultObject.js new file mode 100644 index 0000000..aef1d22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateIterResultObject.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject + +module.exports = function CreateIterResultObject(value, done) { + if (Type(done) !== 'Boolean') { + throw new $TypeError('Assertion failed: Type(done) is not Boolean'); + } + return { + value: value, + done: done + }; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CreateListFromArrayLike.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateListFromArrayLike.js new file mode 100644 index 0000000..d6b44b5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateListFromArrayLike.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBound = require('../helpers/callBound'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf'); +var $push = callBound('Array.prototype.push'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToLength = require('./ToLength'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike +module.exports = function CreateListFromArrayLike(obj) { + var elementTypes = arguments.length > 1 + ? arguments[1] + : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object']; + + if (Type(obj) !== 'Object') { + throw new $TypeError('Assertion failed: `obj` must be an Object'); + } + if (!IsArray(elementTypes)) { + throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array'); + } + var len = ToLength(Get(obj, 'length')); + var list = []; + var index = 0; + while (index < len) { + var indexName = ToString(index); + var next = Get(obj, indexName); + var nextType = Type(next); + if ($indexOf(elementTypes, nextType) < 0) { + throw new $TypeError('item type ' + nextType + ' is not a valid elementType'); + } + $push(list, next); + index += 1; + } + return list; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/CreateMethodProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateMethodProperty.js new file mode 100644 index 0000000..5b599ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/CreateMethodProperty.js @@ -0,0 +1,40 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createmethodproperty + +module.exports = function CreateMethodProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var newDesc = { + '[[Configurable]]': true, + '[[Enumerable]]': false, + '[[Value]]': V, + '[[Writable]]': true + }; + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + newDesc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/DateFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/DateFromTime.js new file mode 100644 index 0000000..962dba1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/DateFromTime.js @@ -0,0 +1,54 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); +var MonthFromTime = require('./MonthFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5 + +module.exports = function DateFromTime(t) { + var m = MonthFromTime(t); + var d = DayWithinYear(t); + if (m === 0) { + return d + 1; + } + if (m === 1) { + return d - 30; + } + var leap = InLeapYear(t); + if (m === 2) { + return d - 58 - leap; + } + if (m === 3) { + return d - 89 - leap; + } + if (m === 4) { + return d - 119 - leap; + } + if (m === 5) { + return d - 150 - leap; + } + if (m === 6) { + return d - 180 - leap; + } + if (m === 7) { + return d - 211 - leap; + } + if (m === 8) { + return d - 242 - leap; + } + if (m === 9) { + return d - 272 - leap; + } + if (m === 10) { + return d - 303 - leap; + } + if (m === 11) { + return d - 333 - leap; + } + throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/Day.js b/tic-tac-toe-app/node_modules/es-abstract/2016/Day.js new file mode 100644 index 0000000..00df813 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/Day.js @@ -0,0 +1,13 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function Day(t) { + return $floor(t / msPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/DayFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2016/DayFromYear.js new file mode 100644 index 0000000..08dd5af --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/DayFromYear.js @@ -0,0 +1,12 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DayFromYear(y) { + return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/DayWithinYear.js b/tic-tac-toe-app/node_modules/es-abstract/2016/DayWithinYear.js new file mode 100644 index 0000000..cfc4002 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/DayWithinYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var Day = require('./Day'); +var DayFromYear = require('./DayFromYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function DayWithinYear(t) { + return Day(t) - DayFromYear(YearFromTime(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/DaysInYear.js b/tic-tac-toe-app/node_modules/es-abstract/2016/DaysInYear.js new file mode 100644 index 0000000..db32251 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/DaysInYear.js @@ -0,0 +1,18 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DaysInYear(y) { + if (mod(y, 4) !== 0) { + return 365; + } + if (mod(y, 100) !== 0) { + return 366; + } + if (mod(y, 400) !== 0) { + return 365; + } + return 366; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/DefinePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2016/DefinePropertyOrThrow.js new file mode 100644 index 0000000..7977f6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/DefinePropertyOrThrow.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow + +module.exports = function DefinePropertyOrThrow(O, P, desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var Desc = isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, desc) ? desc : ToPropertyDescriptor(desc); + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor'); + } + + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/DeletePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2016/DeletePropertyOrThrow.js new file mode 100644 index 0000000..b476817 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/DeletePropertyOrThrow.js @@ -0,0 +1,27 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow + +module.exports = function DeletePropertyOrThrow(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // eslint-disable-next-line no-param-reassign + var success = delete O[P]; + if (!success) { + throw new $TypeError('Attempt to delete property failed.'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/EnumerableOwnNames.js b/tic-tac-toe-app/node_modules/es-abstract/2016/EnumerableOwnNames.js new file mode 100644 index 0000000..d068584 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/EnumerableOwnNames.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var keys = require('object-keys'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-enumerableownnames + +module.exports = function EnumerableOwnNames(O) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + return keys(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/FromPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/FromPropertyDescriptor.js new file mode 100644 index 0000000..5ec200e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/FromPropertyDescriptor.js @@ -0,0 +1,36 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor + +module.exports = function FromPropertyDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return Desc; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + var obj = {}; + if ('[[Value]]' in Desc) { + obj.value = Desc['[[Value]]']; + } + if ('[[Writable]]' in Desc) { + obj.writable = Desc['[[Writable]]']; + } + if ('[[Get]]' in Desc) { + obj.get = Desc['[[Get]]']; + } + if ('[[Set]]' in Desc) { + obj.set = Desc['[[Set]]']; + } + if ('[[Enumerable]]' in Desc) { + obj.enumerable = Desc['[[Enumerable]]']; + } + if ('[[Configurable]]' in Desc) { + obj.configurable = Desc['[[Configurable]]']; + } + return obj; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/Get.js b/tic-tac-toe-app/node_modules/es-abstract/2016/Get.js new file mode 100644 index 0000000..5b9ad78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/Get.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +/** + * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p + * 1. Assert: Type(O) is Object. + * 2. Assert: IsPropertyKey(P) is true. + * 3. Return O.[[Get]](P, O). + */ + +module.exports = function Get(O, P) { + // 7.3.1.1 + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + // 7.3.1.2 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P)); + } + // 7.3.1.3 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/GetIterator.js b/tic-tac-toe-app/node_modules/es-abstract/2016/GetIterator.js new file mode 100644 index 0000000..7beddac --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/GetIterator.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getIteratorMethod = require('../helpers/getIteratorMethod'); +var AdvanceStringIndex = require('./AdvanceStringIndex'); +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsArray = require('./IsArray'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getiterator + +module.exports = function GetIterator(obj, method) { + var actualMethod = method; + if (arguments.length < 2) { + actualMethod = getIteratorMethod( + { + AdvanceStringIndex: AdvanceStringIndex, + GetMethod: GetMethod, + IsArray: IsArray, + Type: Type + }, + obj + ); + } + var iterator = Call(actualMethod, obj); + if (Type(iterator) !== 'Object') { + throw new $TypeError('iterator must return an object'); + } + + return iterator; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/GetMethod.js b/tic-tac-toe-app/node_modules/es-abstract/2016/GetMethod.js new file mode 100644 index 0000000..aef8cbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/GetMethod.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var GetV = require('./GetV'); +var IsCallable = require('./IsCallable'); +var IsPropertyKey = require('./IsPropertyKey'); + +/** + * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let func be GetV(O, P). + * 3. ReturnIfAbrupt(func). + * 4. If func is either undefined or null, return undefined. + * 5. If IsCallable(func) is false, throw a TypeError exception. + * 6. Return func. + */ + +module.exports = function GetMethod(O, P) { + // 7.3.9.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.9.2 + var func = GetV(O, P); + + // 7.3.9.4 + if (func == null) { + return void 0; + } + + // 7.3.9.5 + if (!IsCallable(func)) { + throw new $TypeError(P + 'is not a function'); + } + + // 7.3.9.6 + return func; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/GetOwnPropertyKeys.js b/tic-tac-toe-app/node_modules/es-abstract/2016/GetOwnPropertyKeys.js new file mode 100644 index 0000000..8d7e5ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/GetOwnPropertyKeys.js @@ -0,0 +1,31 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var hasSymbols = require('has-symbols')(); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%'); +var keys = require('object-keys'); + +var esType = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys + +module.exports = function GetOwnPropertyKeys(O, Type) { + if (esType(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (Type === 'Symbol') { + return $gOPS ? $gOPS(O) : []; + } + if (Type === 'String') { + if (!$gOPN) { + return keys(O); + } + return $gOPN(O); + } + throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js new file mode 100644 index 0000000..62da8fb --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/GetPrototypeFromConstructor.js @@ -0,0 +1,28 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Function = GetIntrinsic('%Function%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor + +module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { + var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic + if (!IsConstructor(constructor)) { + throw new $TypeError('Assertion failed: `constructor` must be a constructor'); + } + var proto = Get(constructor, 'prototype'); + if (Type(proto) !== 'Object') { + if (!(constructor instanceof $Function)) { + // ignore other realms, for now + throw new $TypeError('cross-realm constructors not currently supported'); + } + proto = intrinsic; + } + return proto; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/GetSubstitution.js b/tic-tac-toe-app/node_modules/es-abstract/2016/GetSubstitution.js new file mode 100644 index 0000000..de41b01 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/GetSubstitution.js @@ -0,0 +1,104 @@ + +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $parseInt = GetIntrinsic('%parseInt%'); + +var inspect = require('object-inspect'); + +var regexTester = require('../helpers/regexTester'); +var callBound = require('../helpers/callBound'); +var every = require('../helpers/every'); + +var isDigit = regexTester(/^[0-9]$/); + +var $charAt = callBound('String.prototype.charAt'); +var $strSlice = callBound('String.prototype.slice'); + +var IsArray = require('./IsArray'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false + +var isStringOrHole = function (capture, index, arr) { + return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined'); +}; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getsubstitution + +// eslint-disable-next-line max-statements, max-params, max-lines-per-function +module.exports = function GetSubstitution(matched, str, position, captures, replacement) { + if (Type(matched) !== 'String') { + throw new $TypeError('Assertion failed: `matched` must be a String'); + } + var matchLength = matched.length; + + if (Type(str) !== 'String') { + throw new $TypeError('Assertion failed: `str` must be a String'); + } + var stringLength = str.length; + + if (!IsInteger(position) || position < 0 || position > stringLength) { + throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position)); + } + + if (!IsArray(captures) || !every(captures, isStringOrHole)) { + throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures)); + } + + if (Type(replacement) !== 'String') { + throw new $TypeError('Assertion failed: `replacement` must be a String'); + } + + var tailPos = position + matchLength; + var m = captures.length; + + var result = ''; + for (var i = 0; i < replacement.length; i += 1) { + // if this is a $, and it's not the end of the replacement + var current = $charAt(replacement, i); + var isLast = (i + 1) >= replacement.length; + var nextIsLast = (i + 2) >= replacement.length; + if (current === '$' && !isLast) { + var next = $charAt(replacement, i + 1); + if (next === '$') { + result += '$'; + i += 1; + } else if (next === '&') { + result += matched; + i += 1; + } else if (next === '`') { + result += position === 0 ? '' : $strSlice(str, 0, position - 1); + i += 1; + } else if (next === "'") { + result += tailPos >= stringLength ? '' : $strSlice(str, tailPos); + i += 1; + } else { + var nextNext = nextIsLast ? null : $charAt(replacement, i + 2); + if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) { + // $1 through $9, and not followed by a digit + var n = $parseInt(next, 10); + // if (n > m, impl-defined) + result += (n <= m && Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1]; + i += 1; + } else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) { + // $00 through $99 + var nn = next + nextNext; + var nnI = $parseInt(nn, 10) - 1; + // if nn === '00' or nn > m, impl-defined + result += (nn <= m && Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI]; + i += 2; + } else { + result += '$'; + } + } + } else { + // the final $, or else not a $ + result += $charAt(replacement, i); + } + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/GetV.js b/tic-tac-toe-app/node_modules/es-abstract/2016/GetV.js new file mode 100644 index 0000000..7b5139a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/GetV.js @@ -0,0 +1,29 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var ToObject = require('./ToObject'); + +/** + * 7.3.2 GetV (V, P) + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let O be ToObject(V). + * 3. ReturnIfAbrupt(O). + * 4. Return O.[[Get]](P, V). + */ + +module.exports = function GetV(V, P) { + // 7.3.2.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.2.2-3 + var O = ToObject(V); + + // 7.3.2.4 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/HasOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2016/HasOwnProperty.js new file mode 100644 index 0000000..679059f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/HasOwnProperty.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var has = require('has'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty + +module.exports = function HasOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return has(O, P); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/HasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2016/HasProperty.js new file mode 100644 index 0000000..5f2d212 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/HasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty + +module.exports = function HasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/HourFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/HourFromTime.js new file mode 100644 index 0000000..957ce32 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/HourFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerHour = timeConstants.msPerHour; +var HoursPerDay = timeConstants.HoursPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function HourFromTime(t) { + return mod($floor(t / msPerHour), HoursPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/InLeapYear.js b/tic-tac-toe-app/node_modules/es-abstract/2016/InLeapYear.js new file mode 100644 index 0000000..38ba8fd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/InLeapYear.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DaysInYear = require('./DaysInYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function InLeapYear(t) { + var days = DaysInYear(YearFromTime(t)); + if (days === 365) { + return 0; + } + if (days === 366) { + return 1; + } + throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/InstanceofOperator.js b/tic-tac-toe-app/node_modules/es-abstract/2016/InstanceofOperator.js new file mode 100644 index 0000000..ebd308c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/InstanceofOperator.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $hasInstance = GetIntrinsic('Symbol.hasInstance', true); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var OrdinaryHasInstance = require('./OrdinaryHasInstance'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator + +module.exports = function InstanceofOperator(O, C) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0; + if (typeof instOfHandler !== 'undefined') { + return ToBoolean(Call(instOfHandler, C, [O])); + } + if (!IsCallable(C)) { + throw new $TypeError('`C` is not Callable'); + } + return OrdinaryHasInstance(C, O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/Invoke.js b/tic-tac-toe-app/node_modules/es-abstract/2016/Invoke.js new file mode 100644 index 0000000..769f0e3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/Invoke.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $arraySlice = require('../helpers/callBound')('Array.prototype.slice'); + +var Call = require('./Call'); +var GetV = require('./GetV'); +var IsPropertyKey = require('./IsPropertyKey'); + +// https://ecma-international.org/ecma-262/6.0/#sec-invoke + +module.exports = function Invoke(O, P) { + if (!IsPropertyKey(P)) { + throw new $TypeError('P must be a Property Key'); + } + var argumentsList = $arraySlice(arguments, 2); + var func = GetV(O, P); + return Call(func, O, argumentsList); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsAccessorDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsAccessorDescriptor.js new file mode 100644 index 0000000..5139464 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsAccessorDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor + +module.exports = function IsAccessorDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsArray.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsArray.js new file mode 100644 index 0000000..7b25f37 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsArray.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); + +// eslint-disable-next-line global-require +var toStr = !$Array.isArray && require('../helpers/callBound')('Object.prototype.toString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray + +module.exports = $Array.isArray || function IsArray(argument) { + return toStr(argument) === '[object Array]'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsCallable.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsCallable.js new file mode 100644 index 0000000..e4bfa36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsCallable.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11 + +module.exports = require('is-callable'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsConcatSpreadable.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsConcatSpreadable.js new file mode 100644 index 0000000..dc8aae1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsConcatSpreadable.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable + +module.exports = function IsConcatSpreadable(O) { + if (Type(O) !== 'Object') { + return false; + } + if ($isConcatSpreadable) { + var spreadable = Get(O, $isConcatSpreadable); + if (typeof spreadable !== 'undefined') { + return ToBoolean(spreadable); + } + } + return IsArray(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsConstructor.js new file mode 100644 index 0000000..00ea52c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsConstructor.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor + +module.exports = function IsConstructor(argument) { + return typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument` +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsDataDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsDataDescriptor.js new file mode 100644 index 0000000..0ad3045 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsDataDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor + +module.exports = function IsDataDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsExtensible.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsExtensible.js new file mode 100644 index 0000000..0c4c8a6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsExtensible.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var isPrimitive = require('../helpers/isPrimitive'); + +var $preventExtensions = $Object.preventExtensions; +var $isExtensible = $Object.isExtensible; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o + +module.exports = $preventExtensions + ? function IsExtensible(obj) { + return !isPrimitive(obj) && $isExtensible(obj); + } + : function IsExtensible(obj) { + return !isPrimitive(obj); + }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsGenericDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsGenericDescriptor.js new file mode 100644 index 0000000..8618ce4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsGenericDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor + +module.exports = function IsGenericDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) { + return true; + } + + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsInteger.js new file mode 100644 index 0000000..0f488b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsInteger.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isinteger + +module.exports = function IsInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var abs = $abs(argument); + return $floor(abs) === abs; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsPromise.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsPromise.js new file mode 100644 index 0000000..e8e92a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsPromise.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $PromiseThen = callBound('Promise.prototype.then', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise + +module.exports = function IsPromise(x) { + if (Type(x) !== 'Object') { + return false; + } + if (!$PromiseThen) { // Promises are not supported + return false; + } + try { + $PromiseThen(x); // throws if not a promise + } catch (e) { + return false; + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyDescriptor.js new file mode 100644 index 0000000..2a96c63 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyDescriptor.js @@ -0,0 +1,17 @@ +'use strict'; + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var Type = require('./Type'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); + +// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type + +module.exports = function IsPropertyDescriptor(Desc) { + return isPropertyDescriptor({ + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor, + Type: Type + }, Desc); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyKey.js new file mode 100644 index 0000000..74b8d95 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsPropertyKey.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey + +module.exports = function IsPropertyKey(argument) { + return typeof argument === 'string' || typeof argument === 'symbol'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IsRegExp.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IsRegExp.js new file mode 100644 index 0000000..fdf2323 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IsRegExp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $match = GetIntrinsic('%Symbol.match%', true); + +var hasRegExpMatcher = require('is-regex'); + +var ToBoolean = require('./ToBoolean'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isregexp + +module.exports = function IsRegExp(argument) { + if (!argument || typeof argument !== 'object') { + return false; + } + if ($match) { + var isRegExp = argument[$match]; + if (typeof isRegExp !== 'undefined') { + return ToBoolean(isRegExp); + } + } + return hasRegExpMatcher(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IterableToArrayLike.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IterableToArrayLike.js new file mode 100644 index 0000000..2f26159 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IterableToArrayLike.js @@ -0,0 +1,74 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $iterator = GetIntrinsic('%Symbol.iterator%', true); + +var callBound = require('../helpers/callBound'); + +var $arrayJoin = callBound('Array.prototype.join'); +var $arrayPush = callBound('Array.prototype.push'); +var $stringSlice = callBound('String.prototype.slice'); +var $stringSplit = callBound('String.prototype.split'); + +var AdvanceStringIndex = require('./AdvanceStringIndex'); +var GetIterator = require('./GetIterator'); +var GetMethod = require('./GetMethod'); +var IsArray = require('./IsArray'); +var IteratorStep = require('./IteratorStep'); +var IteratorValue = require('./IteratorValue'); +var ToObject = require('./ToObject'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/7.0/#sec-iterabletoarraylike + +module.exports = function IterableToArrayLike(items) { + var usingIterator; + if ($iterator) { + usingIterator = GetMethod(items, $iterator); + } else if (IsArray(items)) { + usingIterator = function () { + var i = -1; + var arr = this; // eslint-disable-line no-invalid-this + return { + next: function () { + i += 1; + return { + done: i >= arr.length, + value: arr[i] + }; + } + }; + }; + } else if (Type(items) === 'String') { + usingIterator = function () { + var i = 0; + return { + next: function () { + var nextIndex = AdvanceStringIndex(items, i, true); + var value = $arrayJoin($stringSplit($stringSlice(items, i, nextIndex), ''), ''); + i = nextIndex; + return { + done: nextIndex > items.length, + value: value + }; + } + }; + }; + } + if (typeof usingIterator !== 'undefined') { + var iterator = GetIterator(items, usingIterator); + var values = []; + var next = true; + while (next) { + next = IteratorStep(iterator); + if (next) { + var nextValue = IteratorValue(next); + $arrayPush(values, nextValue); + } + } + return values; + } + + return ToObject(items); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorClose.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorClose.js new file mode 100644 index 0000000..35c8c2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorClose.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose + +module.exports = function IteratorClose(iterator, completion) { + if (Type(iterator) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterator) is not Object'); + } + if (!IsCallable(completion)) { + throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record'); + } + var completionThunk = completion; + + var iteratorReturn = GetMethod(iterator, 'return'); + + if (typeof iteratorReturn === 'undefined') { + return completionThunk(); + } + + var completionRecord; + try { + var innerResult = Call(iteratorReturn, iterator, []); + } catch (e) { + // if we hit here, then "e" is the innerResult completion that needs re-throwing + + // if the completion is of type "throw", this will throw. + completionThunk(); + completionThunk = null; // ensure it's not called twice. + + // if not, then return the innerResult completion + throw e; + } + completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does + completionThunk = null; // ensure it's not called twice. + + if (Type(innerResult) !== 'Object') { + throw new $TypeError('iterator .return must return an object'); + } + + return completionRecord; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorComplete.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorComplete.js new file mode 100644 index 0000000..a62b9bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorComplete.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete + +module.exports = function IteratorComplete(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return ToBoolean(Get(iterResult, 'done')); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorNext.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorNext.js new file mode 100644 index 0000000..7e59915 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorNext.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Invoke = require('./Invoke'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext + +module.exports = function IteratorNext(iterator, value) { + var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]); + if (Type(result) !== 'Object') { + throw new $TypeError('iterator next must return an object'); + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorStep.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorStep.js new file mode 100644 index 0000000..41b9d1b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorStep.js @@ -0,0 +1,13 @@ +'use strict'; + +var IteratorComplete = require('./IteratorComplete'); +var IteratorNext = require('./IteratorNext'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep + +module.exports = function IteratorStep(iterator) { + var result = IteratorNext(iterator); + var done = IteratorComplete(result); + return done === true ? false : result; +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorValue.js b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorValue.js new file mode 100644 index 0000000..5e71a44 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/IteratorValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue + +module.exports = function IteratorValue(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return Get(iterResult, 'value'); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/MakeDate.js b/tic-tac-toe-app/node_modules/es-abstract/2016/MakeDate.js new file mode 100644 index 0000000..7b592d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/MakeDate.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13 + +module.exports = function MakeDate(day, time) { + if (!$isFinite(day) || !$isFinite(time)) { + return NaN; + } + return (day * msPerDay) + time; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/MakeDay.js b/tic-tac-toe-app/node_modules/es-abstract/2016/MakeDay.js new file mode 100644 index 0000000..f1ab810 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/MakeDay.js @@ -0,0 +1,33 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); +var $DateUTC = GetIntrinsic('%Date.UTC%'); + +var mod = require('../helpers/mod'); +var $isFinite = require('../helpers/isFinite'); + +var DateFromTime = require('./DateFromTime'); +var Day = require('./Day'); +var MonthFromTime = require('./MonthFromTime'); +var ToInteger = require('./ToInteger'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12 + +module.exports = function MakeDay(year, month, date) { + if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) { + return NaN; + } + var y = ToInteger(year); + var m = ToInteger(month); + var dt = ToInteger(date); + var ym = y + $floor(m / 12); + var mn = mod(m, 12); + var t = $DateUTC(ym, mn, 1); + if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) { + return NaN; + } + return Day(t) + dt - 1; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/MakeTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/MakeTime.js new file mode 100644 index 0000000..e118500 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/MakeTime.js @@ -0,0 +1,23 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var msPerMinute = timeConstants.msPerMinute; +var msPerHour = timeConstants.msPerHour; + +var ToInteger = require('./ToInteger'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11 + +module.exports = function MakeTime(hour, min, sec, ms) { + if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) { + return NaN; + } + var h = ToInteger(hour); + var m = ToInteger(min); + var s = ToInteger(sec); + var milli = ToInteger(ms); + var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli; + return t; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/MinFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/MinFromTime.js new file mode 100644 index 0000000..e80e191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/MinFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerMinute = timeConstants.msPerMinute; +var MinutesPerHour = timeConstants.MinutesPerHour; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function MinFromTime(t) { + return mod($floor(t / msPerMinute), MinutesPerHour); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/MonthFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/MonthFromTime.js new file mode 100644 index 0000000..4f120f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/MonthFromTime.js @@ -0,0 +1,47 @@ +'use strict'; + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function MonthFromTime(t) { + var day = DayWithinYear(t); + if (0 <= day && day < 31) { + return 0; + } + var leap = InLeapYear(t); + if (31 <= day && day < (59 + leap)) { + return 1; + } + if ((59 + leap) <= day && day < (90 + leap)) { + return 2; + } + if ((90 + leap) <= day && day < (120 + leap)) { + return 3; + } + if ((120 + leap) <= day && day < (151 + leap)) { + return 4; + } + if ((151 + leap) <= day && day < (181 + leap)) { + return 5; + } + if ((181 + leap) <= day && day < (212 + leap)) { + return 6; + } + if ((212 + leap) <= day && day < (243 + leap)) { + return 7; + } + if ((243 + leap) <= day && day < (273 + leap)) { + return 8; + } + if ((273 + leap) <= day && day < (304 + leap)) { + return 9; + } + if ((304 + leap) <= day && day < (334 + leap)) { + return 10; + } + if ((334 + leap) <= day && day < (365 + leap)) { + return 11; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ObjectCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ObjectCreate.js new file mode 100644 index 0000000..e2445b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ObjectCreate.js @@ -0,0 +1,37 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ObjectCreate = GetIntrinsic('%Object.create%', true); +var $TypeError = GetIntrinsic('%TypeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); + +var Type = require('./Type'); + +var hasProto = !({ __proto__: null } instanceof Object); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate + +module.exports = function ObjectCreate(proto, internalSlotsList) { + if (proto !== null && Type(proto) !== 'Object') { + throw new $TypeError('Assertion failed: `proto` must be null or an object'); + } + var slots = arguments.length < 2 ? [] : internalSlotsList; + if (slots.length > 0) { + throw new $SyntaxError('es-abstract does not yet support internal slots'); + } + + if ($ObjectCreate) { + return $ObjectCreate(proto); + } + if (hasProto) { + return { __proto__: proto }; + } + + if (proto === null) { + throw new $SyntaxError('native Object.create support is required to create null objects'); + } + var T = function T() {}; + T.prototype = proto; + return new T(); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js new file mode 100644 index 0000000..59780b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryDefineOwnProperty.js @@ -0,0 +1,61 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); +var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty + +module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!$gOPD) { + // ES3/IE 8 fallback + if (IsAccessorDescriptor(Desc)) { + throw new $SyntaxError('This environment does not support accessor property descriptors.'); + } + var creatingNormalDataProperty = !(P in O) + && Desc['[[Writable]]'] + && Desc['[[Enumerable]]'] + && Desc['[[Configurable]]'] + && '[[Value]]' in Desc; + var settingExistingDataProperty = (P in O) + && (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]']) + && (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]']) + && (!('[[Writable]]' in Desc) || Desc['[[Writable]]']) + && '[[Value]]' in Desc; + if (creatingNormalDataProperty || settingExistingDataProperty) { + O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign + return SameValue(O[P], Desc['[[Value]]']); + } + throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties'); + } + var desc = $gOPD(O, P); + var current = desc && ToPropertyDescriptor(desc); + var extensible = IsExtensible(O); + return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js new file mode 100644 index 0000000..b9882e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetOwnProperty.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +var has = require('has'); + +var IsArray = require('./IsArray'); +var IsPropertyKey = require('./IsPropertyKey'); +var IsRegExp = require('./IsRegExp'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty + +module.exports = function OrdinaryGetOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!has(O, P)) { + return void 0; + } + if (!$gOPD) { + // ES3 / IE 8 fallback + var arrayLength = IsArray(O) && P === 'length'; + var regexLastIndex = IsRegExp(O) && P === 'lastIndex'; + return { + '[[Configurable]]': !(arrayLength || regexLastIndex), + '[[Enumerable]]': $isEnumerable(O, P), + '[[Value]]': O[P], + '[[Writable]]': true + }; + } + return ToPropertyDescriptor($gOPD(O, P)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetPrototypeOf.js new file mode 100644 index 0000000..344077a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryGetPrototypeOf.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $getProto = require('../helpers/getProto'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetprototypeof + +module.exports = function OrdinaryGetPrototypeOf(O) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!$getProto) { + throw new $TypeError('This environment does not support fetching prototypes.'); + } + return $getProto(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasInstance.js b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasInstance.js new file mode 100644 index 0000000..51abe26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasInstance.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance + +module.exports = function OrdinaryHasInstance(C, O) { + if (IsCallable(C) === false) { + return false; + } + if (Type(O) !== 'Object') { + return false; + } + var P = Get(C, 'prototype'); + if (Type(P) !== 'Object') { + throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.'); + } + return O instanceof C; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasProperty.js new file mode 100644 index 0000000..076c25a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinaryHasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty + +module.exports = function OrdinaryHasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js new file mode 100644 index 0000000..3541331 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/OrdinarySetPrototypeOf.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $setProto = require('../helpers/setProto'); + +var OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarysetprototypeof + +module.exports = function OrdinarySetPrototypeOf(O, V) { + if (Type(V) !== 'Object' && Type(V) !== 'Null') { + throw new $TypeError('Assertion failed: V must be Object or Null'); + } + /* + var extensible = IsExtensible(O); + var current = OrdinaryGetPrototypeOf(O); + if (SameValue(V, current)) { + return true; + } + if (!extensible) { + return false; + } + */ + try { + $setProto(O, V); + } catch (e) { + return false; + } + return OrdinaryGetPrototypeOf(O) === V; + /* + var p = V; + var done = false; + while (!done) { + if (p === null) { + done = true; + } else if (SameValue(p, O)) { + return false; + } else { + if (wat) { + done = true; + } else { + p = p.[[Prototype]]; + } + } + } + O.[[Prototype]] = V; + return true; + */ +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/RegExpExec.js b/tic-tac-toe-app/node_modules/es-abstract/2016/RegExpExec.js new file mode 100644 index 0000000..15c9186 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/RegExpExec.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var regexExec = require('../helpers/callBound')('RegExp.prototype.exec'); + +var Call = require('./Call'); +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec + +module.exports = function RegExpExec(R, S) { + if (Type(R) !== 'Object') { + throw new $TypeError('Assertion failed: `R` must be an Object'); + } + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + var exec = Get(R, 'exec'); + if (IsCallable(exec)) { + var result = Call(exec, R, [S]); + if (result === null || Type(result) === 'Object') { + return result; + } + throw new $TypeError('"exec" method must return `null` or an Object'); + } + return regexExec(R, S); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/RequireObjectCoercible.js b/tic-tac-toe-app/node_modules/es-abstract/2016/RequireObjectCoercible.js new file mode 100644 index 0000000..9008359 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/RequireObjectCoercible.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../5/CheckObjectCoercible'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SameValue.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SameValue.js new file mode 100644 index 0000000..47c936d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SameValue.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12 + +module.exports = function SameValue(x, y) { + if (x === y) { // 0 === -0, but they are not identical. + if (x === 0) { return 1 / x === 1 / y; } + return true; + } + return $isNaN(x) && $isNaN(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SameValueNonNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SameValueNonNumber.js new file mode 100644 index 0000000..5668752 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SameValueNonNumber.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); + +// https://www.ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber + +module.exports = function SameValueNonNumber(x, y) { + if (typeof x === 'number' || typeof x !== typeof y) { + throw new $TypeError('SameValueNonNumber requires two non-number values of the same type.'); + } + return SameValue(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SameValueZero.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SameValueZero.js new file mode 100644 index 0000000..0dedcd2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SameValueZero.js @@ -0,0 +1,9 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-samevaluezero + +module.exports = function SameValueZero(x, y) { + return (x === y) || ($isNaN(x) && $isNaN(y)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SecFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SecFromTime.js new file mode 100644 index 0000000..7190011 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SecFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var SecondsPerMinute = timeConstants.SecondsPerMinute; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function SecFromTime(t) { + return mod($floor(t / msPerSecond), SecondsPerMinute); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/Set.js b/tic-tac-toe-app/node_modules/es-abstract/2016/Set.js new file mode 100644 index 0000000..18ebd99 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/Set.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw + +module.exports = function Set(O, P, V, Throw) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + if (Type(Throw) !== 'Boolean') { + throw new $TypeError('Assertion failed: `Throw` must be a Boolean'); + } + if (Throw) { + O[P] = V; // eslint-disable-line no-param-reassign + return true; + } else { + try { + O[P] = V; // eslint-disable-line no-param-reassign + } catch (e) { + return false; + } + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SetFunctionName.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SetFunctionName.js new file mode 100644 index 0000000..f93324a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SetFunctionName.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var has = require('has'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getSymbolDescription = require('../helpers/getSymbolDescription'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsExtensible = require('./IsExtensible'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname + +module.exports = function SetFunctionName(F, name) { + if (typeof F !== 'function') { + throw new $TypeError('Assertion failed: `F` must be a function'); + } + if (!IsExtensible(F) || has(F, 'name')) { + throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property'); + } + var nameType = Type(name); + if (nameType !== 'Symbol' && nameType !== 'String') { + throw new $TypeError('Assertion failed: `name` must be a Symbol or a String'); + } + if (nameType === 'Symbol') { + var description = getSymbolDescription(name); + // eslint-disable-next-line no-param-reassign + name = typeof description === 'undefined' ? '' : '[' + description + ']'; + } + if (arguments.length > 2) { + var prefix = arguments[2]; + // eslint-disable-next-line no-param-reassign + name = prefix + ' ' + name; + } + return DefinePropertyOrThrow(F, 'name', { + '[[Value]]': name, + '[[Writable]]': false, + '[[Enumerable]]': false, + '[[Configurable]]': true + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SetIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SetIntegrityLevel.js new file mode 100644 index 0000000..3d5c81d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SetIntegrityLevel.js @@ -0,0 +1,57 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); +var $preventExtensions = GetIntrinsic('%Object.preventExtensions%'); +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); + +var forEach = require('../helpers/forEach'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel + +module.exports = function SetIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + if (!$preventExtensions) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support'); + } + var status = $preventExtensions(O); + if (!status) { + return false; + } + if (!$gOPN) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support'); + } + var theKeys = $gOPN(O); + if (level === 'sealed') { + forEach(theKeys, function (k) { + DefinePropertyOrThrow(O, k, { configurable: false }); + }); + } else if (level === 'frozen') { + forEach(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + var desc; + if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) { + desc = { configurable: false }; + } else { + desc = { configurable: false, writable: false }; + } + DefinePropertyOrThrow(O, k, desc); + } + }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SpeciesConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SpeciesConstructor.js new file mode 100644 index 0000000..3cdcd74 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SpeciesConstructor.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor + +module.exports = function SpeciesConstructor(O, defaultConstructor) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var C = O.constructor; + if (typeof C === 'undefined') { + return defaultConstructor; + } + if (Type(C) !== 'Object') { + throw new $TypeError('O.constructor is not an Object'); + } + var S = $species ? C[$species] : void 0; + if (S == null) { + return defaultConstructor; + } + if (IsConstructor(S)) { + return S; + } + throw new $TypeError('no constructor found'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/StrictEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2016/StrictEqualityComparison.js new file mode 100644 index 0000000..eea5df3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/StrictEqualityComparison.js @@ -0,0 +1,17 @@ +'use strict'; + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 + +module.exports = function StrictEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType !== yType) { + return false; + } + if (xType === 'Undefined' || xType === 'Null') { + return true; + } + return x === y; // shortcut for steps 4-7 +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/SymbolDescriptiveString.js b/tic-tac-toe-app/node_modules/es-abstract/2016/SymbolDescriptiveString.js new file mode 100644 index 0000000..7bd8191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/SymbolDescriptiveString.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $SymbolToString = callBound('Symbol.prototype.toString', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring + +module.exports = function SymbolDescriptiveString(sym) { + if (Type(sym) !== 'Symbol') { + throw new $TypeError('Assertion failed: `sym` must be a Symbol'); + } + return $SymbolToString(sym); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/TestIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2016/TestIntegrityLevel.js new file mode 100644 index 0000000..7a57397 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/TestIntegrityLevel.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var every = require('../helpers/every'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-testintegritylevel + +module.exports = function TestIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + var status = IsExtensible(O); + if (status) { + return false; + } + var theKeys = $gOPN(O); + return theKeys.length === 0 || every(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + if (currentDesc.configurable) { + return false; + } + if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) { + return false; + } + } + return true; + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/TimeClip.js b/tic-tac-toe-app/node_modules/es-abstract/2016/TimeClip.js new file mode 100644 index 0000000..57aa08c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/TimeClip.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); +var $Number = GetIntrinsic('%Number%'); +var $abs = GetIntrinsic('%Math.abs%'); + +var $isFinite = require('../helpers/isFinite'); + +var ToNumber = require('./ToNumber'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14 + +module.exports = function TimeClip(time) { + if (!$isFinite(time) || $abs(time) > 8.64e15) { + return NaN; + } + return $Number(new $Date(ToNumber(time))); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/TimeFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2016/TimeFromYear.js new file mode 100644 index 0000000..df646c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/TimeFromYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +var DayFromYear = require('./DayFromYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function TimeFromYear(y) { + return msPerDay * DayFromYear(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/TimeWithinDay.js b/tic-tac-toe-app/node_modules/es-abstract/2016/TimeWithinDay.js new file mode 100644 index 0000000..c5b21d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/TimeWithinDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function TimeWithinDay(t) { + return mod(t, msPerDay); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToBoolean.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToBoolean.js new file mode 100644 index 0000000..65d8737 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToBoolean.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 + +module.exports = function ToBoolean(value) { return !!value; }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToDateString.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToDateString.js new file mode 100644 index 0000000..7a6d4c4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToDateString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Date = GetIntrinsic('%Date%'); + +var $isNaN = require('../helpers/isNaN'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-todatestring + +module.exports = function ToDateString(tv) { + if (Type(tv) !== 'Number') { + throw new $TypeError('Assertion failed: `tv` must be a Number'); + } + if ($isNaN(tv)) { + return 'Invalid Date'; + } + return $Date(tv); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt16.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt16.js new file mode 100644 index 0000000..5a112c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt16.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint16 = require('./ToUint16'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint16 + +module.exports = function ToInt16(argument) { + var int16bit = ToUint16(argument); + return int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt32.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt32.js new file mode 100644 index 0000000..a8d2680 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.5 + +module.exports = function ToInt32(x) { + return ToNumber(x) >> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt8.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt8.js new file mode 100644 index 0000000..d103123 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInt8.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint8 = require('./ToUint8'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint8 + +module.exports = function ToInt8(argument) { + var int8bit = ToUint8(argument); + return int8bit >= 0x80 ? int8bit - 0x100 : int8bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInteger.js new file mode 100644 index 0000000..16f7db9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToInteger.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5ToInteger = require('../5/ToInteger'); + +var ToNumber = require('./ToNumber'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tointeger + +module.exports = function ToInteger(value) { + var number = ToNumber(value); + return ES5ToInteger(number); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToLength.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToLength.js new file mode 100644 index 0000000..1bef9be --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToLength.js @@ -0,0 +1,12 @@ +'use strict'; + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var ToInteger = require('./ToInteger'); + +module.exports = function ToLength(argument) { + var len = ToInteger(argument); + if (len <= 0) { return 0; } // includes converting -0 to +0 + if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; } + return len; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToNumber.js new file mode 100644 index 0000000..7a3cdc8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToNumber.js @@ -0,0 +1,59 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Number = GetIntrinsic('%Number%'); +var $RegExp = GetIntrinsic('%RegExp%'); +var $parseInteger = GetIntrinsic('%parseInt%'); + +var callBound = require('../helpers/callBound'); +var regexTester = require('../helpers/regexTester'); +var isPrimitive = require('../helpers/isPrimitive'); + +var $strSlice = callBound('String.prototype.slice'); +var isBinary = regexTester(/^0b[01]+$/i); +var isOctal = regexTester(/^0o[0-7]+$/i); +var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i); +var nonWS = ['\u0085', '\u200b', '\ufffe'].join(''); +var nonWSregex = new $RegExp('[' + nonWS + ']', 'g'); +var hasNonWS = regexTester(nonWSregex); + +// whitespace from: https://es5.github.io/#x15.5.4.20 +// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324 +var ws = [ + '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003', + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028', + '\u2029\uFEFF' +].join(''); +var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g'); +var $replace = callBound('String.prototype.replace'); +var $trim = function (value) { + return $replace(value, trimRegex, ''); +}; + +var ToPrimitive = require('./ToPrimitive'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tonumber + +module.exports = function ToNumber(argument) { + var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number); + if (typeof value === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a number'); + } + if (typeof value === 'string') { + if (isBinary(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 2)); + } else if (isOctal(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 8)); + } else if (hasNonWS(value) || isInvalidHexLiteral(value)) { + return NaN; + } else { + var trimmed = $trim(value); + if (trimmed !== value) { + return ToNumber(trimmed); + } + } + } + return $Number(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToObject.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToObject.js new file mode 100644 index 0000000..50d5b94 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToObject.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toobject + +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToPrimitive.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToPrimitive.js new file mode 100644 index 0000000..81c655d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToPrimitive.js @@ -0,0 +1,12 @@ +'use strict'; + +var toPrimitive = require('es-to-primitive/es2015'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive + +module.exports = function ToPrimitive(input) { + if (arguments.length > 1) { + return toPrimitive(input, arguments[1]); + } + return toPrimitive(input); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyDescriptor.js new file mode 100644 index 0000000..38e536e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyDescriptor.js @@ -0,0 +1,52 @@ +'use strict'; + +var has = require('has'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); +var ToBoolean = require('./ToBoolean'); +var IsCallable = require('./IsCallable'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5 + +module.exports = function ToPropertyDescriptor(Obj) { + if (Type(Obj) !== 'Object') { + throw new $TypeError('ToPropertyDescriptor requires an object'); + } + + var desc = {}; + if (has(Obj, 'enumerable')) { + desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable); + } + if (has(Obj, 'configurable')) { + desc['[[Configurable]]'] = ToBoolean(Obj.configurable); + } + if (has(Obj, 'value')) { + desc['[[Value]]'] = Obj.value; + } + if (has(Obj, 'writable')) { + desc['[[Writable]]'] = ToBoolean(Obj.writable); + } + if (has(Obj, 'get')) { + var getter = Obj.get; + if (typeof getter !== 'undefined' && !IsCallable(getter)) { + throw new TypeError('getter must be a function'); + } + desc['[[Get]]'] = getter; + } + if (has(Obj, 'set')) { + var setter = Obj.set; + if (typeof setter !== 'undefined' && !IsCallable(setter)) { + throw new $TypeError('setter must be a function'); + } + desc['[[Set]]'] = setter; + } + + if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) { + throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute'); + } + return desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyKey.js new file mode 100644 index 0000000..38f40dd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToPropertyKey.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +var ToPrimitive = require('./ToPrimitive'); +var ToString = require('./ToString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-topropertykey + +module.exports = function ToPropertyKey(argument) { + var key = ToPrimitive(argument, $String); + return typeof key === 'symbol' ? key : ToString(key); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToString.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToString.js new file mode 100644 index 0000000..a345431 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToString.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function ToString(argument) { + if (typeof argument === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a string'); + } + return $String(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint16.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint16.js new file mode 100644 index 0000000..c8a408b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint16.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.7 + +module.exports = function ToUint16(value) { + var number = ToNumber(value); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x10000); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint32.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint32.js new file mode 100644 index 0000000..3660f62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.6 + +module.exports = function ToUint32(x) { + return ToNumber(x) >>> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8.js new file mode 100644 index 0000000..bf84753 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +module.exports = function ToUint8(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x100); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8Clamp.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8Clamp.js new file mode 100644 index 0000000..c7f9f56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ToUint8Clamp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); + +var $floor = $Math.floor; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-touint8clamp + +module.exports = function ToUint8Clamp(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number <= 0) { return 0; } + if (number >= 0xFF) { return 0xFF; } + var f = $floor(argument); + if (f + 0.5 < number) { return f + 1; } + if (number < f + 0.5) { return f; } + if (f % 2 !== 0) { return f + 1; } + return f; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/Type.js b/tic-tac-toe-app/node_modules/es-abstract/2016/Type.js new file mode 100644 index 0000000..6c99376 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/Type.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5Type = require('../5/Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function Type(x) { + if (typeof x === 'symbol') { + return 'Symbol'; + } + return ES5Type(x); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/ValidateAndApplyPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2016/ValidateAndApplyPropertyDescriptor.js new file mode 100644 index 0000000..d4b9007 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/ValidateAndApplyPropertyDescriptor.js @@ -0,0 +1,170 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var isSamePropertyDescriptor = require('../helpers/isSamePropertyDescriptor'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-validateandapplypropertydescriptor +// https://www.ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor + +// eslint-disable-next-line max-lines-per-function, max-statements, max-params +module.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) { + // this uses the ES2017+ logic, since it fixes a number of bugs in the ES2015 logic. + var oType = Type(O); + if (oType !== 'Undefined' && oType !== 'Object') { + throw new $TypeError('Assertion failed: O must be undefined or an Object'); + } + if (Type(extensible) !== 'Boolean') { + throw new $TypeError('Assertion failed: extensible must be a Boolean'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (Type(current) !== 'Undefined' && !isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, current)) { + throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined'); + } + if (oType !== 'Undefined' && !IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: if O is not undefined, P must be a Property Key'); + } + if (Type(current) === 'Undefined') { + if (!extensible) { + return false; + } + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': Desc['[[Configurable]]'], + '[[Enumerable]]': Desc['[[Enumerable]]'], + '[[Value]]': Desc['[[Value]]'], + '[[Writable]]': Desc['[[Writable]]'] + } + ); + } + } else { + if (!IsAccessorDescriptor(Desc)) { + throw new $TypeError('Assertion failed: Desc is not an accessor descriptor'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + } + return true; + } + if (IsGenericDescriptor(Desc) && !('[[Configurable]]' in Desc) && !('[[Enumerable]]' in Desc)) { + return true; + } + if (isSamePropertyDescriptor({ SameValue: SameValue }, Desc, current)) { + return true; // removed by ES2017, but should still be correct + } + // "if every field in Desc is absent, return true" can't really match the assertion that it's a Property Descriptor + if (!current['[[Configurable]]']) { + if (Desc['[[Configurable]]']) { + return false; + } + if ('[[Enumerable]]' in Desc && !Desc['[[Enumerable]]'] === !!current['[[Enumerable]]']) { + return false; + } + } + if (IsGenericDescriptor(Desc)) { + // no further validation is required. + } else if (IsDataDescriptor(current) !== IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + return false; + } + if (IsDataDescriptor(current)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Get]]': undefined + } + ); + } + } else if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Value]]': undefined + } + ); + } + } else if (IsDataDescriptor(current) && IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]'] && !current['[[Writable]]']) { + if ('[[Writable]]' in Desc && Desc['[[Writable]]']) { + return false; + } + if ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) { + return false; + } + return true; + } + } else if (IsAccessorDescriptor(current) && IsAccessorDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + if ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) { + return false; + } + if ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) { + return false; + } + return true; + } + } else { + throw new $TypeError('Assertion failed: current and Desc are not both data, both accessors, or one accessor and one data.'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/WeekDay.js b/tic-tac-toe-app/node_modules/es-abstract/2016/WeekDay.js new file mode 100644 index 0000000..2973e02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/WeekDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +var Day = require('./Day'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6 + +module.exports = function WeekDay(t) { + return mod(Day(t) + 4, 7); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/YearFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/YearFromTime.js new file mode 100644 index 0000000..ff5339f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/YearFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); + +var callBound = require('../helpers/callBound'); + +var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function YearFromTime(t) { + // largest y such that this.TimeFromYear(y) <= t + return $getUTCFullYear(new $Date(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/modulo.js b/tic-tac-toe-app/node_modules/es-abstract/2016/modulo.js new file mode 100644 index 0000000..bc04c06 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/modulo.js @@ -0,0 +1,9 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-5.2 + +module.exports = function modulo(x, y) { + return mod(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/msFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2016/msFromTime.js new file mode 100644 index 0000000..c31eda0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/msFromTime.js @@ -0,0 +1,10 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerSecond = require('../helpers/timeConstants').msPerSecond; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function msFromTime(t) { + return mod(t, msPerSecond); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/thisBooleanValue.js b/tic-tac-toe-app/node_modules/es-abstract/2016/thisBooleanValue.js new file mode 100644 index 0000000..3ffac9c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/thisBooleanValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $BooleanValueOf = require('../helpers/callBound')('Boolean.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object + +module.exports = function thisBooleanValue(value) { + if (Type(value) === 'Boolean') { + return value; + } + + return $BooleanValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/thisNumberValue.js b/tic-tac-toe-app/node_modules/es-abstract/2016/thisNumberValue.js new file mode 100644 index 0000000..0345e52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/thisNumberValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var Type = require('./Type'); + +var $NumberValueOf = callBound('Number.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object + +module.exports = function thisNumberValue(value) { + if (Type(value) === 'Number') { + return value; + } + + return $NumberValueOf(value); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/thisStringValue.js b/tic-tac-toe-app/node_modules/es-abstract/2016/thisStringValue.js new file mode 100644 index 0000000..3b99b6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/thisStringValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $StringValueOf = require('../helpers/callBound')('String.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object + +module.exports = function thisStringValue(value) { + if (Type(value) === 'String') { + return value; + } + + return $StringValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2016/thisTimeValue.js b/tic-tac-toe-app/node_modules/es-abstract/2016/thisTimeValue.js new file mode 100644 index 0000000..d7cda28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2016/thisTimeValue.js @@ -0,0 +1,9 @@ +'use strict'; + +var $DateValueOf = require('../helpers/callBound')('Date.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object + +module.exports = function thisTimeValue(value) { + return $DateValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/AbstractEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2017/AbstractEqualityComparison.js new file mode 100644 index 0000000..40b3909 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/AbstractEqualityComparison.js @@ -0,0 +1,37 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison + +module.exports = function AbstractEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType === yType) { + return x === y; // ES6+ specified this shortcut anyways. + } + if (x == null && y == null) { + return true; + } + if (xType === 'Number' && yType === 'String') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if (xType === 'String' && yType === 'Number') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (xType === 'Boolean') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (yType === 'Boolean') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') { + return AbstractEqualityComparison(x, ToPrimitive(y)); + } + if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) { + return AbstractEqualityComparison(ToPrimitive(x), y); + } + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/AbstractRelationalComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2017/AbstractRelationalComparison.js new file mode 100644 index 0000000..bc7ca83 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/AbstractRelationalComparison.js @@ -0,0 +1,66 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Number = GetIntrinsic('%Number%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var isPrefixOf = require('../helpers/isPrefixOf'); + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 + +// eslint-disable-next-line max-statements +module.exports = function AbstractRelationalComparison(x, y, LeftFirst) { + if (Type(LeftFirst) !== 'Boolean') { + throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean'); + } + var px; + var py; + if (LeftFirst) { + px = ToPrimitive(x, $Number); + py = ToPrimitive(y, $Number); + } else { + py = ToPrimitive(y, $Number); + px = ToPrimitive(x, $Number); + } + var bothStrings = Type(px) === 'String' && Type(py) === 'String'; + if (!bothStrings) { + var nx = ToNumber(px); + var ny = ToNumber(py); + if ($isNaN(nx) || $isNaN(ny)) { + return undefined; + } + if ($isFinite(nx) && $isFinite(ny) && nx === ny) { + return false; + } + if (nx === 0 && ny === 0) { + return false; + } + if (nx === Infinity) { + return false; + } + if (ny === Infinity) { + return true; + } + if (ny === -Infinity) { + return false; + } + if (nx === -Infinity) { + return true; + } + return nx < ny; // by now, these are both nonzero, finite, and not equal + } + if (isPrefixOf(py, px)) { + return false; + } + if (isPrefixOf(px, py)) { + return true; + } + return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/AdvanceStringIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2017/AdvanceStringIndex.js new file mode 100644 index 0000000..666f578 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/AdvanceStringIndex.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $charCodeAt = require('../helpers/callBound')('String.prototype.charCodeAt'); + +// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex + +module.exports = function AdvanceStringIndex(S, index, unicode) { + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + if (!IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) { + throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53'); + } + if (Type(unicode) !== 'Boolean') { + throw new $TypeError('Assertion failed: `unicode` must be a Boolean'); + } + if (!unicode) { + return index + 1; + } + var length = S.length; + if ((index + 1) >= length) { + return index + 1; + } + + var first = $charCodeAt(S, index); + if (first < 0xD800 || first > 0xDBFF) { + return index + 1; + } + + var second = $charCodeAt(S, index + 1); + if (second < 0xDC00 || second > 0xDFFF) { + return index + 1; + } + + return index + 2; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ArrayCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ArrayCreate.js new file mode 100644 index 0000000..fc9a7cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ArrayCreate.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ArrayPrototype = GetIntrinsic('%Array.prototype%'); +var $RangeError = GetIntrinsic('%RangeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsInteger = require('./IsInteger'); + +var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1; + +var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || ( + // eslint-disable-next-line no-proto, no-negated-condition + [].__proto__ !== $ArrayPrototype + ? null + : function (O, proto) { + O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign + return O; + } +); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate + +module.exports = function ArrayCreate(length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0'); + } + if (length > MAX_ARRAY_LENGTH) { + throw new $RangeError('length is greater than (2**32 - 1)'); + } + var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype; + var A = []; // steps 5 - 7, and 9 + if (proto !== $ArrayPrototype) { // step 8 + if (!$setProto) { + throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]'); + } + $setProto(A, proto); + } + if (length !== 0) { // bypasses the need for step 2 + A.length = length; + } + /* step 10, the above as a shortcut for the below + OrdinaryDefineOwnProperty(A, 'length', { + '[[Configurable]]': false, + '[[Enumerable]]': false, + '[[Value]]': length, + '[[Writable]]': true + }); + */ + return A; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ArraySetLength.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ArraySetLength.js new file mode 100644 index 0000000..c9134c6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ArraySetLength.js @@ -0,0 +1,85 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var assign = require('object.assign'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsArray = require('./IsArray'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var ToUint32 = require('./ToUint32'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraysetlength + +// eslint-disable-next-line max-statements, max-lines-per-function +module.exports = function ArraySetLength(A, Desc) { + if (!IsArray(A)) { + throw new $TypeError('Assertion failed: A must be an Array'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!('[[Value]]' in Desc)) { + return OrdinaryDefineOwnProperty(A, 'length', Desc); + } + var newLenDesc = assign({}, Desc); + var newLen = ToUint32(Desc['[[Value]]']); + var numberLen = ToNumber(Desc['[[Value]]']); + if (newLen !== numberLen) { + throw new $RangeError('Invalid array length'); + } + newLenDesc['[[Value]]'] = newLen; + var oldLenDesc = OrdinaryGetOwnProperty(A, 'length'); + if (!IsDataDescriptor(oldLenDesc)) { + throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`'); + } + var oldLen = oldLenDesc['[[Value]]']; + if (newLen >= oldLen) { + return OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + } + if (!oldLenDesc['[[Writable]]']) { + return false; + } + var newWritable; + if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) { + newWritable = true; + } else { + newWritable = false; + newLenDesc['[[Writable]]'] = true; + } + var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + if (!succeeded) { + return false; + } + while (newLen < oldLen) { + oldLen -= 1; + // eslint-disable-next-line no-param-reassign + var deleteSucceeded = delete A[ToString(oldLen)]; + if (!deleteSucceeded) { + newLenDesc['[[Value]]'] = oldLen + 1; + if (!newWritable) { + newLenDesc['[[Writable]]'] = false; + OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + return false; + } + } + } + if (!newWritable) { + return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ArraySpeciesCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ArraySpeciesCreate.js new file mode 100644 index 0000000..98b9b56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ArraySpeciesCreate.js @@ -0,0 +1,46 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var IsConstructor = require('./IsConstructor'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate + +module.exports = function ArraySpeciesCreate(originalArray, length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: length must be an integer >= 0'); + } + var len = length === 0 ? 0 : length; + var C; + var isArray = IsArray(originalArray); + if (isArray) { + C = Get(originalArray, 'constructor'); + // TODO: figure out how to make a cross-realm normal Array, a same-realm Array + // if (IsConstructor(C)) { + // if C is another realm's Array, C = undefined + // Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ? + // } + if ($species && Type(C) === 'Object') { + C = Get(C, $species); + if (C === null) { + C = void 0; + } + } + } + if (typeof C === 'undefined') { + return $Array(len); + } + if (!IsConstructor(C)) { + throw new $TypeError('C must be a constructor'); + } + return new C(len); // Construct(C, len); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/Call.js b/tic-tac-toe-app/node_modules/es-abstract/2017/Call.js new file mode 100644 index 0000000..f31960d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/Call.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsCallable = require('./IsCallable'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-call + +module.exports = function Call(F, V) { + var args = arguments.length > 2 ? arguments[2] : []; + if (!IsCallable(F)) { + throw new $TypeError(inspect(F) + ' is not a function'); + } + return F.apply(V, args); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CanonicalNumericIndexString.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CanonicalNumericIndexString.js new file mode 100644 index 0000000..625f853 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CanonicalNumericIndexString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring + +module.exports = function CanonicalNumericIndexString(argument) { + if (Type(argument) !== 'String') { + throw new $TypeError('Assertion failed: `argument` must be a String'); + } + if (argument === '-0') { return -0; } + var n = ToNumber(argument); + if (SameValue(ToString(n), argument)) { return n; } + return void 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CompletePropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CompletePropertyDescriptor.js new file mode 100644 index 0000000..548bf41 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CompletePropertyDescriptor.js @@ -0,0 +1,39 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor + +module.exports = function CompletePropertyDescriptor(Desc) { + /* eslint no-param-reassign: 0 */ + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (!has(Desc, '[[Value]]')) { + Desc['[[Value]]'] = void 0; + } + if (!has(Desc, '[[Writable]]')) { + Desc['[[Writable]]'] = false; + } + } else { + if (!has(Desc, '[[Get]]')) { + Desc['[[Get]]'] = void 0; + } + if (!has(Desc, '[[Set]]')) { + Desc['[[Set]]'] = void 0; + } + } + if (!has(Desc, '[[Enumerable]]')) { + Desc['[[Enumerable]]'] = false; + } + if (!has(Desc, '[[Configurable]]')) { + Desc['[[Configurable]]'] = false; + } + return Desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataProperty.js new file mode 100644 index 0000000..32a86ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataProperty.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty + +module.exports = function CreateDataProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var oldDesc = OrdinaryGetOwnProperty(O, P); + var extensible = !oldDesc || IsExtensible(O); + var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']); + if (immutable || !extensible) { + return false; + } + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': true, + '[[Enumerable]]': true, + '[[Value]]': V, + '[[Writable]]': true + } + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataPropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataPropertyOrThrow.js new file mode 100644 index 0000000..9feaec8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateDataPropertyOrThrow.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var CreateDataProperty = require('./CreateDataProperty'); +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow + +module.exports = function CreateDataPropertyOrThrow(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var success = CreateDataProperty(O, P, V); + if (!success) { + throw new $TypeError('unable to create data property'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CreateHTML.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateHTML.js new file mode 100644 index 0000000..536c92d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateHTML.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $replace = callBound('String.prototype.replace'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml + +module.exports = function CreateHTML(string, tag, attribute, value) { + if (Type(tag) !== 'String' || Type(attribute) !== 'String') { + throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings'); + } + var str = RequireObjectCoercible(string); + var S = ToString(str); + var p1 = '<' + tag; + if (attribute !== '') { + var V = ToString(value); + var escapedV = $replace(V, /\x22/g, '"'); + p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22'; + } + return p1 + '>' + S + ''; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CreateIterResultObject.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateIterResultObject.js new file mode 100644 index 0000000..aef1d22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateIterResultObject.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject + +module.exports = function CreateIterResultObject(value, done) { + if (Type(done) !== 'Boolean') { + throw new $TypeError('Assertion failed: Type(done) is not Boolean'); + } + return { + value: value, + done: done + }; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CreateListFromArrayLike.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateListFromArrayLike.js new file mode 100644 index 0000000..d6b44b5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateListFromArrayLike.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBound = require('../helpers/callBound'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf'); +var $push = callBound('Array.prototype.push'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToLength = require('./ToLength'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike +module.exports = function CreateListFromArrayLike(obj) { + var elementTypes = arguments.length > 1 + ? arguments[1] + : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object']; + + if (Type(obj) !== 'Object') { + throw new $TypeError('Assertion failed: `obj` must be an Object'); + } + if (!IsArray(elementTypes)) { + throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array'); + } + var len = ToLength(Get(obj, 'length')); + var list = []; + var index = 0; + while (index < len) { + var indexName = ToString(index); + var next = Get(obj, indexName); + var nextType = Type(next); + if ($indexOf(elementTypes, nextType) < 0) { + throw new $TypeError('item type ' + nextType + ' is not a valid elementType'); + } + $push(list, next); + index += 1; + } + return list; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/CreateMethodProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateMethodProperty.js new file mode 100644 index 0000000..5b599ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/CreateMethodProperty.js @@ -0,0 +1,40 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createmethodproperty + +module.exports = function CreateMethodProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var newDesc = { + '[[Configurable]]': true, + '[[Enumerable]]': false, + '[[Value]]': V, + '[[Writable]]': true + }; + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + newDesc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/DateFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/DateFromTime.js new file mode 100644 index 0000000..962dba1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/DateFromTime.js @@ -0,0 +1,54 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); +var MonthFromTime = require('./MonthFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5 + +module.exports = function DateFromTime(t) { + var m = MonthFromTime(t); + var d = DayWithinYear(t); + if (m === 0) { + return d + 1; + } + if (m === 1) { + return d - 30; + } + var leap = InLeapYear(t); + if (m === 2) { + return d - 58 - leap; + } + if (m === 3) { + return d - 89 - leap; + } + if (m === 4) { + return d - 119 - leap; + } + if (m === 5) { + return d - 150 - leap; + } + if (m === 6) { + return d - 180 - leap; + } + if (m === 7) { + return d - 211 - leap; + } + if (m === 8) { + return d - 242 - leap; + } + if (m === 9) { + return d - 272 - leap; + } + if (m === 10) { + return d - 303 - leap; + } + if (m === 11) { + return d - 333 - leap; + } + throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/Day.js b/tic-tac-toe-app/node_modules/es-abstract/2017/Day.js new file mode 100644 index 0000000..00df813 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/Day.js @@ -0,0 +1,13 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function Day(t) { + return $floor(t / msPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/DayFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2017/DayFromYear.js new file mode 100644 index 0000000..08dd5af --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/DayFromYear.js @@ -0,0 +1,12 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DayFromYear(y) { + return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/DayWithinYear.js b/tic-tac-toe-app/node_modules/es-abstract/2017/DayWithinYear.js new file mode 100644 index 0000000..cfc4002 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/DayWithinYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var Day = require('./Day'); +var DayFromYear = require('./DayFromYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function DayWithinYear(t) { + return Day(t) - DayFromYear(YearFromTime(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/DaysInYear.js b/tic-tac-toe-app/node_modules/es-abstract/2017/DaysInYear.js new file mode 100644 index 0000000..db32251 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/DaysInYear.js @@ -0,0 +1,18 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DaysInYear(y) { + if (mod(y, 4) !== 0) { + return 365; + } + if (mod(y, 100) !== 0) { + return 366; + } + if (mod(y, 400) !== 0) { + return 365; + } + return 366; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/DefinePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2017/DefinePropertyOrThrow.js new file mode 100644 index 0000000..7977f6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/DefinePropertyOrThrow.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow + +module.exports = function DefinePropertyOrThrow(O, P, desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var Desc = isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, desc) ? desc : ToPropertyDescriptor(desc); + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor'); + } + + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/DeletePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2017/DeletePropertyOrThrow.js new file mode 100644 index 0000000..b476817 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/DeletePropertyOrThrow.js @@ -0,0 +1,27 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow + +module.exports = function DeletePropertyOrThrow(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // eslint-disable-next-line no-param-reassign + var success = delete O[P]; + if (!success) { + throw new $TypeError('Attempt to delete property failed.'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/EnumerableOwnProperties.js b/tic-tac-toe-app/node_modules/es-abstract/2017/EnumerableOwnProperties.js new file mode 100644 index 0000000..e2ed722 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/EnumerableOwnProperties.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var objectKeys = require('object-keys'); + +var callBound = require('../helpers/callBound'); + +var callBind = require('../helpers/callBind'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); +var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%')); + +var forEach = require('../helpers/forEach'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-enumerableownproperties + +module.exports = function EnumerableOwnProperties(O, kind) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + var keys = objectKeys(O); + if (kind === 'key') { + return keys; + } + if (kind === 'value' || kind === 'key+value') { + var results = []; + forEach(keys, function (key) { + if ($isEnumerable(O, key)) { + $pushApply(results, [ + kind === 'value' ? O[key] : [key, O[key]] + ]); + } + }); + return results; + } + throw new $TypeError('Assertion failed: "kind" is not "key", "value", or "key+value": ' + kind); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/FromPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/FromPropertyDescriptor.js new file mode 100644 index 0000000..5ec200e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/FromPropertyDescriptor.js @@ -0,0 +1,36 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor + +module.exports = function FromPropertyDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return Desc; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + var obj = {}; + if ('[[Value]]' in Desc) { + obj.value = Desc['[[Value]]']; + } + if ('[[Writable]]' in Desc) { + obj.writable = Desc['[[Writable]]']; + } + if ('[[Get]]' in Desc) { + obj.get = Desc['[[Get]]']; + } + if ('[[Set]]' in Desc) { + obj.set = Desc['[[Set]]']; + } + if ('[[Enumerable]]' in Desc) { + obj.enumerable = Desc['[[Enumerable]]']; + } + if ('[[Configurable]]' in Desc) { + obj.configurable = Desc['[[Configurable]]']; + } + return obj; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/Get.js b/tic-tac-toe-app/node_modules/es-abstract/2017/Get.js new file mode 100644 index 0000000..5b9ad78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/Get.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +/** + * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p + * 1. Assert: Type(O) is Object. + * 2. Assert: IsPropertyKey(P) is true. + * 3. Return O.[[Get]](P, O). + */ + +module.exports = function Get(O, P) { + // 7.3.1.1 + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + // 7.3.1.2 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P)); + } + // 7.3.1.3 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/GetIterator.js b/tic-tac-toe-app/node_modules/es-abstract/2017/GetIterator.js new file mode 100644 index 0000000..7beddac --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/GetIterator.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getIteratorMethod = require('../helpers/getIteratorMethod'); +var AdvanceStringIndex = require('./AdvanceStringIndex'); +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsArray = require('./IsArray'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getiterator + +module.exports = function GetIterator(obj, method) { + var actualMethod = method; + if (arguments.length < 2) { + actualMethod = getIteratorMethod( + { + AdvanceStringIndex: AdvanceStringIndex, + GetMethod: GetMethod, + IsArray: IsArray, + Type: Type + }, + obj + ); + } + var iterator = Call(actualMethod, obj); + if (Type(iterator) !== 'Object') { + throw new $TypeError('iterator must return an object'); + } + + return iterator; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/GetMethod.js b/tic-tac-toe-app/node_modules/es-abstract/2017/GetMethod.js new file mode 100644 index 0000000..aef8cbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/GetMethod.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var GetV = require('./GetV'); +var IsCallable = require('./IsCallable'); +var IsPropertyKey = require('./IsPropertyKey'); + +/** + * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let func be GetV(O, P). + * 3. ReturnIfAbrupt(func). + * 4. If func is either undefined or null, return undefined. + * 5. If IsCallable(func) is false, throw a TypeError exception. + * 6. Return func. + */ + +module.exports = function GetMethod(O, P) { + // 7.3.9.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.9.2 + var func = GetV(O, P); + + // 7.3.9.4 + if (func == null) { + return void 0; + } + + // 7.3.9.5 + if (!IsCallable(func)) { + throw new $TypeError(P + 'is not a function'); + } + + // 7.3.9.6 + return func; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/GetOwnPropertyKeys.js b/tic-tac-toe-app/node_modules/es-abstract/2017/GetOwnPropertyKeys.js new file mode 100644 index 0000000..8d7e5ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/GetOwnPropertyKeys.js @@ -0,0 +1,31 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var hasSymbols = require('has-symbols')(); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%'); +var keys = require('object-keys'); + +var esType = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys + +module.exports = function GetOwnPropertyKeys(O, Type) { + if (esType(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (Type === 'Symbol') { + return $gOPS ? $gOPS(O) : []; + } + if (Type === 'String') { + if (!$gOPN) { + return keys(O); + } + return $gOPN(O); + } + throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js new file mode 100644 index 0000000..62da8fb --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/GetPrototypeFromConstructor.js @@ -0,0 +1,28 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Function = GetIntrinsic('%Function%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor + +module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { + var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic + if (!IsConstructor(constructor)) { + throw new $TypeError('Assertion failed: `constructor` must be a constructor'); + } + var proto = Get(constructor, 'prototype'); + if (Type(proto) !== 'Object') { + if (!(constructor instanceof $Function)) { + // ignore other realms, for now + throw new $TypeError('cross-realm constructors not currently supported'); + } + proto = intrinsic; + } + return proto; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/GetSubstitution.js b/tic-tac-toe-app/node_modules/es-abstract/2017/GetSubstitution.js new file mode 100644 index 0000000..de41b01 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/GetSubstitution.js @@ -0,0 +1,104 @@ + +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $parseInt = GetIntrinsic('%parseInt%'); + +var inspect = require('object-inspect'); + +var regexTester = require('../helpers/regexTester'); +var callBound = require('../helpers/callBound'); +var every = require('../helpers/every'); + +var isDigit = regexTester(/^[0-9]$/); + +var $charAt = callBound('String.prototype.charAt'); +var $strSlice = callBound('String.prototype.slice'); + +var IsArray = require('./IsArray'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false + +var isStringOrHole = function (capture, index, arr) { + return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined'); +}; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getsubstitution + +// eslint-disable-next-line max-statements, max-params, max-lines-per-function +module.exports = function GetSubstitution(matched, str, position, captures, replacement) { + if (Type(matched) !== 'String') { + throw new $TypeError('Assertion failed: `matched` must be a String'); + } + var matchLength = matched.length; + + if (Type(str) !== 'String') { + throw new $TypeError('Assertion failed: `str` must be a String'); + } + var stringLength = str.length; + + if (!IsInteger(position) || position < 0 || position > stringLength) { + throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position)); + } + + if (!IsArray(captures) || !every(captures, isStringOrHole)) { + throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures)); + } + + if (Type(replacement) !== 'String') { + throw new $TypeError('Assertion failed: `replacement` must be a String'); + } + + var tailPos = position + matchLength; + var m = captures.length; + + var result = ''; + for (var i = 0; i < replacement.length; i += 1) { + // if this is a $, and it's not the end of the replacement + var current = $charAt(replacement, i); + var isLast = (i + 1) >= replacement.length; + var nextIsLast = (i + 2) >= replacement.length; + if (current === '$' && !isLast) { + var next = $charAt(replacement, i + 1); + if (next === '$') { + result += '$'; + i += 1; + } else if (next === '&') { + result += matched; + i += 1; + } else if (next === '`') { + result += position === 0 ? '' : $strSlice(str, 0, position - 1); + i += 1; + } else if (next === "'") { + result += tailPos >= stringLength ? '' : $strSlice(str, tailPos); + i += 1; + } else { + var nextNext = nextIsLast ? null : $charAt(replacement, i + 2); + if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) { + // $1 through $9, and not followed by a digit + var n = $parseInt(next, 10); + // if (n > m, impl-defined) + result += (n <= m && Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1]; + i += 1; + } else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) { + // $00 through $99 + var nn = next + nextNext; + var nnI = $parseInt(nn, 10) - 1; + // if nn === '00' or nn > m, impl-defined + result += (nn <= m && Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI]; + i += 2; + } else { + result += '$'; + } + } + } else { + // the final $, or else not a $ + result += $charAt(replacement, i); + } + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/GetV.js b/tic-tac-toe-app/node_modules/es-abstract/2017/GetV.js new file mode 100644 index 0000000..7b5139a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/GetV.js @@ -0,0 +1,29 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var ToObject = require('./ToObject'); + +/** + * 7.3.2 GetV (V, P) + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let O be ToObject(V). + * 3. ReturnIfAbrupt(O). + * 4. Return O.[[Get]](P, V). + */ + +module.exports = function GetV(V, P) { + // 7.3.2.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.2.2-3 + var O = ToObject(V); + + // 7.3.2.4 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/HasOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2017/HasOwnProperty.js new file mode 100644 index 0000000..679059f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/HasOwnProperty.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var has = require('has'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty + +module.exports = function HasOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return has(O, P); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/HasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2017/HasProperty.js new file mode 100644 index 0000000..5f2d212 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/HasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty + +module.exports = function HasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/HourFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/HourFromTime.js new file mode 100644 index 0000000..957ce32 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/HourFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerHour = timeConstants.msPerHour; +var HoursPerDay = timeConstants.HoursPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function HourFromTime(t) { + return mod($floor(t / msPerHour), HoursPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/InLeapYear.js b/tic-tac-toe-app/node_modules/es-abstract/2017/InLeapYear.js new file mode 100644 index 0000000..38ba8fd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/InLeapYear.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DaysInYear = require('./DaysInYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function InLeapYear(t) { + var days = DaysInYear(YearFromTime(t)); + if (days === 365) { + return 0; + } + if (days === 366) { + return 1; + } + throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/InstanceofOperator.js b/tic-tac-toe-app/node_modules/es-abstract/2017/InstanceofOperator.js new file mode 100644 index 0000000..ebd308c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/InstanceofOperator.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $hasInstance = GetIntrinsic('Symbol.hasInstance', true); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var OrdinaryHasInstance = require('./OrdinaryHasInstance'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator + +module.exports = function InstanceofOperator(O, C) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0; + if (typeof instOfHandler !== 'undefined') { + return ToBoolean(Call(instOfHandler, C, [O])); + } + if (!IsCallable(C)) { + throw new $TypeError('`C` is not Callable'); + } + return OrdinaryHasInstance(C, O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/Invoke.js b/tic-tac-toe-app/node_modules/es-abstract/2017/Invoke.js new file mode 100644 index 0000000..769f0e3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/Invoke.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $arraySlice = require('../helpers/callBound')('Array.prototype.slice'); + +var Call = require('./Call'); +var GetV = require('./GetV'); +var IsPropertyKey = require('./IsPropertyKey'); + +// https://ecma-international.org/ecma-262/6.0/#sec-invoke + +module.exports = function Invoke(O, P) { + if (!IsPropertyKey(P)) { + throw new $TypeError('P must be a Property Key'); + } + var argumentsList = $arraySlice(arguments, 2); + var func = GetV(O, P); + return Call(func, O, argumentsList); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsAccessorDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsAccessorDescriptor.js new file mode 100644 index 0000000..5139464 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsAccessorDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor + +module.exports = function IsAccessorDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsArray.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsArray.js new file mode 100644 index 0000000..7b25f37 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsArray.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); + +// eslint-disable-next-line global-require +var toStr = !$Array.isArray && require('../helpers/callBound')('Object.prototype.toString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray + +module.exports = $Array.isArray || function IsArray(argument) { + return toStr(argument) === '[object Array]'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsCallable.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsCallable.js new file mode 100644 index 0000000..e4bfa36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsCallable.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11 + +module.exports = require('is-callable'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsConcatSpreadable.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsConcatSpreadable.js new file mode 100644 index 0000000..dc8aae1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsConcatSpreadable.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable + +module.exports = function IsConcatSpreadable(O) { + if (Type(O) !== 'Object') { + return false; + } + if ($isConcatSpreadable) { + var spreadable = Get(O, $isConcatSpreadable); + if (typeof spreadable !== 'undefined') { + return ToBoolean(spreadable); + } + } + return IsArray(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsConstructor.js new file mode 100644 index 0000000..00ea52c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsConstructor.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor + +module.exports = function IsConstructor(argument) { + return typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument` +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsDataDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsDataDescriptor.js new file mode 100644 index 0000000..0ad3045 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsDataDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor + +module.exports = function IsDataDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsExtensible.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsExtensible.js new file mode 100644 index 0000000..0c4c8a6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsExtensible.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var isPrimitive = require('../helpers/isPrimitive'); + +var $preventExtensions = $Object.preventExtensions; +var $isExtensible = $Object.isExtensible; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o + +module.exports = $preventExtensions + ? function IsExtensible(obj) { + return !isPrimitive(obj) && $isExtensible(obj); + } + : function IsExtensible(obj) { + return !isPrimitive(obj); + }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsGenericDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsGenericDescriptor.js new file mode 100644 index 0000000..8618ce4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsGenericDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor + +module.exports = function IsGenericDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) { + return true; + } + + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsInteger.js new file mode 100644 index 0000000..0f488b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsInteger.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isinteger + +module.exports = function IsInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var abs = $abs(argument); + return $floor(abs) === abs; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsPromise.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsPromise.js new file mode 100644 index 0000000..e8e92a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsPromise.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $PromiseThen = callBound('Promise.prototype.then', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise + +module.exports = function IsPromise(x) { + if (Type(x) !== 'Object') { + return false; + } + if (!$PromiseThen) { // Promises are not supported + return false; + } + try { + $PromiseThen(x); // throws if not a promise + } catch (e) { + return false; + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyDescriptor.js new file mode 100644 index 0000000..2a96c63 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyDescriptor.js @@ -0,0 +1,17 @@ +'use strict'; + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var Type = require('./Type'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); + +// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type + +module.exports = function IsPropertyDescriptor(Desc) { + return isPropertyDescriptor({ + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor, + Type: Type + }, Desc); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyKey.js new file mode 100644 index 0000000..74b8d95 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsPropertyKey.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey + +module.exports = function IsPropertyKey(argument) { + return typeof argument === 'string' || typeof argument === 'symbol'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IsRegExp.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IsRegExp.js new file mode 100644 index 0000000..fdf2323 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IsRegExp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $match = GetIntrinsic('%Symbol.match%', true); + +var hasRegExpMatcher = require('is-regex'); + +var ToBoolean = require('./ToBoolean'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isregexp + +module.exports = function IsRegExp(argument) { + if (!argument || typeof argument !== 'object') { + return false; + } + if ($match) { + var isRegExp = argument[$match]; + if (typeof isRegExp !== 'undefined') { + return ToBoolean(isRegExp); + } + } + return hasRegExpMatcher(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IterableToList.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IterableToList.js new file mode 100644 index 0000000..0b8cdcf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IterableToList.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); +var $arrayPush = callBound('Array.prototype.push'); + +var GetIterator = require('./GetIterator'); +var IteratorStep = require('./IteratorStep'); +var IteratorValue = require('./IteratorValue'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-iterabletolist + +module.exports = function IterableToList(items, method) { + var iterator = GetIterator(items, method); + var values = []; + var next = true; + while (next) { + next = IteratorStep(iterator); + if (next) { + var nextValue = IteratorValue(next); + $arrayPush(values, nextValue); + } + } + return values; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorClose.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorClose.js new file mode 100644 index 0000000..35c8c2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorClose.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose + +module.exports = function IteratorClose(iterator, completion) { + if (Type(iterator) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterator) is not Object'); + } + if (!IsCallable(completion)) { + throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record'); + } + var completionThunk = completion; + + var iteratorReturn = GetMethod(iterator, 'return'); + + if (typeof iteratorReturn === 'undefined') { + return completionThunk(); + } + + var completionRecord; + try { + var innerResult = Call(iteratorReturn, iterator, []); + } catch (e) { + // if we hit here, then "e" is the innerResult completion that needs re-throwing + + // if the completion is of type "throw", this will throw. + completionThunk(); + completionThunk = null; // ensure it's not called twice. + + // if not, then return the innerResult completion + throw e; + } + completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does + completionThunk = null; // ensure it's not called twice. + + if (Type(innerResult) !== 'Object') { + throw new $TypeError('iterator .return must return an object'); + } + + return completionRecord; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorComplete.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorComplete.js new file mode 100644 index 0000000..a62b9bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorComplete.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete + +module.exports = function IteratorComplete(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return ToBoolean(Get(iterResult, 'done')); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorNext.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorNext.js new file mode 100644 index 0000000..7e59915 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorNext.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Invoke = require('./Invoke'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext + +module.exports = function IteratorNext(iterator, value) { + var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]); + if (Type(result) !== 'Object') { + throw new $TypeError('iterator next must return an object'); + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorStep.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorStep.js new file mode 100644 index 0000000..41b9d1b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorStep.js @@ -0,0 +1,13 @@ +'use strict'; + +var IteratorComplete = require('./IteratorComplete'); +var IteratorNext = require('./IteratorNext'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep + +module.exports = function IteratorStep(iterator) { + var result = IteratorNext(iterator); + var done = IteratorComplete(result); + return done === true ? false : result; +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorValue.js b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorValue.js new file mode 100644 index 0000000..5e71a44 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/IteratorValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue + +module.exports = function IteratorValue(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return Get(iterResult, 'value'); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/MakeDate.js b/tic-tac-toe-app/node_modules/es-abstract/2017/MakeDate.js new file mode 100644 index 0000000..7b592d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/MakeDate.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13 + +module.exports = function MakeDate(day, time) { + if (!$isFinite(day) || !$isFinite(time)) { + return NaN; + } + return (day * msPerDay) + time; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/MakeDay.js b/tic-tac-toe-app/node_modules/es-abstract/2017/MakeDay.js new file mode 100644 index 0000000..f1ab810 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/MakeDay.js @@ -0,0 +1,33 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); +var $DateUTC = GetIntrinsic('%Date.UTC%'); + +var mod = require('../helpers/mod'); +var $isFinite = require('../helpers/isFinite'); + +var DateFromTime = require('./DateFromTime'); +var Day = require('./Day'); +var MonthFromTime = require('./MonthFromTime'); +var ToInteger = require('./ToInteger'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12 + +module.exports = function MakeDay(year, month, date) { + if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) { + return NaN; + } + var y = ToInteger(year); + var m = ToInteger(month); + var dt = ToInteger(date); + var ym = y + $floor(m / 12); + var mn = mod(m, 12); + var t = $DateUTC(ym, mn, 1); + if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) { + return NaN; + } + return Day(t) + dt - 1; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/MakeTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/MakeTime.js new file mode 100644 index 0000000..e118500 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/MakeTime.js @@ -0,0 +1,23 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var msPerMinute = timeConstants.msPerMinute; +var msPerHour = timeConstants.msPerHour; + +var ToInteger = require('./ToInteger'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11 + +module.exports = function MakeTime(hour, min, sec, ms) { + if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) { + return NaN; + } + var h = ToInteger(hour); + var m = ToInteger(min); + var s = ToInteger(sec); + var milli = ToInteger(ms); + var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli; + return t; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/MinFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/MinFromTime.js new file mode 100644 index 0000000..e80e191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/MinFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerMinute = timeConstants.msPerMinute; +var MinutesPerHour = timeConstants.MinutesPerHour; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function MinFromTime(t) { + return mod($floor(t / msPerMinute), MinutesPerHour); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/MonthFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/MonthFromTime.js new file mode 100644 index 0000000..4f120f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/MonthFromTime.js @@ -0,0 +1,47 @@ +'use strict'; + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function MonthFromTime(t) { + var day = DayWithinYear(t); + if (0 <= day && day < 31) { + return 0; + } + var leap = InLeapYear(t); + if (31 <= day && day < (59 + leap)) { + return 1; + } + if ((59 + leap) <= day && day < (90 + leap)) { + return 2; + } + if ((90 + leap) <= day && day < (120 + leap)) { + return 3; + } + if ((120 + leap) <= day && day < (151 + leap)) { + return 4; + } + if ((151 + leap) <= day && day < (181 + leap)) { + return 5; + } + if ((181 + leap) <= day && day < (212 + leap)) { + return 6; + } + if ((212 + leap) <= day && day < (243 + leap)) { + return 7; + } + if ((243 + leap) <= day && day < (273 + leap)) { + return 8; + } + if ((273 + leap) <= day && day < (304 + leap)) { + return 9; + } + if ((304 + leap) <= day && day < (334 + leap)) { + return 10; + } + if ((334 + leap) <= day && day < (365 + leap)) { + return 11; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ObjectCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ObjectCreate.js new file mode 100644 index 0000000..e2445b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ObjectCreate.js @@ -0,0 +1,37 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ObjectCreate = GetIntrinsic('%Object.create%', true); +var $TypeError = GetIntrinsic('%TypeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); + +var Type = require('./Type'); + +var hasProto = !({ __proto__: null } instanceof Object); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate + +module.exports = function ObjectCreate(proto, internalSlotsList) { + if (proto !== null && Type(proto) !== 'Object') { + throw new $TypeError('Assertion failed: `proto` must be null or an object'); + } + var slots = arguments.length < 2 ? [] : internalSlotsList; + if (slots.length > 0) { + throw new $SyntaxError('es-abstract does not yet support internal slots'); + } + + if ($ObjectCreate) { + return $ObjectCreate(proto); + } + if (hasProto) { + return { __proto__: proto }; + } + + if (proto === null) { + throw new $SyntaxError('native Object.create support is required to create null objects'); + } + var T = function T() {}; + T.prototype = proto; + return new T(); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js new file mode 100644 index 0000000..59780b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryDefineOwnProperty.js @@ -0,0 +1,61 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); +var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty + +module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!$gOPD) { + // ES3/IE 8 fallback + if (IsAccessorDescriptor(Desc)) { + throw new $SyntaxError('This environment does not support accessor property descriptors.'); + } + var creatingNormalDataProperty = !(P in O) + && Desc['[[Writable]]'] + && Desc['[[Enumerable]]'] + && Desc['[[Configurable]]'] + && '[[Value]]' in Desc; + var settingExistingDataProperty = (P in O) + && (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]']) + && (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]']) + && (!('[[Writable]]' in Desc) || Desc['[[Writable]]']) + && '[[Value]]' in Desc; + if (creatingNormalDataProperty || settingExistingDataProperty) { + O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign + return SameValue(O[P], Desc['[[Value]]']); + } + throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties'); + } + var desc = $gOPD(O, P); + var current = desc && ToPropertyDescriptor(desc); + var extensible = IsExtensible(O); + return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js new file mode 100644 index 0000000..b9882e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetOwnProperty.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +var has = require('has'); + +var IsArray = require('./IsArray'); +var IsPropertyKey = require('./IsPropertyKey'); +var IsRegExp = require('./IsRegExp'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty + +module.exports = function OrdinaryGetOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!has(O, P)) { + return void 0; + } + if (!$gOPD) { + // ES3 / IE 8 fallback + var arrayLength = IsArray(O) && P === 'length'; + var regexLastIndex = IsRegExp(O) && P === 'lastIndex'; + return { + '[[Configurable]]': !(arrayLength || regexLastIndex), + '[[Enumerable]]': $isEnumerable(O, P), + '[[Value]]': O[P], + '[[Writable]]': true + }; + } + return ToPropertyDescriptor($gOPD(O, P)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetPrototypeOf.js new file mode 100644 index 0000000..344077a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryGetPrototypeOf.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $getProto = require('../helpers/getProto'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetprototypeof + +module.exports = function OrdinaryGetPrototypeOf(O) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!$getProto) { + throw new $TypeError('This environment does not support fetching prototypes.'); + } + return $getProto(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasInstance.js b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasInstance.js new file mode 100644 index 0000000..51abe26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasInstance.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance + +module.exports = function OrdinaryHasInstance(C, O) { + if (IsCallable(C) === false) { + return false; + } + if (Type(O) !== 'Object') { + return false; + } + var P = Get(C, 'prototype'); + if (Type(P) !== 'Object') { + throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.'); + } + return O instanceof C; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasProperty.js new file mode 100644 index 0000000..076c25a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinaryHasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty + +module.exports = function OrdinaryHasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js new file mode 100644 index 0000000..3541331 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/OrdinarySetPrototypeOf.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $setProto = require('../helpers/setProto'); + +var OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarysetprototypeof + +module.exports = function OrdinarySetPrototypeOf(O, V) { + if (Type(V) !== 'Object' && Type(V) !== 'Null') { + throw new $TypeError('Assertion failed: V must be Object or Null'); + } + /* + var extensible = IsExtensible(O); + var current = OrdinaryGetPrototypeOf(O); + if (SameValue(V, current)) { + return true; + } + if (!extensible) { + return false; + } + */ + try { + $setProto(O, V); + } catch (e) { + return false; + } + return OrdinaryGetPrototypeOf(O) === V; + /* + var p = V; + var done = false; + while (!done) { + if (p === null) { + done = true; + } else if (SameValue(p, O)) { + return false; + } else { + if (wat) { + done = true; + } else { + p = p.[[Prototype]]; + } + } + } + O.[[Prototype]] = V; + return true; + */ +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/RegExpExec.js b/tic-tac-toe-app/node_modules/es-abstract/2017/RegExpExec.js new file mode 100644 index 0000000..15c9186 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/RegExpExec.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var regexExec = require('../helpers/callBound')('RegExp.prototype.exec'); + +var Call = require('./Call'); +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec + +module.exports = function RegExpExec(R, S) { + if (Type(R) !== 'Object') { + throw new $TypeError('Assertion failed: `R` must be an Object'); + } + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + var exec = Get(R, 'exec'); + if (IsCallable(exec)) { + var result = Call(exec, R, [S]); + if (result === null || Type(result) === 'Object') { + return result; + } + throw new $TypeError('"exec" method must return `null` or an Object'); + } + return regexExec(R, S); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/RequireObjectCoercible.js b/tic-tac-toe-app/node_modules/es-abstract/2017/RequireObjectCoercible.js new file mode 100644 index 0000000..9008359 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/RequireObjectCoercible.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../5/CheckObjectCoercible'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SameValue.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SameValue.js new file mode 100644 index 0000000..47c936d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SameValue.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12 + +module.exports = function SameValue(x, y) { + if (x === y) { // 0 === -0, but they are not identical. + if (x === 0) { return 1 / x === 1 / y; } + return true; + } + return $isNaN(x) && $isNaN(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SameValueNonNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SameValueNonNumber.js new file mode 100644 index 0000000..5668752 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SameValueNonNumber.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); + +// https://www.ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber + +module.exports = function SameValueNonNumber(x, y) { + if (typeof x === 'number' || typeof x !== typeof y) { + throw new $TypeError('SameValueNonNumber requires two non-number values of the same type.'); + } + return SameValue(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SameValueZero.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SameValueZero.js new file mode 100644 index 0000000..0dedcd2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SameValueZero.js @@ -0,0 +1,9 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-samevaluezero + +module.exports = function SameValueZero(x, y) { + return (x === y) || ($isNaN(x) && $isNaN(y)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SecFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SecFromTime.js new file mode 100644 index 0000000..7190011 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SecFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var SecondsPerMinute = timeConstants.SecondsPerMinute; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function SecFromTime(t) { + return mod($floor(t / msPerSecond), SecondsPerMinute); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/Set.js b/tic-tac-toe-app/node_modules/es-abstract/2017/Set.js new file mode 100644 index 0000000..18ebd99 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/Set.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw + +module.exports = function Set(O, P, V, Throw) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + if (Type(Throw) !== 'Boolean') { + throw new $TypeError('Assertion failed: `Throw` must be a Boolean'); + } + if (Throw) { + O[P] = V; // eslint-disable-line no-param-reassign + return true; + } else { + try { + O[P] = V; // eslint-disable-line no-param-reassign + } catch (e) { + return false; + } + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SetFunctionName.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SetFunctionName.js new file mode 100644 index 0000000..f93324a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SetFunctionName.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var has = require('has'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getSymbolDescription = require('../helpers/getSymbolDescription'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsExtensible = require('./IsExtensible'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname + +module.exports = function SetFunctionName(F, name) { + if (typeof F !== 'function') { + throw new $TypeError('Assertion failed: `F` must be a function'); + } + if (!IsExtensible(F) || has(F, 'name')) { + throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property'); + } + var nameType = Type(name); + if (nameType !== 'Symbol' && nameType !== 'String') { + throw new $TypeError('Assertion failed: `name` must be a Symbol or a String'); + } + if (nameType === 'Symbol') { + var description = getSymbolDescription(name); + // eslint-disable-next-line no-param-reassign + name = typeof description === 'undefined' ? '' : '[' + description + ']'; + } + if (arguments.length > 2) { + var prefix = arguments[2]; + // eslint-disable-next-line no-param-reassign + name = prefix + ' ' + name; + } + return DefinePropertyOrThrow(F, 'name', { + '[[Value]]': name, + '[[Writable]]': false, + '[[Enumerable]]': false, + '[[Configurable]]': true + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SetIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SetIntegrityLevel.js new file mode 100644 index 0000000..3d5c81d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SetIntegrityLevel.js @@ -0,0 +1,57 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); +var $preventExtensions = GetIntrinsic('%Object.preventExtensions%'); +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); + +var forEach = require('../helpers/forEach'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel + +module.exports = function SetIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + if (!$preventExtensions) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support'); + } + var status = $preventExtensions(O); + if (!status) { + return false; + } + if (!$gOPN) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support'); + } + var theKeys = $gOPN(O); + if (level === 'sealed') { + forEach(theKeys, function (k) { + DefinePropertyOrThrow(O, k, { configurable: false }); + }); + } else if (level === 'frozen') { + forEach(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + var desc; + if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) { + desc = { configurable: false }; + } else { + desc = { configurable: false, writable: false }; + } + DefinePropertyOrThrow(O, k, desc); + } + }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SpeciesConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SpeciesConstructor.js new file mode 100644 index 0000000..3cdcd74 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SpeciesConstructor.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor + +module.exports = function SpeciesConstructor(O, defaultConstructor) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var C = O.constructor; + if (typeof C === 'undefined') { + return defaultConstructor; + } + if (Type(C) !== 'Object') { + throw new $TypeError('O.constructor is not an Object'); + } + var S = $species ? C[$species] : void 0; + if (S == null) { + return defaultConstructor; + } + if (IsConstructor(S)) { + return S; + } + throw new $TypeError('no constructor found'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/StrictEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2017/StrictEqualityComparison.js new file mode 100644 index 0000000..eea5df3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/StrictEqualityComparison.js @@ -0,0 +1,17 @@ +'use strict'; + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 + +module.exports = function StrictEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType !== yType) { + return false; + } + if (xType === 'Undefined' || xType === 'Null') { + return true; + } + return x === y; // shortcut for steps 4-7 +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/SymbolDescriptiveString.js b/tic-tac-toe-app/node_modules/es-abstract/2017/SymbolDescriptiveString.js new file mode 100644 index 0000000..7bd8191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/SymbolDescriptiveString.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $SymbolToString = callBound('Symbol.prototype.toString', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring + +module.exports = function SymbolDescriptiveString(sym) { + if (Type(sym) !== 'Symbol') { + throw new $TypeError('Assertion failed: `sym` must be a Symbol'); + } + return $SymbolToString(sym); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/TestIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2017/TestIntegrityLevel.js new file mode 100644 index 0000000..7a57397 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/TestIntegrityLevel.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var every = require('../helpers/every'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-testintegritylevel + +module.exports = function TestIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + var status = IsExtensible(O); + if (status) { + return false; + } + var theKeys = $gOPN(O); + return theKeys.length === 0 || every(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + if (currentDesc.configurable) { + return false; + } + if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) { + return false; + } + } + return true; + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/TimeClip.js b/tic-tac-toe-app/node_modules/es-abstract/2017/TimeClip.js new file mode 100644 index 0000000..57aa08c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/TimeClip.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); +var $Number = GetIntrinsic('%Number%'); +var $abs = GetIntrinsic('%Math.abs%'); + +var $isFinite = require('../helpers/isFinite'); + +var ToNumber = require('./ToNumber'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14 + +module.exports = function TimeClip(time) { + if (!$isFinite(time) || $abs(time) > 8.64e15) { + return NaN; + } + return $Number(new $Date(ToNumber(time))); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/TimeFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2017/TimeFromYear.js new file mode 100644 index 0000000..df646c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/TimeFromYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +var DayFromYear = require('./DayFromYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function TimeFromYear(y) { + return msPerDay * DayFromYear(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/TimeWithinDay.js b/tic-tac-toe-app/node_modules/es-abstract/2017/TimeWithinDay.js new file mode 100644 index 0000000..c5b21d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/TimeWithinDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function TimeWithinDay(t) { + return mod(t, msPerDay); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToBoolean.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToBoolean.js new file mode 100644 index 0000000..65d8737 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToBoolean.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 + +module.exports = function ToBoolean(value) { return !!value; }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToDateString.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToDateString.js new file mode 100644 index 0000000..7a6d4c4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToDateString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Date = GetIntrinsic('%Date%'); + +var $isNaN = require('../helpers/isNaN'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-todatestring + +module.exports = function ToDateString(tv) { + if (Type(tv) !== 'Number') { + throw new $TypeError('Assertion failed: `tv` must be a Number'); + } + if ($isNaN(tv)) { + return 'Invalid Date'; + } + return $Date(tv); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToIndex.js new file mode 100644 index 0000000..a55398d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToIndex.js @@ -0,0 +1,26 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); + +var ToInteger = require('./ToInteger'); +var ToLength = require('./ToLength'); +var SameValueZero = require('./SameValueZero'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-toindex + +module.exports = function ToIndex(value) { + if (typeof value === 'undefined') { + return 0; + } + var integerIndex = ToInteger(value); + if (integerIndex < 0) { + throw new $RangeError('index must be >= 0'); + } + var index = ToLength(integerIndex); + if (!SameValueZero(integerIndex, index)) { + throw new $RangeError('index must be >= 0 and < 2 ** 53 - 1'); + } + return index; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt16.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt16.js new file mode 100644 index 0000000..5a112c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt16.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint16 = require('./ToUint16'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint16 + +module.exports = function ToInt16(argument) { + var int16bit = ToUint16(argument); + return int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt32.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt32.js new file mode 100644 index 0000000..a8d2680 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.5 + +module.exports = function ToInt32(x) { + return ToNumber(x) >> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt8.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt8.js new file mode 100644 index 0000000..d103123 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInt8.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint8 = require('./ToUint8'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint8 + +module.exports = function ToInt8(argument) { + var int8bit = ToUint8(argument); + return int8bit >= 0x80 ? int8bit - 0x100 : int8bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInteger.js new file mode 100644 index 0000000..16f7db9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToInteger.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5ToInteger = require('../5/ToInteger'); + +var ToNumber = require('./ToNumber'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tointeger + +module.exports = function ToInteger(value) { + var number = ToNumber(value); + return ES5ToInteger(number); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToLength.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToLength.js new file mode 100644 index 0000000..1bef9be --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToLength.js @@ -0,0 +1,12 @@ +'use strict'; + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var ToInteger = require('./ToInteger'); + +module.exports = function ToLength(argument) { + var len = ToInteger(argument); + if (len <= 0) { return 0; } // includes converting -0 to +0 + if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; } + return len; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToNumber.js new file mode 100644 index 0000000..7a3cdc8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToNumber.js @@ -0,0 +1,59 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Number = GetIntrinsic('%Number%'); +var $RegExp = GetIntrinsic('%RegExp%'); +var $parseInteger = GetIntrinsic('%parseInt%'); + +var callBound = require('../helpers/callBound'); +var regexTester = require('../helpers/regexTester'); +var isPrimitive = require('../helpers/isPrimitive'); + +var $strSlice = callBound('String.prototype.slice'); +var isBinary = regexTester(/^0b[01]+$/i); +var isOctal = regexTester(/^0o[0-7]+$/i); +var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i); +var nonWS = ['\u0085', '\u200b', '\ufffe'].join(''); +var nonWSregex = new $RegExp('[' + nonWS + ']', 'g'); +var hasNonWS = regexTester(nonWSregex); + +// whitespace from: https://es5.github.io/#x15.5.4.20 +// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324 +var ws = [ + '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003', + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028', + '\u2029\uFEFF' +].join(''); +var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g'); +var $replace = callBound('String.prototype.replace'); +var $trim = function (value) { + return $replace(value, trimRegex, ''); +}; + +var ToPrimitive = require('./ToPrimitive'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tonumber + +module.exports = function ToNumber(argument) { + var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number); + if (typeof value === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a number'); + } + if (typeof value === 'string') { + if (isBinary(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 2)); + } else if (isOctal(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 8)); + } else if (hasNonWS(value) || isInvalidHexLiteral(value)) { + return NaN; + } else { + var trimmed = $trim(value); + if (trimmed !== value) { + return ToNumber(trimmed); + } + } + } + return $Number(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToObject.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToObject.js new file mode 100644 index 0000000..50d5b94 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToObject.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toobject + +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToPrimitive.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToPrimitive.js new file mode 100644 index 0000000..81c655d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToPrimitive.js @@ -0,0 +1,12 @@ +'use strict'; + +var toPrimitive = require('es-to-primitive/es2015'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive + +module.exports = function ToPrimitive(input) { + if (arguments.length > 1) { + return toPrimitive(input, arguments[1]); + } + return toPrimitive(input); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyDescriptor.js new file mode 100644 index 0000000..38e536e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyDescriptor.js @@ -0,0 +1,52 @@ +'use strict'; + +var has = require('has'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); +var ToBoolean = require('./ToBoolean'); +var IsCallable = require('./IsCallable'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5 + +module.exports = function ToPropertyDescriptor(Obj) { + if (Type(Obj) !== 'Object') { + throw new $TypeError('ToPropertyDescriptor requires an object'); + } + + var desc = {}; + if (has(Obj, 'enumerable')) { + desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable); + } + if (has(Obj, 'configurable')) { + desc['[[Configurable]]'] = ToBoolean(Obj.configurable); + } + if (has(Obj, 'value')) { + desc['[[Value]]'] = Obj.value; + } + if (has(Obj, 'writable')) { + desc['[[Writable]]'] = ToBoolean(Obj.writable); + } + if (has(Obj, 'get')) { + var getter = Obj.get; + if (typeof getter !== 'undefined' && !IsCallable(getter)) { + throw new TypeError('getter must be a function'); + } + desc['[[Get]]'] = getter; + } + if (has(Obj, 'set')) { + var setter = Obj.set; + if (typeof setter !== 'undefined' && !IsCallable(setter)) { + throw new $TypeError('setter must be a function'); + } + desc['[[Set]]'] = setter; + } + + if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) { + throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute'); + } + return desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyKey.js new file mode 100644 index 0000000..38f40dd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToPropertyKey.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +var ToPrimitive = require('./ToPrimitive'); +var ToString = require('./ToString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-topropertykey + +module.exports = function ToPropertyKey(argument) { + var key = ToPrimitive(argument, $String); + return typeof key === 'symbol' ? key : ToString(key); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToString.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToString.js new file mode 100644 index 0000000..a345431 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToString.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function ToString(argument) { + if (typeof argument === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a string'); + } + return $String(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint16.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint16.js new file mode 100644 index 0000000..c8a408b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint16.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.7 + +module.exports = function ToUint16(value) { + var number = ToNumber(value); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x10000); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint32.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint32.js new file mode 100644 index 0000000..3660f62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.6 + +module.exports = function ToUint32(x) { + return ToNumber(x) >>> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8.js new file mode 100644 index 0000000..bf84753 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +module.exports = function ToUint8(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x100); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8Clamp.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8Clamp.js new file mode 100644 index 0000000..c7f9f56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ToUint8Clamp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); + +var $floor = $Math.floor; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-touint8clamp + +module.exports = function ToUint8Clamp(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number <= 0) { return 0; } + if (number >= 0xFF) { return 0xFF; } + var f = $floor(argument); + if (f + 0.5 < number) { return f + 1; } + if (number < f + 0.5) { return f; } + if (f % 2 !== 0) { return f + 1; } + return f; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/Type.js b/tic-tac-toe-app/node_modules/es-abstract/2017/Type.js new file mode 100644 index 0000000..6c99376 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/Type.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5Type = require('../5/Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function Type(x) { + if (typeof x === 'symbol') { + return 'Symbol'; + } + return ES5Type(x); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/ValidateAndApplyPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2017/ValidateAndApplyPropertyDescriptor.js new file mode 100644 index 0000000..d4b9007 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/ValidateAndApplyPropertyDescriptor.js @@ -0,0 +1,170 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var isSamePropertyDescriptor = require('../helpers/isSamePropertyDescriptor'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-validateandapplypropertydescriptor +// https://www.ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor + +// eslint-disable-next-line max-lines-per-function, max-statements, max-params +module.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) { + // this uses the ES2017+ logic, since it fixes a number of bugs in the ES2015 logic. + var oType = Type(O); + if (oType !== 'Undefined' && oType !== 'Object') { + throw new $TypeError('Assertion failed: O must be undefined or an Object'); + } + if (Type(extensible) !== 'Boolean') { + throw new $TypeError('Assertion failed: extensible must be a Boolean'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (Type(current) !== 'Undefined' && !isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, current)) { + throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined'); + } + if (oType !== 'Undefined' && !IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: if O is not undefined, P must be a Property Key'); + } + if (Type(current) === 'Undefined') { + if (!extensible) { + return false; + } + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': Desc['[[Configurable]]'], + '[[Enumerable]]': Desc['[[Enumerable]]'], + '[[Value]]': Desc['[[Value]]'], + '[[Writable]]': Desc['[[Writable]]'] + } + ); + } + } else { + if (!IsAccessorDescriptor(Desc)) { + throw new $TypeError('Assertion failed: Desc is not an accessor descriptor'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + } + return true; + } + if (IsGenericDescriptor(Desc) && !('[[Configurable]]' in Desc) && !('[[Enumerable]]' in Desc)) { + return true; + } + if (isSamePropertyDescriptor({ SameValue: SameValue }, Desc, current)) { + return true; // removed by ES2017, but should still be correct + } + // "if every field in Desc is absent, return true" can't really match the assertion that it's a Property Descriptor + if (!current['[[Configurable]]']) { + if (Desc['[[Configurable]]']) { + return false; + } + if ('[[Enumerable]]' in Desc && !Desc['[[Enumerable]]'] === !!current['[[Enumerable]]']) { + return false; + } + } + if (IsGenericDescriptor(Desc)) { + // no further validation is required. + } else if (IsDataDescriptor(current) !== IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + return false; + } + if (IsDataDescriptor(current)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Get]]': undefined + } + ); + } + } else if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Value]]': undefined + } + ); + } + } else if (IsDataDescriptor(current) && IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]'] && !current['[[Writable]]']) { + if ('[[Writable]]' in Desc && Desc['[[Writable]]']) { + return false; + } + if ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) { + return false; + } + return true; + } + } else if (IsAccessorDescriptor(current) && IsAccessorDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + if ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) { + return false; + } + if ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) { + return false; + } + return true; + } + } else { + throw new $TypeError('Assertion failed: current and Desc are not both data, both accessors, or one accessor and one data.'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/WeekDay.js b/tic-tac-toe-app/node_modules/es-abstract/2017/WeekDay.js new file mode 100644 index 0000000..2973e02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/WeekDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +var Day = require('./Day'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6 + +module.exports = function WeekDay(t) { + return mod(Day(t) + 4, 7); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/YearFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/YearFromTime.js new file mode 100644 index 0000000..ff5339f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/YearFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); + +var callBound = require('../helpers/callBound'); + +var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function YearFromTime(t) { + // largest y such that this.TimeFromYear(y) <= t + return $getUTCFullYear(new $Date(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/modulo.js b/tic-tac-toe-app/node_modules/es-abstract/2017/modulo.js new file mode 100644 index 0000000..bc04c06 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/modulo.js @@ -0,0 +1,9 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-5.2 + +module.exports = function modulo(x, y) { + return mod(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/msFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2017/msFromTime.js new file mode 100644 index 0000000..c31eda0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/msFromTime.js @@ -0,0 +1,10 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerSecond = require('../helpers/timeConstants').msPerSecond; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function msFromTime(t) { + return mod(t, msPerSecond); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/thisBooleanValue.js b/tic-tac-toe-app/node_modules/es-abstract/2017/thisBooleanValue.js new file mode 100644 index 0000000..3ffac9c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/thisBooleanValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $BooleanValueOf = require('../helpers/callBound')('Boolean.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object + +module.exports = function thisBooleanValue(value) { + if (Type(value) === 'Boolean') { + return value; + } + + return $BooleanValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/thisNumberValue.js b/tic-tac-toe-app/node_modules/es-abstract/2017/thisNumberValue.js new file mode 100644 index 0000000..0345e52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/thisNumberValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var Type = require('./Type'); + +var $NumberValueOf = callBound('Number.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object + +module.exports = function thisNumberValue(value) { + if (Type(value) === 'Number') { + return value; + } + + return $NumberValueOf(value); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/thisStringValue.js b/tic-tac-toe-app/node_modules/es-abstract/2017/thisStringValue.js new file mode 100644 index 0000000..3b99b6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/thisStringValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $StringValueOf = require('../helpers/callBound')('String.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object + +module.exports = function thisStringValue(value) { + if (Type(value) === 'String') { + return value; + } + + return $StringValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2017/thisTimeValue.js b/tic-tac-toe-app/node_modules/es-abstract/2017/thisTimeValue.js new file mode 100644 index 0000000..d7cda28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2017/thisTimeValue.js @@ -0,0 +1,9 @@ +'use strict'; + +var $DateValueOf = require('../helpers/callBound')('Date.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object + +module.exports = function thisTimeValue(value) { + return $DateValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/AbstractEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2018/AbstractEqualityComparison.js new file mode 100644 index 0000000..40b3909 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/AbstractEqualityComparison.js @@ -0,0 +1,37 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison + +module.exports = function AbstractEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType === yType) { + return x === y; // ES6+ specified this shortcut anyways. + } + if (x == null && y == null) { + return true; + } + if (xType === 'Number' && yType === 'String') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if (xType === 'String' && yType === 'Number') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (xType === 'Boolean') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (yType === 'Boolean') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') { + return AbstractEqualityComparison(x, ToPrimitive(y)); + } + if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) { + return AbstractEqualityComparison(ToPrimitive(x), y); + } + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/AbstractRelationalComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2018/AbstractRelationalComparison.js new file mode 100644 index 0000000..bc7ca83 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/AbstractRelationalComparison.js @@ -0,0 +1,66 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Number = GetIntrinsic('%Number%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var isPrefixOf = require('../helpers/isPrefixOf'); + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 + +// eslint-disable-next-line max-statements +module.exports = function AbstractRelationalComparison(x, y, LeftFirst) { + if (Type(LeftFirst) !== 'Boolean') { + throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean'); + } + var px; + var py; + if (LeftFirst) { + px = ToPrimitive(x, $Number); + py = ToPrimitive(y, $Number); + } else { + py = ToPrimitive(y, $Number); + px = ToPrimitive(x, $Number); + } + var bothStrings = Type(px) === 'String' && Type(py) === 'String'; + if (!bothStrings) { + var nx = ToNumber(px); + var ny = ToNumber(py); + if ($isNaN(nx) || $isNaN(ny)) { + return undefined; + } + if ($isFinite(nx) && $isFinite(ny) && nx === ny) { + return false; + } + if (nx === 0 && ny === 0) { + return false; + } + if (nx === Infinity) { + return false; + } + if (ny === Infinity) { + return true; + } + if (ny === -Infinity) { + return false; + } + if (nx === -Infinity) { + return true; + } + return nx < ny; // by now, these are both nonzero, finite, and not equal + } + if (isPrefixOf(py, px)) { + return false; + } + if (isPrefixOf(px, py)) { + return true; + } + return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/AdvanceStringIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2018/AdvanceStringIndex.js new file mode 100644 index 0000000..666f578 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/AdvanceStringIndex.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $charCodeAt = require('../helpers/callBound')('String.prototype.charCodeAt'); + +// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex + +module.exports = function AdvanceStringIndex(S, index, unicode) { + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + if (!IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) { + throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53'); + } + if (Type(unicode) !== 'Boolean') { + throw new $TypeError('Assertion failed: `unicode` must be a Boolean'); + } + if (!unicode) { + return index + 1; + } + var length = S.length; + if ((index + 1) >= length) { + return index + 1; + } + + var first = $charCodeAt(S, index); + if (first < 0xD800 || first > 0xDBFF) { + return index + 1; + } + + var second = $charCodeAt(S, index + 1); + if (second < 0xDC00 || second > 0xDFFF) { + return index + 1; + } + + return index + 2; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ArrayCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ArrayCreate.js new file mode 100644 index 0000000..fc9a7cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ArrayCreate.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ArrayPrototype = GetIntrinsic('%Array.prototype%'); +var $RangeError = GetIntrinsic('%RangeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsInteger = require('./IsInteger'); + +var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1; + +var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || ( + // eslint-disable-next-line no-proto, no-negated-condition + [].__proto__ !== $ArrayPrototype + ? null + : function (O, proto) { + O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign + return O; + } +); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate + +module.exports = function ArrayCreate(length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0'); + } + if (length > MAX_ARRAY_LENGTH) { + throw new $RangeError('length is greater than (2**32 - 1)'); + } + var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype; + var A = []; // steps 5 - 7, and 9 + if (proto !== $ArrayPrototype) { // step 8 + if (!$setProto) { + throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]'); + } + $setProto(A, proto); + } + if (length !== 0) { // bypasses the need for step 2 + A.length = length; + } + /* step 10, the above as a shortcut for the below + OrdinaryDefineOwnProperty(A, 'length', { + '[[Configurable]]': false, + '[[Enumerable]]': false, + '[[Value]]': length, + '[[Writable]]': true + }); + */ + return A; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ArraySetLength.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ArraySetLength.js new file mode 100644 index 0000000..c9134c6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ArraySetLength.js @@ -0,0 +1,85 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var assign = require('object.assign'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsArray = require('./IsArray'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var ToUint32 = require('./ToUint32'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraysetlength + +// eslint-disable-next-line max-statements, max-lines-per-function +module.exports = function ArraySetLength(A, Desc) { + if (!IsArray(A)) { + throw new $TypeError('Assertion failed: A must be an Array'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!('[[Value]]' in Desc)) { + return OrdinaryDefineOwnProperty(A, 'length', Desc); + } + var newLenDesc = assign({}, Desc); + var newLen = ToUint32(Desc['[[Value]]']); + var numberLen = ToNumber(Desc['[[Value]]']); + if (newLen !== numberLen) { + throw new $RangeError('Invalid array length'); + } + newLenDesc['[[Value]]'] = newLen; + var oldLenDesc = OrdinaryGetOwnProperty(A, 'length'); + if (!IsDataDescriptor(oldLenDesc)) { + throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`'); + } + var oldLen = oldLenDesc['[[Value]]']; + if (newLen >= oldLen) { + return OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + } + if (!oldLenDesc['[[Writable]]']) { + return false; + } + var newWritable; + if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) { + newWritable = true; + } else { + newWritable = false; + newLenDesc['[[Writable]]'] = true; + } + var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + if (!succeeded) { + return false; + } + while (newLen < oldLen) { + oldLen -= 1; + // eslint-disable-next-line no-param-reassign + var deleteSucceeded = delete A[ToString(oldLen)]; + if (!deleteSucceeded) { + newLenDesc['[[Value]]'] = oldLen + 1; + if (!newWritable) { + newLenDesc['[[Writable]]'] = false; + OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + return false; + } + } + } + if (!newWritable) { + return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ArraySpeciesCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ArraySpeciesCreate.js new file mode 100644 index 0000000..98b9b56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ArraySpeciesCreate.js @@ -0,0 +1,46 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var IsConstructor = require('./IsConstructor'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate + +module.exports = function ArraySpeciesCreate(originalArray, length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: length must be an integer >= 0'); + } + var len = length === 0 ? 0 : length; + var C; + var isArray = IsArray(originalArray); + if (isArray) { + C = Get(originalArray, 'constructor'); + // TODO: figure out how to make a cross-realm normal Array, a same-realm Array + // if (IsConstructor(C)) { + // if C is another realm's Array, C = undefined + // Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ? + // } + if ($species && Type(C) === 'Object') { + C = Get(C, $species); + if (C === null) { + C = void 0; + } + } + } + if (typeof C === 'undefined') { + return $Array(len); + } + if (!IsConstructor(C)) { + throw new $TypeError('C must be a constructor'); + } + return new C(len); // Construct(C, len); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/Call.js b/tic-tac-toe-app/node_modules/es-abstract/2018/Call.js new file mode 100644 index 0000000..f31960d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/Call.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsCallable = require('./IsCallable'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-call + +module.exports = function Call(F, V) { + var args = arguments.length > 2 ? arguments[2] : []; + if (!IsCallable(F)) { + throw new $TypeError(inspect(F) + ' is not a function'); + } + return F.apply(V, args); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CanonicalNumericIndexString.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CanonicalNumericIndexString.js new file mode 100644 index 0000000..625f853 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CanonicalNumericIndexString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring + +module.exports = function CanonicalNumericIndexString(argument) { + if (Type(argument) !== 'String') { + throw new $TypeError('Assertion failed: `argument` must be a String'); + } + if (argument === '-0') { return -0; } + var n = ToNumber(argument); + if (SameValue(ToString(n), argument)) { return n; } + return void 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CompletePropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CompletePropertyDescriptor.js new file mode 100644 index 0000000..548bf41 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CompletePropertyDescriptor.js @@ -0,0 +1,39 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor + +module.exports = function CompletePropertyDescriptor(Desc) { + /* eslint no-param-reassign: 0 */ + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (!has(Desc, '[[Value]]')) { + Desc['[[Value]]'] = void 0; + } + if (!has(Desc, '[[Writable]]')) { + Desc['[[Writable]]'] = false; + } + } else { + if (!has(Desc, '[[Get]]')) { + Desc['[[Get]]'] = void 0; + } + if (!has(Desc, '[[Set]]')) { + Desc['[[Set]]'] = void 0; + } + } + if (!has(Desc, '[[Enumerable]]')) { + Desc['[[Enumerable]]'] = false; + } + if (!has(Desc, '[[Configurable]]')) { + Desc['[[Configurable]]'] = false; + } + return Desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CopyDataProperties.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CopyDataProperties.js new file mode 100644 index 0000000..b75ba42 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CopyDataProperties.js @@ -0,0 +1,60 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); +var forEach = require('../helpers/forEach'); +var OwnPropertyKeys = require('../helpers/OwnPropertyKeys'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +var IsArray = require('./IsArray'); +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-copydataproperties + +module.exports = function CopyDataProperties(target, source, excludedItems) { + if (Type(target) !== 'Object') { + throw new TypeError('Assertion failed: "target" must be an Object'); + } + + if (!IsArray(excludedItems)) { + throw new TypeError('Assertion failed: "excludedItems" must be a List of Property Keys'); + } + for (var i = 0; i < excludedItems.length; i += 1) { + if (!IsPropertyKey(excludedItems[i])) { + throw new TypeError('Assertion failed: "excludedItems" must be a List of Property Keys'); + } + } + + if (typeof source === 'undefined' || source === null) { + return target; + } + + var ES = this; + + var fromObj = ES.ToObject(source); + + var sourceKeys = OwnPropertyKeys(fromObj); + forEach(sourceKeys, function (nextKey) { + var excluded = false; + + forEach(excludedItems, function (e) { + if (ES.SameValue(e, nextKey) === true) { + excluded = true; + } + }); + + var enumerable = $isEnumerable(fromObj, nextKey) || ( + // this is to handle string keys being non-enumerable in older engines + typeof source === 'string' + && nextKey >= 0 + && ES.IsInteger(ES.ToNumber(nextKey)) + ); + if (excluded === false && enumerable) { + var propValue = ES.Get(fromObj, nextKey); + ES.CreateDataProperty(target, nextKey, propValue); + } + }); + + return target; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataProperty.js new file mode 100644 index 0000000..32a86ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataProperty.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty + +module.exports = function CreateDataProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var oldDesc = OrdinaryGetOwnProperty(O, P); + var extensible = !oldDesc || IsExtensible(O); + var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']); + if (immutable || !extensible) { + return false; + } + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': true, + '[[Enumerable]]': true, + '[[Value]]': V, + '[[Writable]]': true + } + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataPropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataPropertyOrThrow.js new file mode 100644 index 0000000..9feaec8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateDataPropertyOrThrow.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var CreateDataProperty = require('./CreateDataProperty'); +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow + +module.exports = function CreateDataPropertyOrThrow(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var success = CreateDataProperty(O, P, V); + if (!success) { + throw new $TypeError('unable to create data property'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CreateHTML.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateHTML.js new file mode 100644 index 0000000..536c92d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateHTML.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $replace = callBound('String.prototype.replace'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml + +module.exports = function CreateHTML(string, tag, attribute, value) { + if (Type(tag) !== 'String' || Type(attribute) !== 'String') { + throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings'); + } + var str = RequireObjectCoercible(string); + var S = ToString(str); + var p1 = '<' + tag; + if (attribute !== '') { + var V = ToString(value); + var escapedV = $replace(V, /\x22/g, '"'); + p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22'; + } + return p1 + '>' + S + ''; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CreateIterResultObject.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateIterResultObject.js new file mode 100644 index 0000000..aef1d22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateIterResultObject.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject + +module.exports = function CreateIterResultObject(value, done) { + if (Type(done) !== 'Boolean') { + throw new $TypeError('Assertion failed: Type(done) is not Boolean'); + } + return { + value: value, + done: done + }; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CreateListFromArrayLike.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateListFromArrayLike.js new file mode 100644 index 0000000..d6b44b5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateListFromArrayLike.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBound = require('../helpers/callBound'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf'); +var $push = callBound('Array.prototype.push'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToLength = require('./ToLength'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike +module.exports = function CreateListFromArrayLike(obj) { + var elementTypes = arguments.length > 1 + ? arguments[1] + : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object']; + + if (Type(obj) !== 'Object') { + throw new $TypeError('Assertion failed: `obj` must be an Object'); + } + if (!IsArray(elementTypes)) { + throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array'); + } + var len = ToLength(Get(obj, 'length')); + var list = []; + var index = 0; + while (index < len) { + var indexName = ToString(index); + var next = Get(obj, indexName); + var nextType = Type(next); + if ($indexOf(elementTypes, nextType) < 0) { + throw new $TypeError('item type ' + nextType + ' is not a valid elementType'); + } + $push(list, next); + index += 1; + } + return list; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/CreateMethodProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateMethodProperty.js new file mode 100644 index 0000000..5b599ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/CreateMethodProperty.js @@ -0,0 +1,40 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createmethodproperty + +module.exports = function CreateMethodProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var newDesc = { + '[[Configurable]]': true, + '[[Enumerable]]': false, + '[[Value]]': V, + '[[Writable]]': true + }; + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + newDesc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/DateFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/DateFromTime.js new file mode 100644 index 0000000..962dba1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/DateFromTime.js @@ -0,0 +1,54 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); +var MonthFromTime = require('./MonthFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5 + +module.exports = function DateFromTime(t) { + var m = MonthFromTime(t); + var d = DayWithinYear(t); + if (m === 0) { + return d + 1; + } + if (m === 1) { + return d - 30; + } + var leap = InLeapYear(t); + if (m === 2) { + return d - 58 - leap; + } + if (m === 3) { + return d - 89 - leap; + } + if (m === 4) { + return d - 119 - leap; + } + if (m === 5) { + return d - 150 - leap; + } + if (m === 6) { + return d - 180 - leap; + } + if (m === 7) { + return d - 211 - leap; + } + if (m === 8) { + return d - 242 - leap; + } + if (m === 9) { + return d - 272 - leap; + } + if (m === 10) { + return d - 303 - leap; + } + if (m === 11) { + return d - 333 - leap; + } + throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/DateString.js b/tic-tac-toe-app/node_modules/es-abstract/2018/DateString.js new file mode 100644 index 0000000..fc30329 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/DateString.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + +var $isNaN = require('../helpers/isNaN'); +var padTimeComponent = require('../helpers/padTimeComponent'); + +var Type = require('./Type'); +var WeekDay = require('./WeekDay'); +var MonthFromTime = require('./MonthFromTime'); +var YearFromTime = require('./YearFromTime'); +var DateFromTime = require('./DateFromTime'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-datestring + +module.exports = function DateString(tv) { + if (Type(tv) !== 'Number' || $isNaN(tv)) { + throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number'); + } + var weekday = weekdays[WeekDay(tv)]; + var month = months[MonthFromTime(tv)]; + var day = padTimeComponent(DateFromTime(tv)); + var year = padTimeComponent(YearFromTime(tv), 4); + return weekday + '\x20' + month + '\x20' + day + '\x20' + year; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/Day.js b/tic-tac-toe-app/node_modules/es-abstract/2018/Day.js new file mode 100644 index 0000000..00df813 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/Day.js @@ -0,0 +1,13 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function Day(t) { + return $floor(t / msPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/DayFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2018/DayFromYear.js new file mode 100644 index 0000000..08dd5af --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/DayFromYear.js @@ -0,0 +1,12 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DayFromYear(y) { + return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/DayWithinYear.js b/tic-tac-toe-app/node_modules/es-abstract/2018/DayWithinYear.js new file mode 100644 index 0000000..cfc4002 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/DayWithinYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var Day = require('./Day'); +var DayFromYear = require('./DayFromYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function DayWithinYear(t) { + return Day(t) - DayFromYear(YearFromTime(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/DaysInYear.js b/tic-tac-toe-app/node_modules/es-abstract/2018/DaysInYear.js new file mode 100644 index 0000000..db32251 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/DaysInYear.js @@ -0,0 +1,18 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DaysInYear(y) { + if (mod(y, 4) !== 0) { + return 365; + } + if (mod(y, 100) !== 0) { + return 366; + } + if (mod(y, 400) !== 0) { + return 365; + } + return 366; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/DefinePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2018/DefinePropertyOrThrow.js new file mode 100644 index 0000000..7977f6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/DefinePropertyOrThrow.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow + +module.exports = function DefinePropertyOrThrow(O, P, desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var Desc = isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, desc) ? desc : ToPropertyDescriptor(desc); + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor'); + } + + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/DeletePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2018/DeletePropertyOrThrow.js new file mode 100644 index 0000000..b476817 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/DeletePropertyOrThrow.js @@ -0,0 +1,27 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow + +module.exports = function DeletePropertyOrThrow(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // eslint-disable-next-line no-param-reassign + var success = delete O[P]; + if (!success) { + throw new $TypeError('Attempt to delete property failed.'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js b/tic-tac-toe-app/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js new file mode 100644 index 0000000..e2ed722 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/EnumerableOwnPropertyNames.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var objectKeys = require('object-keys'); + +var callBound = require('../helpers/callBound'); + +var callBind = require('../helpers/callBind'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); +var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%')); + +var forEach = require('../helpers/forEach'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-enumerableownproperties + +module.exports = function EnumerableOwnProperties(O, kind) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + var keys = objectKeys(O); + if (kind === 'key') { + return keys; + } + if (kind === 'value' || kind === 'key+value') { + var results = []; + forEach(keys, function (key) { + if ($isEnumerable(O, key)) { + $pushApply(results, [ + kind === 'value' ? O[key] : [key, O[key]] + ]); + } + }); + return results; + } + throw new $TypeError('Assertion failed: "kind" is not "key", "value", or "key+value": ' + kind); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/FromPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/FromPropertyDescriptor.js new file mode 100644 index 0000000..5ec200e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/FromPropertyDescriptor.js @@ -0,0 +1,36 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor + +module.exports = function FromPropertyDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return Desc; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + var obj = {}; + if ('[[Value]]' in Desc) { + obj.value = Desc['[[Value]]']; + } + if ('[[Writable]]' in Desc) { + obj.writable = Desc['[[Writable]]']; + } + if ('[[Get]]' in Desc) { + obj.get = Desc['[[Get]]']; + } + if ('[[Set]]' in Desc) { + obj.set = Desc['[[Set]]']; + } + if ('[[Enumerable]]' in Desc) { + obj.enumerable = Desc['[[Enumerable]]']; + } + if ('[[Configurable]]' in Desc) { + obj.configurable = Desc['[[Configurable]]']; + } + return obj; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/Get.js b/tic-tac-toe-app/node_modules/es-abstract/2018/Get.js new file mode 100644 index 0000000..5b9ad78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/Get.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +/** + * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p + * 1. Assert: Type(O) is Object. + * 2. Assert: IsPropertyKey(P) is true. + * 3. Return O.[[Get]](P, O). + */ + +module.exports = function Get(O, P) { + // 7.3.1.1 + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + // 7.3.1.2 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P)); + } + // 7.3.1.3 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/GetIterator.js b/tic-tac-toe-app/node_modules/es-abstract/2018/GetIterator.js new file mode 100644 index 0000000..7beddac --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/GetIterator.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getIteratorMethod = require('../helpers/getIteratorMethod'); +var AdvanceStringIndex = require('./AdvanceStringIndex'); +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsArray = require('./IsArray'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getiterator + +module.exports = function GetIterator(obj, method) { + var actualMethod = method; + if (arguments.length < 2) { + actualMethod = getIteratorMethod( + { + AdvanceStringIndex: AdvanceStringIndex, + GetMethod: GetMethod, + IsArray: IsArray, + Type: Type + }, + obj + ); + } + var iterator = Call(actualMethod, obj); + if (Type(iterator) !== 'Object') { + throw new $TypeError('iterator must return an object'); + } + + return iterator; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/GetMethod.js b/tic-tac-toe-app/node_modules/es-abstract/2018/GetMethod.js new file mode 100644 index 0000000..aef8cbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/GetMethod.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var GetV = require('./GetV'); +var IsCallable = require('./IsCallable'); +var IsPropertyKey = require('./IsPropertyKey'); + +/** + * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let func be GetV(O, P). + * 3. ReturnIfAbrupt(func). + * 4. If func is either undefined or null, return undefined. + * 5. If IsCallable(func) is false, throw a TypeError exception. + * 6. Return func. + */ + +module.exports = function GetMethod(O, P) { + // 7.3.9.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.9.2 + var func = GetV(O, P); + + // 7.3.9.4 + if (func == null) { + return void 0; + } + + // 7.3.9.5 + if (!IsCallable(func)) { + throw new $TypeError(P + 'is not a function'); + } + + // 7.3.9.6 + return func; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/GetOwnPropertyKeys.js b/tic-tac-toe-app/node_modules/es-abstract/2018/GetOwnPropertyKeys.js new file mode 100644 index 0000000..8d7e5ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/GetOwnPropertyKeys.js @@ -0,0 +1,31 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var hasSymbols = require('has-symbols')(); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%'); +var keys = require('object-keys'); + +var esType = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys + +module.exports = function GetOwnPropertyKeys(O, Type) { + if (esType(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (Type === 'Symbol') { + return $gOPS ? $gOPS(O) : []; + } + if (Type === 'String') { + if (!$gOPN) { + return keys(O); + } + return $gOPN(O); + } + throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js new file mode 100644 index 0000000..62da8fb --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/GetPrototypeFromConstructor.js @@ -0,0 +1,28 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Function = GetIntrinsic('%Function%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor + +module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { + var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic + if (!IsConstructor(constructor)) { + throw new $TypeError('Assertion failed: `constructor` must be a constructor'); + } + var proto = Get(constructor, 'prototype'); + if (Type(proto) !== 'Object') { + if (!(constructor instanceof $Function)) { + // ignore other realms, for now + throw new $TypeError('cross-realm constructors not currently supported'); + } + proto = intrinsic; + } + return proto; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/GetSubstitution.js b/tic-tac-toe-app/node_modules/es-abstract/2018/GetSubstitution.js new file mode 100644 index 0000000..2ec9ebc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/GetSubstitution.js @@ -0,0 +1,128 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); +var regexTester = require('../helpers/regexTester'); +var every = require('../helpers/every'); + +var $charAt = callBound('String.prototype.charAt'); +var $strSlice = callBound('String.prototype.slice'); +var $indexOf = callBound('String.prototype.indexOf'); +var $parseInt = parseInt; + +var isDigit = regexTester(/^[0-9]$/); + +var inspect = require('object-inspect'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var IsInteger = require('./IsInteger'); +var ToObject = require('./ToObject'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false + +var isStringOrHole = function (capture, index, arr) { + return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined'); +}; + +// http://www.ecma-international.org/ecma-262/9.0/#sec-getsubstitution + +// eslint-disable-next-line max-statements, max-params, max-lines-per-function +module.exports = function GetSubstitution(matched, str, position, captures, namedCaptures, replacement) { + if (Type(matched) !== 'String') { + throw new $TypeError('Assertion failed: `matched` must be a String'); + } + var matchLength = matched.length; + + if (Type(str) !== 'String') { + throw new $TypeError('Assertion failed: `str` must be a String'); + } + var stringLength = str.length; + + if (!IsInteger(position) || position < 0 || position > stringLength) { + throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position)); + } + + if (!IsArray(captures) || !every(captures, isStringOrHole)) { + throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures)); + } + + if (Type(replacement) !== 'String') { + throw new $TypeError('Assertion failed: `replacement` must be a String'); + } + + var tailPos = position + matchLength; + var m = captures.length; + if (Type(namedCaptures) !== 'Undefined') { + namedCaptures = ToObject(namedCaptures); // eslint-disable-line no-param-reassign + } + + var result = ''; + for (var i = 0; i < replacement.length; i += 1) { + // if this is a $, and it's not the end of the replacement + var current = $charAt(replacement, i); + var isLast = (i + 1) >= replacement.length; + var nextIsLast = (i + 2) >= replacement.length; + if (current === '$' && !isLast) { + var next = $charAt(replacement, i + 1); + if (next === '$') { + result += '$'; + i += 1; + } else if (next === '&') { + result += matched; + i += 1; + } else if (next === '`') { + result += position === 0 ? '' : $strSlice(str, 0, position - 1); + i += 1; + } else if (next === "'") { + result += tailPos >= stringLength ? '' : $strSlice(str, tailPos); + i += 1; + } else { + var nextNext = nextIsLast ? null : $charAt(replacement, i + 2); + if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) { + // $1 through $9, and not followed by a digit + var n = $parseInt(next, 10); + // if (n > m, impl-defined) + result += (n <= m && Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1]; + i += 1; + } else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) { + // $00 through $99 + var nn = next + nextNext; + var nnI = $parseInt(nn, 10) - 1; + // if nn === '00' or nn > m, impl-defined + result += (nn <= m && Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI]; + i += 2; + } else if (next === '<') { + // eslint-disable-next-line max-depth + if (Type(namedCaptures) === 'Undefined') { + result += '$<'; + i += 2; + } else { + var endIndex = $indexOf(replacement, '>', i); + // eslint-disable-next-line max-depth + if (endIndex > -1) { + var groupName = $strSlice(replacement, i, endIndex); + var capture = Get(namedCaptures, groupName); + // eslint-disable-next-line max-depth + if (Type(capture) !== 'Undefined') { + result += ToString(capture); + } + i += '$<' + groupName + '>'.length; + } + } + } else { + result += '$'; + } + } + } else { + // the final $, or else not a $ + result += $charAt(replacement, i); + } + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/GetV.js b/tic-tac-toe-app/node_modules/es-abstract/2018/GetV.js new file mode 100644 index 0000000..7b5139a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/GetV.js @@ -0,0 +1,29 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var ToObject = require('./ToObject'); + +/** + * 7.3.2 GetV (V, P) + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let O be ToObject(V). + * 3. ReturnIfAbrupt(O). + * 4. Return O.[[Get]](P, V). + */ + +module.exports = function GetV(V, P) { + // 7.3.2.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.2.2-3 + var O = ToObject(V); + + // 7.3.2.4 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/HasOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2018/HasOwnProperty.js new file mode 100644 index 0000000..679059f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/HasOwnProperty.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var has = require('has'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty + +module.exports = function HasOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return has(O, P); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/HasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2018/HasProperty.js new file mode 100644 index 0000000..5f2d212 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/HasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty + +module.exports = function HasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/HourFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/HourFromTime.js new file mode 100644 index 0000000..957ce32 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/HourFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerHour = timeConstants.msPerHour; +var HoursPerDay = timeConstants.HoursPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function HourFromTime(t) { + return mod($floor(t / msPerHour), HoursPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/InLeapYear.js b/tic-tac-toe-app/node_modules/es-abstract/2018/InLeapYear.js new file mode 100644 index 0000000..38ba8fd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/InLeapYear.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DaysInYear = require('./DaysInYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function InLeapYear(t) { + var days = DaysInYear(YearFromTime(t)); + if (days === 365) { + return 0; + } + if (days === 366) { + return 1; + } + throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/InstanceofOperator.js b/tic-tac-toe-app/node_modules/es-abstract/2018/InstanceofOperator.js new file mode 100644 index 0000000..ebd308c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/InstanceofOperator.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $hasInstance = GetIntrinsic('Symbol.hasInstance', true); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var OrdinaryHasInstance = require('./OrdinaryHasInstance'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator + +module.exports = function InstanceofOperator(O, C) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0; + if (typeof instOfHandler !== 'undefined') { + return ToBoolean(Call(instOfHandler, C, [O])); + } + if (!IsCallable(C)) { + throw new $TypeError('`C` is not Callable'); + } + return OrdinaryHasInstance(C, O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/Invoke.js b/tic-tac-toe-app/node_modules/es-abstract/2018/Invoke.js new file mode 100644 index 0000000..769f0e3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/Invoke.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $arraySlice = require('../helpers/callBound')('Array.prototype.slice'); + +var Call = require('./Call'); +var GetV = require('./GetV'); +var IsPropertyKey = require('./IsPropertyKey'); + +// https://ecma-international.org/ecma-262/6.0/#sec-invoke + +module.exports = function Invoke(O, P) { + if (!IsPropertyKey(P)) { + throw new $TypeError('P must be a Property Key'); + } + var argumentsList = $arraySlice(arguments, 2); + var func = GetV(O, P); + return Call(func, O, argumentsList); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsAccessorDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsAccessorDescriptor.js new file mode 100644 index 0000000..5139464 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsAccessorDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor + +module.exports = function IsAccessorDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsArray.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsArray.js new file mode 100644 index 0000000..7b25f37 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsArray.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); + +// eslint-disable-next-line global-require +var toStr = !$Array.isArray && require('../helpers/callBound')('Object.prototype.toString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray + +module.exports = $Array.isArray || function IsArray(argument) { + return toStr(argument) === '[object Array]'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsCallable.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsCallable.js new file mode 100644 index 0000000..e4bfa36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsCallable.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11 + +module.exports = require('is-callable'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsConcatSpreadable.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsConcatSpreadable.js new file mode 100644 index 0000000..dc8aae1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsConcatSpreadable.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable + +module.exports = function IsConcatSpreadable(O) { + if (Type(O) !== 'Object') { + return false; + } + if ($isConcatSpreadable) { + var spreadable = Get(O, $isConcatSpreadable); + if (typeof spreadable !== 'undefined') { + return ToBoolean(spreadable); + } + } + return IsArray(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsConstructor.js new file mode 100644 index 0000000..00ea52c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsConstructor.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor + +module.exports = function IsConstructor(argument) { + return typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument` +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsDataDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsDataDescriptor.js new file mode 100644 index 0000000..0ad3045 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsDataDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor + +module.exports = function IsDataDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsExtensible.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsExtensible.js new file mode 100644 index 0000000..0c4c8a6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsExtensible.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var isPrimitive = require('../helpers/isPrimitive'); + +var $preventExtensions = $Object.preventExtensions; +var $isExtensible = $Object.isExtensible; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o + +module.exports = $preventExtensions + ? function IsExtensible(obj) { + return !isPrimitive(obj) && $isExtensible(obj); + } + : function IsExtensible(obj) { + return !isPrimitive(obj); + }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsGenericDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsGenericDescriptor.js new file mode 100644 index 0000000..8618ce4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsGenericDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor + +module.exports = function IsGenericDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) { + return true; + } + + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsInteger.js new file mode 100644 index 0000000..0f488b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsInteger.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isinteger + +module.exports = function IsInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var abs = $abs(argument); + return $floor(abs) === abs; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsPromise.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsPromise.js new file mode 100644 index 0000000..e8e92a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsPromise.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $PromiseThen = callBound('Promise.prototype.then', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise + +module.exports = function IsPromise(x) { + if (Type(x) !== 'Object') { + return false; + } + if (!$PromiseThen) { // Promises are not supported + return false; + } + try { + $PromiseThen(x); // throws if not a promise + } catch (e) { + return false; + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsPropertyKey.js new file mode 100644 index 0000000..74b8d95 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsPropertyKey.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey + +module.exports = function IsPropertyKey(argument) { + return typeof argument === 'string' || typeof argument === 'symbol'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsRegExp.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsRegExp.js new file mode 100644 index 0000000..fdf2323 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsRegExp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $match = GetIntrinsic('%Symbol.match%', true); + +var hasRegExpMatcher = require('is-regex'); + +var ToBoolean = require('./ToBoolean'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isregexp + +module.exports = function IsRegExp(argument) { + if (!argument || typeof argument !== 'object') { + return false; + } + if ($match) { + var isRegExp = argument[$match]; + if (typeof isRegExp !== 'undefined') { + return ToBoolean(isRegExp); + } + } + return hasRegExpMatcher(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IsStringPrefix.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IsStringPrefix.js new file mode 100644 index 0000000..f5e2996 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IsStringPrefix.js @@ -0,0 +1,47 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPrefixOf = require('../helpers/isPrefixOf'); + +// var callBound = require('../helpers/callBound'); + +// var $charAt = callBound('String.prototype.charAt'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-isstringprefix + +module.exports = function IsStringPrefix(p, q) { + if (Type(p) !== 'String') { + throw new $TypeError('Assertion failed: "p" must be a String'); + } + + if (Type(q) !== 'String') { + throw new $TypeError('Assertion failed: "q" must be a String'); + } + + return isPrefixOf(p, q); + /* + if (p === q || p === '') { + return true; + } + + var pLength = p.length; + var qLength = q.length; + if (pLength >= qLength) { + return false; + } + + // assert: pLength < qLength + + for (var i = 0; i < pLength; i += 1) { + if ($charAt(p, i) !== $charAt(q, i)) { + return false; + } + } + return true; + */ +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IterableToList.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IterableToList.js new file mode 100644 index 0000000..0b8cdcf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IterableToList.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); +var $arrayPush = callBound('Array.prototype.push'); + +var GetIterator = require('./GetIterator'); +var IteratorStep = require('./IteratorStep'); +var IteratorValue = require('./IteratorValue'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-iterabletolist + +module.exports = function IterableToList(items, method) { + var iterator = GetIterator(items, method); + var values = []; + var next = true; + while (next) { + next = IteratorStep(iterator); + if (next) { + var nextValue = IteratorValue(next); + $arrayPush(values, nextValue); + } + } + return values; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorClose.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorClose.js new file mode 100644 index 0000000..35c8c2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorClose.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose + +module.exports = function IteratorClose(iterator, completion) { + if (Type(iterator) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterator) is not Object'); + } + if (!IsCallable(completion)) { + throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record'); + } + var completionThunk = completion; + + var iteratorReturn = GetMethod(iterator, 'return'); + + if (typeof iteratorReturn === 'undefined') { + return completionThunk(); + } + + var completionRecord; + try { + var innerResult = Call(iteratorReturn, iterator, []); + } catch (e) { + // if we hit here, then "e" is the innerResult completion that needs re-throwing + + // if the completion is of type "throw", this will throw. + completionThunk(); + completionThunk = null; // ensure it's not called twice. + + // if not, then return the innerResult completion + throw e; + } + completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does + completionThunk = null; // ensure it's not called twice. + + if (Type(innerResult) !== 'Object') { + throw new $TypeError('iterator .return must return an object'); + } + + return completionRecord; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorComplete.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorComplete.js new file mode 100644 index 0000000..a62b9bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorComplete.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete + +module.exports = function IteratorComplete(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return ToBoolean(Get(iterResult, 'done')); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorNext.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorNext.js new file mode 100644 index 0000000..7e59915 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorNext.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Invoke = require('./Invoke'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext + +module.exports = function IteratorNext(iterator, value) { + var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]); + if (Type(result) !== 'Object') { + throw new $TypeError('iterator next must return an object'); + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorStep.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorStep.js new file mode 100644 index 0000000..41b9d1b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorStep.js @@ -0,0 +1,13 @@ +'use strict'; + +var IteratorComplete = require('./IteratorComplete'); +var IteratorNext = require('./IteratorNext'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep + +module.exports = function IteratorStep(iterator) { + var result = IteratorNext(iterator); + var done = IteratorComplete(result); + return done === true ? false : result; +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorValue.js b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorValue.js new file mode 100644 index 0000000..5e71a44 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/IteratorValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue + +module.exports = function IteratorValue(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return Get(iterResult, 'value'); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/MakeDate.js b/tic-tac-toe-app/node_modules/es-abstract/2018/MakeDate.js new file mode 100644 index 0000000..7b592d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/MakeDate.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13 + +module.exports = function MakeDate(day, time) { + if (!$isFinite(day) || !$isFinite(time)) { + return NaN; + } + return (day * msPerDay) + time; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/MakeDay.js b/tic-tac-toe-app/node_modules/es-abstract/2018/MakeDay.js new file mode 100644 index 0000000..f1ab810 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/MakeDay.js @@ -0,0 +1,33 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); +var $DateUTC = GetIntrinsic('%Date.UTC%'); + +var mod = require('../helpers/mod'); +var $isFinite = require('../helpers/isFinite'); + +var DateFromTime = require('./DateFromTime'); +var Day = require('./Day'); +var MonthFromTime = require('./MonthFromTime'); +var ToInteger = require('./ToInteger'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12 + +module.exports = function MakeDay(year, month, date) { + if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) { + return NaN; + } + var y = ToInteger(year); + var m = ToInteger(month); + var dt = ToInteger(date); + var ym = y + $floor(m / 12); + var mn = mod(m, 12); + var t = $DateUTC(ym, mn, 1); + if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) { + return NaN; + } + return Day(t) + dt - 1; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/MakeTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/MakeTime.js new file mode 100644 index 0000000..e118500 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/MakeTime.js @@ -0,0 +1,23 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var msPerMinute = timeConstants.msPerMinute; +var msPerHour = timeConstants.msPerHour; + +var ToInteger = require('./ToInteger'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11 + +module.exports = function MakeTime(hour, min, sec, ms) { + if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) { + return NaN; + } + var h = ToInteger(hour); + var m = ToInteger(min); + var s = ToInteger(sec); + var milli = ToInteger(ms); + var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli; + return t; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/MinFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/MinFromTime.js new file mode 100644 index 0000000..e80e191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/MinFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerMinute = timeConstants.msPerMinute; +var MinutesPerHour = timeConstants.MinutesPerHour; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function MinFromTime(t) { + return mod($floor(t / msPerMinute), MinutesPerHour); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/MonthFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/MonthFromTime.js new file mode 100644 index 0000000..4f120f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/MonthFromTime.js @@ -0,0 +1,47 @@ +'use strict'; + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function MonthFromTime(t) { + var day = DayWithinYear(t); + if (0 <= day && day < 31) { + return 0; + } + var leap = InLeapYear(t); + if (31 <= day && day < (59 + leap)) { + return 1; + } + if ((59 + leap) <= day && day < (90 + leap)) { + return 2; + } + if ((90 + leap) <= day && day < (120 + leap)) { + return 3; + } + if ((120 + leap) <= day && day < (151 + leap)) { + return 4; + } + if ((151 + leap) <= day && day < (181 + leap)) { + return 5; + } + if ((181 + leap) <= day && day < (212 + leap)) { + return 6; + } + if ((212 + leap) <= day && day < (243 + leap)) { + return 7; + } + if ((243 + leap) <= day && day < (273 + leap)) { + return 8; + } + if ((273 + leap) <= day && day < (304 + leap)) { + return 9; + } + if ((304 + leap) <= day && day < (334 + leap)) { + return 10; + } + if ((334 + leap) <= day && day < (365 + leap)) { + return 11; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/NumberToString.js b/tic-tac-toe-app/node_modules/es-abstract/2018/NumberToString.js new file mode 100644 index 0000000..2cc70e0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/NumberToString.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-tostring-applied-to-the-number-type + +module.exports = function NumberToString(m) { + if (Type(m) !== 'Number') { + throw new TypeError('Assertion failed: "m" must be a String'); + } + + return $String(m); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ObjectCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ObjectCreate.js new file mode 100644 index 0000000..e2445b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ObjectCreate.js @@ -0,0 +1,37 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ObjectCreate = GetIntrinsic('%Object.create%', true); +var $TypeError = GetIntrinsic('%TypeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); + +var Type = require('./Type'); + +var hasProto = !({ __proto__: null } instanceof Object); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate + +module.exports = function ObjectCreate(proto, internalSlotsList) { + if (proto !== null && Type(proto) !== 'Object') { + throw new $TypeError('Assertion failed: `proto` must be null or an object'); + } + var slots = arguments.length < 2 ? [] : internalSlotsList; + if (slots.length > 0) { + throw new $SyntaxError('es-abstract does not yet support internal slots'); + } + + if ($ObjectCreate) { + return $ObjectCreate(proto); + } + if (hasProto) { + return { __proto__: proto }; + } + + if (proto === null) { + throw new $SyntaxError('native Object.create support is required to create null objects'); + } + var T = function T() {}; + T.prototype = proto; + return new T(); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js new file mode 100644 index 0000000..59780b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryDefineOwnProperty.js @@ -0,0 +1,61 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); +var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty + +module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!$gOPD) { + // ES3/IE 8 fallback + if (IsAccessorDescriptor(Desc)) { + throw new $SyntaxError('This environment does not support accessor property descriptors.'); + } + var creatingNormalDataProperty = !(P in O) + && Desc['[[Writable]]'] + && Desc['[[Enumerable]]'] + && Desc['[[Configurable]]'] + && '[[Value]]' in Desc; + var settingExistingDataProperty = (P in O) + && (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]']) + && (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]']) + && (!('[[Writable]]' in Desc) || Desc['[[Writable]]']) + && '[[Value]]' in Desc; + if (creatingNormalDataProperty || settingExistingDataProperty) { + O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign + return SameValue(O[P], Desc['[[Value]]']); + } + throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties'); + } + var desc = $gOPD(O, P); + var current = desc && ToPropertyDescriptor(desc); + var extensible = IsExtensible(O); + return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js new file mode 100644 index 0000000..b9882e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetOwnProperty.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +var has = require('has'); + +var IsArray = require('./IsArray'); +var IsPropertyKey = require('./IsPropertyKey'); +var IsRegExp = require('./IsRegExp'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty + +module.exports = function OrdinaryGetOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!has(O, P)) { + return void 0; + } + if (!$gOPD) { + // ES3 / IE 8 fallback + var arrayLength = IsArray(O) && P === 'length'; + var regexLastIndex = IsRegExp(O) && P === 'lastIndex'; + return { + '[[Configurable]]': !(arrayLength || regexLastIndex), + '[[Enumerable]]': $isEnumerable(O, P), + '[[Value]]': O[P], + '[[Writable]]': true + }; + } + return ToPropertyDescriptor($gOPD(O, P)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetPrototypeOf.js new file mode 100644 index 0000000..344077a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryGetPrototypeOf.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $getProto = require('../helpers/getProto'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetprototypeof + +module.exports = function OrdinaryGetPrototypeOf(O) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!$getProto) { + throw new $TypeError('This environment does not support fetching prototypes.'); + } + return $getProto(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasInstance.js b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasInstance.js new file mode 100644 index 0000000..51abe26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasInstance.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance + +module.exports = function OrdinaryHasInstance(C, O) { + if (IsCallable(C) === false) { + return false; + } + if (Type(O) !== 'Object') { + return false; + } + var P = Get(C, 'prototype'); + if (Type(P) !== 'Object') { + throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.'); + } + return O instanceof C; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasProperty.js new file mode 100644 index 0000000..076c25a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinaryHasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty + +module.exports = function OrdinaryHasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js new file mode 100644 index 0000000..3541331 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/OrdinarySetPrototypeOf.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $setProto = require('../helpers/setProto'); + +var OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarysetprototypeof + +module.exports = function OrdinarySetPrototypeOf(O, V) { + if (Type(V) !== 'Object' && Type(V) !== 'Null') { + throw new $TypeError('Assertion failed: V must be Object or Null'); + } + /* + var extensible = IsExtensible(O); + var current = OrdinaryGetPrototypeOf(O); + if (SameValue(V, current)) { + return true; + } + if (!extensible) { + return false; + } + */ + try { + $setProto(O, V); + } catch (e) { + return false; + } + return OrdinaryGetPrototypeOf(O) === V; + /* + var p = V; + var done = false; + while (!done) { + if (p === null) { + done = true; + } else if (SameValue(p, O)) { + return false; + } else { + if (wat) { + done = true; + } else { + p = p.[[Prototype]]; + } + } + } + O.[[Prototype]] = V; + return true; + */ +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/PromiseResolve.js b/tic-tac-toe-app/node_modules/es-abstract/2018/PromiseResolve.js new file mode 100644 index 0000000..f70745d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/PromiseResolve.js @@ -0,0 +1,15 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $PromiseResolve = callBound('Promise.resolve', true); + +// https://ecma-international.org/ecma-262/9.0/#sec-promise-resolve + +module.exports = function PromiseResolve(C, x) { + if (!$PromiseResolve) { + throw new SyntaxError('This environment does not support Promises.'); + } + return $PromiseResolve(C, x); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/RegExpExec.js b/tic-tac-toe-app/node_modules/es-abstract/2018/RegExpExec.js new file mode 100644 index 0000000..15c9186 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/RegExpExec.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var regexExec = require('../helpers/callBound')('RegExp.prototype.exec'); + +var Call = require('./Call'); +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec + +module.exports = function RegExpExec(R, S) { + if (Type(R) !== 'Object') { + throw new $TypeError('Assertion failed: `R` must be an Object'); + } + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + var exec = Get(R, 'exec'); + if (IsCallable(exec)) { + var result = Call(exec, R, [S]); + if (result === null || Type(result) === 'Object') { + return result; + } + throw new $TypeError('"exec" method must return `null` or an Object'); + } + return regexExec(R, S); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/RequireObjectCoercible.js b/tic-tac-toe-app/node_modules/es-abstract/2018/RequireObjectCoercible.js new file mode 100644 index 0000000..9008359 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/RequireObjectCoercible.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../5/CheckObjectCoercible'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SameValue.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SameValue.js new file mode 100644 index 0000000..47c936d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SameValue.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12 + +module.exports = function SameValue(x, y) { + if (x === y) { // 0 === -0, but they are not identical. + if (x === 0) { return 1 / x === 1 / y; } + return true; + } + return $isNaN(x) && $isNaN(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SameValueNonNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SameValueNonNumber.js new file mode 100644 index 0000000..5668752 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SameValueNonNumber.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); + +// https://www.ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber + +module.exports = function SameValueNonNumber(x, y) { + if (typeof x === 'number' || typeof x !== typeof y) { + throw new $TypeError('SameValueNonNumber requires two non-number values of the same type.'); + } + return SameValue(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SameValueZero.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SameValueZero.js new file mode 100644 index 0000000..0dedcd2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SameValueZero.js @@ -0,0 +1,9 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-samevaluezero + +module.exports = function SameValueZero(x, y) { + return (x === y) || ($isNaN(x) && $isNaN(y)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SecFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SecFromTime.js new file mode 100644 index 0000000..7190011 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SecFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var SecondsPerMinute = timeConstants.SecondsPerMinute; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function SecFromTime(t) { + return mod($floor(t / msPerSecond), SecondsPerMinute); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/Set.js b/tic-tac-toe-app/node_modules/es-abstract/2018/Set.js new file mode 100644 index 0000000..18ebd99 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/Set.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw + +module.exports = function Set(O, P, V, Throw) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + if (Type(Throw) !== 'Boolean') { + throw new $TypeError('Assertion failed: `Throw` must be a Boolean'); + } + if (Throw) { + O[P] = V; // eslint-disable-line no-param-reassign + return true; + } else { + try { + O[P] = V; // eslint-disable-line no-param-reassign + } catch (e) { + return false; + } + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SetFunctionName.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SetFunctionName.js new file mode 100644 index 0000000..f93324a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SetFunctionName.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var has = require('has'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getSymbolDescription = require('../helpers/getSymbolDescription'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsExtensible = require('./IsExtensible'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname + +module.exports = function SetFunctionName(F, name) { + if (typeof F !== 'function') { + throw new $TypeError('Assertion failed: `F` must be a function'); + } + if (!IsExtensible(F) || has(F, 'name')) { + throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property'); + } + var nameType = Type(name); + if (nameType !== 'Symbol' && nameType !== 'String') { + throw new $TypeError('Assertion failed: `name` must be a Symbol or a String'); + } + if (nameType === 'Symbol') { + var description = getSymbolDescription(name); + // eslint-disable-next-line no-param-reassign + name = typeof description === 'undefined' ? '' : '[' + description + ']'; + } + if (arguments.length > 2) { + var prefix = arguments[2]; + // eslint-disable-next-line no-param-reassign + name = prefix + ' ' + name; + } + return DefinePropertyOrThrow(F, 'name', { + '[[Value]]': name, + '[[Writable]]': false, + '[[Enumerable]]': false, + '[[Configurable]]': true + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SetIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SetIntegrityLevel.js new file mode 100644 index 0000000..3d5c81d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SetIntegrityLevel.js @@ -0,0 +1,57 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); +var $preventExtensions = GetIntrinsic('%Object.preventExtensions%'); +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); + +var forEach = require('../helpers/forEach'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel + +module.exports = function SetIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + if (!$preventExtensions) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support'); + } + var status = $preventExtensions(O); + if (!status) { + return false; + } + if (!$gOPN) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support'); + } + var theKeys = $gOPN(O); + if (level === 'sealed') { + forEach(theKeys, function (k) { + DefinePropertyOrThrow(O, k, { configurable: false }); + }); + } else if (level === 'frozen') { + forEach(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + var desc; + if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) { + desc = { configurable: false }; + } else { + desc = { configurable: false, writable: false }; + } + DefinePropertyOrThrow(O, k, desc); + } + }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SpeciesConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SpeciesConstructor.js new file mode 100644 index 0000000..3cdcd74 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SpeciesConstructor.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor + +module.exports = function SpeciesConstructor(O, defaultConstructor) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var C = O.constructor; + if (typeof C === 'undefined') { + return defaultConstructor; + } + if (Type(C) !== 'Object') { + throw new $TypeError('O.constructor is not an Object'); + } + var S = $species ? C[$species] : void 0; + if (S == null) { + return defaultConstructor; + } + if (IsConstructor(S)) { + return S; + } + throw new $TypeError('no constructor found'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/StrictEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2018/StrictEqualityComparison.js new file mode 100644 index 0000000..eea5df3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/StrictEqualityComparison.js @@ -0,0 +1,17 @@ +'use strict'; + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 + +module.exports = function StrictEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType !== yType) { + return false; + } + if (xType === 'Undefined' || xType === 'Null') { + return true; + } + return x === y; // shortcut for steps 4-7 +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/SymbolDescriptiveString.js b/tic-tac-toe-app/node_modules/es-abstract/2018/SymbolDescriptiveString.js new file mode 100644 index 0000000..7bd8191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/SymbolDescriptiveString.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $SymbolToString = callBound('Symbol.prototype.toString', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring + +module.exports = function SymbolDescriptiveString(sym) { + if (Type(sym) !== 'Symbol') { + throw new $TypeError('Assertion failed: `sym` must be a Symbol'); + } + return $SymbolToString(sym); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/TestIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2018/TestIntegrityLevel.js new file mode 100644 index 0000000..7a57397 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/TestIntegrityLevel.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var every = require('../helpers/every'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-testintegritylevel + +module.exports = function TestIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + var status = IsExtensible(O); + if (status) { + return false; + } + var theKeys = $gOPN(O); + return theKeys.length === 0 || every(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + if (currentDesc.configurable) { + return false; + } + if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) { + return false; + } + } + return true; + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/TimeClip.js b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeClip.js new file mode 100644 index 0000000..57aa08c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeClip.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); +var $Number = GetIntrinsic('%Number%'); +var $abs = GetIntrinsic('%Math.abs%'); + +var $isFinite = require('../helpers/isFinite'); + +var ToNumber = require('./ToNumber'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14 + +module.exports = function TimeClip(time) { + if (!$isFinite(time) || $abs(time) > 8.64e15) { + return NaN; + } + return $Number(new $Date(ToNumber(time))); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/TimeFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeFromYear.js new file mode 100644 index 0000000..df646c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeFromYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +var DayFromYear = require('./DayFromYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function TimeFromYear(y) { + return msPerDay * DayFromYear(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/TimeString.js b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeString.js new file mode 100644 index 0000000..87642eb --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeString.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var padTimeComponent = require('../helpers/padTimeComponent'); + +var HourFromTime = require('./HourFromTime'); +var MinFromTime = require('./MinFromTime'); +var SecFromTime = require('./SecFromTime'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-timestring + +module.exports = function TimeString(tv) { + if (Type(tv) !== 'Number' || $isNaN(tv)) { + throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number'); + } + var hour = HourFromTime(tv); + var minute = MinFromTime(tv); + var second = SecFromTime(tv); + return padTimeComponent(hour) + ':' + padTimeComponent(minute) + ':' + padTimeComponent(second) + '\x20GMT'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/TimeWithinDay.js b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeWithinDay.js new file mode 100644 index 0000000..c5b21d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/TimeWithinDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function TimeWithinDay(t) { + return mod(t, msPerDay); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToBoolean.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToBoolean.js new file mode 100644 index 0000000..65d8737 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToBoolean.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 + +module.exports = function ToBoolean(value) { return !!value; }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToDateString.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToDateString.js new file mode 100644 index 0000000..7a6d4c4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToDateString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Date = GetIntrinsic('%Date%'); + +var $isNaN = require('../helpers/isNaN'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-todatestring + +module.exports = function ToDateString(tv) { + if (Type(tv) !== 'Number') { + throw new $TypeError('Assertion failed: `tv` must be a Number'); + } + if ($isNaN(tv)) { + return 'Invalid Date'; + } + return $Date(tv); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToIndex.js new file mode 100644 index 0000000..a55398d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToIndex.js @@ -0,0 +1,26 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); + +var ToInteger = require('./ToInteger'); +var ToLength = require('./ToLength'); +var SameValueZero = require('./SameValueZero'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-toindex + +module.exports = function ToIndex(value) { + if (typeof value === 'undefined') { + return 0; + } + var integerIndex = ToInteger(value); + if (integerIndex < 0) { + throw new $RangeError('index must be >= 0'); + } + var index = ToLength(integerIndex); + if (!SameValueZero(integerIndex, index)) { + throw new $RangeError('index must be >= 0 and < 2 ** 53 - 1'); + } + return index; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt16.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt16.js new file mode 100644 index 0000000..5a112c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt16.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint16 = require('./ToUint16'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint16 + +module.exports = function ToInt16(argument) { + var int16bit = ToUint16(argument); + return int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt32.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt32.js new file mode 100644 index 0000000..a8d2680 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.5 + +module.exports = function ToInt32(x) { + return ToNumber(x) >> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt8.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt8.js new file mode 100644 index 0000000..d103123 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInt8.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint8 = require('./ToUint8'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint8 + +module.exports = function ToInt8(argument) { + var int8bit = ToUint8(argument); + return int8bit >= 0x80 ? int8bit - 0x100 : int8bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInteger.js new file mode 100644 index 0000000..16f7db9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToInteger.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5ToInteger = require('../5/ToInteger'); + +var ToNumber = require('./ToNumber'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tointeger + +module.exports = function ToInteger(value) { + var number = ToNumber(value); + return ES5ToInteger(number); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToLength.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToLength.js new file mode 100644 index 0000000..1bef9be --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToLength.js @@ -0,0 +1,12 @@ +'use strict'; + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var ToInteger = require('./ToInteger'); + +module.exports = function ToLength(argument) { + var len = ToInteger(argument); + if (len <= 0) { return 0; } // includes converting -0 to +0 + if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; } + return len; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToNumber.js new file mode 100644 index 0000000..7a3cdc8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToNumber.js @@ -0,0 +1,59 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Number = GetIntrinsic('%Number%'); +var $RegExp = GetIntrinsic('%RegExp%'); +var $parseInteger = GetIntrinsic('%parseInt%'); + +var callBound = require('../helpers/callBound'); +var regexTester = require('../helpers/regexTester'); +var isPrimitive = require('../helpers/isPrimitive'); + +var $strSlice = callBound('String.prototype.slice'); +var isBinary = regexTester(/^0b[01]+$/i); +var isOctal = regexTester(/^0o[0-7]+$/i); +var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i); +var nonWS = ['\u0085', '\u200b', '\ufffe'].join(''); +var nonWSregex = new $RegExp('[' + nonWS + ']', 'g'); +var hasNonWS = regexTester(nonWSregex); + +// whitespace from: https://es5.github.io/#x15.5.4.20 +// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324 +var ws = [ + '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003', + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028', + '\u2029\uFEFF' +].join(''); +var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g'); +var $replace = callBound('String.prototype.replace'); +var $trim = function (value) { + return $replace(value, trimRegex, ''); +}; + +var ToPrimitive = require('./ToPrimitive'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tonumber + +module.exports = function ToNumber(argument) { + var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number); + if (typeof value === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a number'); + } + if (typeof value === 'string') { + if (isBinary(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 2)); + } else if (isOctal(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 8)); + } else if (hasNonWS(value) || isInvalidHexLiteral(value)) { + return NaN; + } else { + var trimmed = $trim(value); + if (trimmed !== value) { + return ToNumber(trimmed); + } + } + } + return $Number(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToObject.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToObject.js new file mode 100644 index 0000000..50d5b94 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToObject.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toobject + +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToPrimitive.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToPrimitive.js new file mode 100644 index 0000000..81c655d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToPrimitive.js @@ -0,0 +1,12 @@ +'use strict'; + +var toPrimitive = require('es-to-primitive/es2015'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive + +module.exports = function ToPrimitive(input) { + if (arguments.length > 1) { + return toPrimitive(input, arguments[1]); + } + return toPrimitive(input); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyDescriptor.js new file mode 100644 index 0000000..38e536e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyDescriptor.js @@ -0,0 +1,52 @@ +'use strict'; + +var has = require('has'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); +var ToBoolean = require('./ToBoolean'); +var IsCallable = require('./IsCallable'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5 + +module.exports = function ToPropertyDescriptor(Obj) { + if (Type(Obj) !== 'Object') { + throw new $TypeError('ToPropertyDescriptor requires an object'); + } + + var desc = {}; + if (has(Obj, 'enumerable')) { + desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable); + } + if (has(Obj, 'configurable')) { + desc['[[Configurable]]'] = ToBoolean(Obj.configurable); + } + if (has(Obj, 'value')) { + desc['[[Value]]'] = Obj.value; + } + if (has(Obj, 'writable')) { + desc['[[Writable]]'] = ToBoolean(Obj.writable); + } + if (has(Obj, 'get')) { + var getter = Obj.get; + if (typeof getter !== 'undefined' && !IsCallable(getter)) { + throw new TypeError('getter must be a function'); + } + desc['[[Get]]'] = getter; + } + if (has(Obj, 'set')) { + var setter = Obj.set; + if (typeof setter !== 'undefined' && !IsCallable(setter)) { + throw new $TypeError('setter must be a function'); + } + desc['[[Set]]'] = setter; + } + + if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) { + throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute'); + } + return desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyKey.js new file mode 100644 index 0000000..38f40dd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToPropertyKey.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +var ToPrimitive = require('./ToPrimitive'); +var ToString = require('./ToString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-topropertykey + +module.exports = function ToPropertyKey(argument) { + var key = ToPrimitive(argument, $String); + return typeof key === 'symbol' ? key : ToString(key); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToString.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToString.js new file mode 100644 index 0000000..a345431 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToString.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function ToString(argument) { + if (typeof argument === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a string'); + } + return $String(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint16.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint16.js new file mode 100644 index 0000000..c8a408b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint16.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.7 + +module.exports = function ToUint16(value) { + var number = ToNumber(value); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x10000); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint32.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint32.js new file mode 100644 index 0000000..3660f62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.6 + +module.exports = function ToUint32(x) { + return ToNumber(x) >>> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8.js new file mode 100644 index 0000000..bf84753 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +module.exports = function ToUint8(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x100); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8Clamp.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8Clamp.js new file mode 100644 index 0000000..c7f9f56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ToUint8Clamp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); + +var $floor = $Math.floor; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-touint8clamp + +module.exports = function ToUint8Clamp(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number <= 0) { return 0; } + if (number >= 0xFF) { return 0xFF; } + var f = $floor(argument); + if (f + 0.5 < number) { return f + 1; } + if (number < f + 0.5) { return f; } + if (f % 2 !== 0) { return f + 1; } + return f; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/Type.js b/tic-tac-toe-app/node_modules/es-abstract/2018/Type.js new file mode 100644 index 0000000..6c99376 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/Type.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5Type = require('../5/Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function Type(x) { + if (typeof x === 'symbol') { + return 'Symbol'; + } + return ES5Type(x); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/ValidateAndApplyPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2018/ValidateAndApplyPropertyDescriptor.js new file mode 100644 index 0000000..d4b9007 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/ValidateAndApplyPropertyDescriptor.js @@ -0,0 +1,170 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var isSamePropertyDescriptor = require('../helpers/isSamePropertyDescriptor'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-validateandapplypropertydescriptor +// https://www.ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor + +// eslint-disable-next-line max-lines-per-function, max-statements, max-params +module.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) { + // this uses the ES2017+ logic, since it fixes a number of bugs in the ES2015 logic. + var oType = Type(O); + if (oType !== 'Undefined' && oType !== 'Object') { + throw new $TypeError('Assertion failed: O must be undefined or an Object'); + } + if (Type(extensible) !== 'Boolean') { + throw new $TypeError('Assertion failed: extensible must be a Boolean'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (Type(current) !== 'Undefined' && !isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, current)) { + throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined'); + } + if (oType !== 'Undefined' && !IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: if O is not undefined, P must be a Property Key'); + } + if (Type(current) === 'Undefined') { + if (!extensible) { + return false; + } + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': Desc['[[Configurable]]'], + '[[Enumerable]]': Desc['[[Enumerable]]'], + '[[Value]]': Desc['[[Value]]'], + '[[Writable]]': Desc['[[Writable]]'] + } + ); + } + } else { + if (!IsAccessorDescriptor(Desc)) { + throw new $TypeError('Assertion failed: Desc is not an accessor descriptor'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + } + return true; + } + if (IsGenericDescriptor(Desc) && !('[[Configurable]]' in Desc) && !('[[Enumerable]]' in Desc)) { + return true; + } + if (isSamePropertyDescriptor({ SameValue: SameValue }, Desc, current)) { + return true; // removed by ES2017, but should still be correct + } + // "if every field in Desc is absent, return true" can't really match the assertion that it's a Property Descriptor + if (!current['[[Configurable]]']) { + if (Desc['[[Configurable]]']) { + return false; + } + if ('[[Enumerable]]' in Desc && !Desc['[[Enumerable]]'] === !!current['[[Enumerable]]']) { + return false; + } + } + if (IsGenericDescriptor(Desc)) { + // no further validation is required. + } else if (IsDataDescriptor(current) !== IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + return false; + } + if (IsDataDescriptor(current)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Get]]': undefined + } + ); + } + } else if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Value]]': undefined + } + ); + } + } else if (IsDataDescriptor(current) && IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]'] && !current['[[Writable]]']) { + if ('[[Writable]]' in Desc && Desc['[[Writable]]']) { + return false; + } + if ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) { + return false; + } + return true; + } + } else if (IsAccessorDescriptor(current) && IsAccessorDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + if ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) { + return false; + } + if ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) { + return false; + } + return true; + } + } else { + throw new $TypeError('Assertion failed: current and Desc are not both data, both accessors, or one accessor and one data.'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/WeekDay.js b/tic-tac-toe-app/node_modules/es-abstract/2018/WeekDay.js new file mode 100644 index 0000000..2973e02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/WeekDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +var Day = require('./Day'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6 + +module.exports = function WeekDay(t) { + return mod(Day(t) + 4, 7); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/YearFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/YearFromTime.js new file mode 100644 index 0000000..ff5339f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/YearFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); + +var callBound = require('../helpers/callBound'); + +var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function YearFromTime(t) { + // largest y such that this.TimeFromYear(y) <= t + return $getUTCFullYear(new $Date(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/modulo.js b/tic-tac-toe-app/node_modules/es-abstract/2018/modulo.js new file mode 100644 index 0000000..bc04c06 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/modulo.js @@ -0,0 +1,9 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-5.2 + +module.exports = function modulo(x, y) { + return mod(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/msFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2018/msFromTime.js new file mode 100644 index 0000000..c31eda0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/msFromTime.js @@ -0,0 +1,10 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerSecond = require('../helpers/timeConstants').msPerSecond; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function msFromTime(t) { + return mod(t, msPerSecond); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/thisBooleanValue.js b/tic-tac-toe-app/node_modules/es-abstract/2018/thisBooleanValue.js new file mode 100644 index 0000000..3ffac9c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/thisBooleanValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $BooleanValueOf = require('../helpers/callBound')('Boolean.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object + +module.exports = function thisBooleanValue(value) { + if (Type(value) === 'Boolean') { + return value; + } + + return $BooleanValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/thisNumberValue.js b/tic-tac-toe-app/node_modules/es-abstract/2018/thisNumberValue.js new file mode 100644 index 0000000..0345e52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/thisNumberValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var Type = require('./Type'); + +var $NumberValueOf = callBound('Number.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object + +module.exports = function thisNumberValue(value) { + if (Type(value) === 'Number') { + return value; + } + + return $NumberValueOf(value); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/thisStringValue.js b/tic-tac-toe-app/node_modules/es-abstract/2018/thisStringValue.js new file mode 100644 index 0000000..3b99b6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/thisStringValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $StringValueOf = require('../helpers/callBound')('String.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object + +module.exports = function thisStringValue(value) { + if (Type(value) === 'String') { + return value; + } + + return $StringValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/thisSymbolValue.js b/tic-tac-toe-app/node_modules/es-abstract/2018/thisSymbolValue.js new file mode 100644 index 0000000..3c3b347 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/thisSymbolValue.js @@ -0,0 +1,19 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/9.0/#sec-thissymbolvalue + +module.exports = function thisSymbolValue(value) { + if (!$SymbolValueOf) { + throw new SyntaxError('Symbols are not supported; thisSymbolValue requires that `value` be a Symbol or a Symbol object'); + } + if (Type(value) === 'Symbol') { + return value; + } + return $SymbolValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2018/thisTimeValue.js b/tic-tac-toe-app/node_modules/es-abstract/2018/thisTimeValue.js new file mode 100644 index 0000000..d7cda28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2018/thisTimeValue.js @@ -0,0 +1,9 @@ +'use strict'; + +var $DateValueOf = require('../helpers/callBound')('Date.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object + +module.exports = function thisTimeValue(value) { + return $DateValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/AbstractEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2019/AbstractEqualityComparison.js new file mode 100644 index 0000000..40b3909 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/AbstractEqualityComparison.js @@ -0,0 +1,37 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison + +module.exports = function AbstractEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType === yType) { + return x === y; // ES6+ specified this shortcut anyways. + } + if (x == null && y == null) { + return true; + } + if (xType === 'Number' && yType === 'String') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if (xType === 'String' && yType === 'Number') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (xType === 'Boolean') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (yType === 'Boolean') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if ((xType === 'String' || xType === 'Number' || xType === 'Symbol') && yType === 'Object') { + return AbstractEqualityComparison(x, ToPrimitive(y)); + } + if (xType === 'Object' && (yType === 'String' || yType === 'Number' || yType === 'Symbol')) { + return AbstractEqualityComparison(ToPrimitive(x), y); + } + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/AbstractRelationalComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2019/AbstractRelationalComparison.js new file mode 100644 index 0000000..bc7ca83 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/AbstractRelationalComparison.js @@ -0,0 +1,66 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Number = GetIntrinsic('%Number%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var isPrefixOf = require('../helpers/isPrefixOf'); + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 + +// eslint-disable-next-line max-statements +module.exports = function AbstractRelationalComparison(x, y, LeftFirst) { + if (Type(LeftFirst) !== 'Boolean') { + throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean'); + } + var px; + var py; + if (LeftFirst) { + px = ToPrimitive(x, $Number); + py = ToPrimitive(y, $Number); + } else { + py = ToPrimitive(y, $Number); + px = ToPrimitive(x, $Number); + } + var bothStrings = Type(px) === 'String' && Type(py) === 'String'; + if (!bothStrings) { + var nx = ToNumber(px); + var ny = ToNumber(py); + if ($isNaN(nx) || $isNaN(ny)) { + return undefined; + } + if ($isFinite(nx) && $isFinite(ny) && nx === ny) { + return false; + } + if (nx === 0 && ny === 0) { + return false; + } + if (nx === Infinity) { + return false; + } + if (ny === Infinity) { + return true; + } + if (ny === -Infinity) { + return false; + } + if (nx === -Infinity) { + return true; + } + return nx < ny; // by now, these are both nonzero, finite, and not equal + } + if (isPrefixOf(py, px)) { + return false; + } + if (isPrefixOf(px, py)) { + return true; + } + return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/AddEntriesFromIterable.js b/tic-tac-toe-app/node_modules/es-abstract/2019/AddEntriesFromIterable.js new file mode 100644 index 0000000..5aed447 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/AddEntriesFromIterable.js @@ -0,0 +1,52 @@ +'use strict'; + +var inspect = require('object-inspect'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Call = require('./Call'); +var Get = require('./Get'); +var GetIterator = require('./GetIterator'); +var IsCallable = require('./IsCallable'); +var IteratorClose = require('./IteratorClose'); +var IteratorStep = require('./IteratorStep'); +var IteratorValue = require('./IteratorValue'); +var Type = require('./Type'); + +// https://tc39.es/ecma262/#sec-add-entries-from-iterable + +module.exports = function AddEntriesFromIterable(target, iterable, adder) { + if (!IsCallable(adder)) { + throw new $TypeError('Assertion failed: `adder` is not callable'); + } + if (iterable == null) { + throw new $TypeError('Assertion failed: `iterable` is present, and not nullish'); + } + var iteratorRecord = GetIterator(iterable); + while (true) { // eslint-disable-line no-constant-condition + var next = IteratorStep(iteratorRecord); + if (!next) { + return target; + } + var nextItem = IteratorValue(next); + if (Type(nextItem) !== 'Object') { + var error = new $TypeError('iterator next must return an Object, got ' + inspect(nextItem)); + return IteratorClose( + iteratorRecord, + function () { throw error; } // eslint-disable-line no-loop-func + ); + } + try { + var k = Get(nextItem, '0'); + var v = Get(nextItem, '1'); + Call(adder, target, [k, v]); + } catch (e) { + return IteratorClose( + iteratorRecord, + function () { throw e; } + ); + } + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/AdvanceStringIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2019/AdvanceStringIndex.js new file mode 100644 index 0000000..666f578 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/AdvanceStringIndex.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $charCodeAt = require('../helpers/callBound')('String.prototype.charCodeAt'); + +// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex + +module.exports = function AdvanceStringIndex(S, index, unicode) { + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + if (!IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) { + throw new $TypeError('Assertion failed: `length` must be an integer >= 0 and <= 2**53'); + } + if (Type(unicode) !== 'Boolean') { + throw new $TypeError('Assertion failed: `unicode` must be a Boolean'); + } + if (!unicode) { + return index + 1; + } + var length = S.length; + if ((index + 1) >= length) { + return index + 1; + } + + var first = $charCodeAt(S, index); + if (first < 0xD800 || first > 0xDBFF) { + return index + 1; + } + + var second = $charCodeAt(S, index + 1); + if (second < 0xDC00 || second > 0xDFFF) { + return index + 1; + } + + return index + 2; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ArrayCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ArrayCreate.js new file mode 100644 index 0000000..fc9a7cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ArrayCreate.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ArrayPrototype = GetIntrinsic('%Array.prototype%'); +var $RangeError = GetIntrinsic('%RangeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsInteger = require('./IsInteger'); + +var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1; + +var $setProto = GetIntrinsic('%Object.setPrototypeOf%', true) || ( + // eslint-disable-next-line no-proto, no-negated-condition + [].__proto__ !== $ArrayPrototype + ? null + : function (O, proto) { + O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign + return O; + } +); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraycreate + +module.exports = function ArrayCreate(length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: `length` must be an integer Number >= 0'); + } + if (length > MAX_ARRAY_LENGTH) { + throw new $RangeError('length is greater than (2**32 - 1)'); + } + var proto = arguments.length > 1 ? arguments[1] : $ArrayPrototype; + var A = []; // steps 5 - 7, and 9 + if (proto !== $ArrayPrototype) { // step 8 + if (!$setProto) { + throw new $SyntaxError('ArrayCreate: a `proto` argument that is not `Array.prototype` is not supported in an environment that does not support setting the [[Prototype]]'); + } + $setProto(A, proto); + } + if (length !== 0) { // bypasses the need for step 2 + A.length = length; + } + /* step 10, the above as a shortcut for the below + OrdinaryDefineOwnProperty(A, 'length', { + '[[Configurable]]': false, + '[[Enumerable]]': false, + '[[Value]]': length, + '[[Writable]]': true + }); + */ + return A; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ArraySetLength.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ArraySetLength.js new file mode 100644 index 0000000..c9134c6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ArraySetLength.js @@ -0,0 +1,85 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var assign = require('object.assign'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsArray = require('./IsArray'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var OrdinaryDefineOwnProperty = require('./OrdinaryDefineOwnProperty'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var ToUint32 = require('./ToUint32'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-arraysetlength + +// eslint-disable-next-line max-statements, max-lines-per-function +module.exports = function ArraySetLength(A, Desc) { + if (!IsArray(A)) { + throw new $TypeError('Assertion failed: A must be an Array'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!('[[Value]]' in Desc)) { + return OrdinaryDefineOwnProperty(A, 'length', Desc); + } + var newLenDesc = assign({}, Desc); + var newLen = ToUint32(Desc['[[Value]]']); + var numberLen = ToNumber(Desc['[[Value]]']); + if (newLen !== numberLen) { + throw new $RangeError('Invalid array length'); + } + newLenDesc['[[Value]]'] = newLen; + var oldLenDesc = OrdinaryGetOwnProperty(A, 'length'); + if (!IsDataDescriptor(oldLenDesc)) { + throw new $TypeError('Assertion failed: an array had a non-data descriptor on `length`'); + } + var oldLen = oldLenDesc['[[Value]]']; + if (newLen >= oldLen) { + return OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + } + if (!oldLenDesc['[[Writable]]']) { + return false; + } + var newWritable; + if (!('[[Writable]]' in newLenDesc) || newLenDesc['[[Writable]]']) { + newWritable = true; + } else { + newWritable = false; + newLenDesc['[[Writable]]'] = true; + } + var succeeded = OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + if (!succeeded) { + return false; + } + while (newLen < oldLen) { + oldLen -= 1; + // eslint-disable-next-line no-param-reassign + var deleteSucceeded = delete A[ToString(oldLen)]; + if (!deleteSucceeded) { + newLenDesc['[[Value]]'] = oldLen + 1; + if (!newWritable) { + newLenDesc['[[Writable]]'] = false; + OrdinaryDefineOwnProperty(A, 'length', newLenDesc); + return false; + } + } + } + if (!newWritable) { + return OrdinaryDefineOwnProperty(A, 'length', { '[[Writable]]': false }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ArraySpeciesCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ArraySpeciesCreate.js new file mode 100644 index 0000000..98b9b56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ArraySpeciesCreate.js @@ -0,0 +1,46 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var IsConstructor = require('./IsConstructor'); +var IsInteger = require('./IsInteger'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate + +module.exports = function ArraySpeciesCreate(originalArray, length) { + if (!IsInteger(length) || length < 0) { + throw new $TypeError('Assertion failed: length must be an integer >= 0'); + } + var len = length === 0 ? 0 : length; + var C; + var isArray = IsArray(originalArray); + if (isArray) { + C = Get(originalArray, 'constructor'); + // TODO: figure out how to make a cross-realm normal Array, a same-realm Array + // if (IsConstructor(C)) { + // if C is another realm's Array, C = undefined + // Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ? + // } + if ($species && Type(C) === 'Object') { + C = Get(C, $species); + if (C === null) { + C = void 0; + } + } + } + if (typeof C === 'undefined') { + return $Array(len); + } + if (!IsConstructor(C)) { + throw new $TypeError('C must be a constructor'); + } + return new C(len); // Construct(C, len); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/Call.js b/tic-tac-toe-app/node_modules/es-abstract/2019/Call.js new file mode 100644 index 0000000..f31960d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/Call.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsCallable = require('./IsCallable'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-call + +module.exports = function Call(F, V) { + var args = arguments.length > 2 ? arguments[2] : []; + if (!IsCallable(F)) { + throw new $TypeError(inspect(F) + ' is not a function'); + } + return F.apply(V, args); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CanonicalNumericIndexString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CanonicalNumericIndexString.js new file mode 100644 index 0000000..625f853 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CanonicalNumericIndexString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); +var ToNumber = require('./ToNumber'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring + +module.exports = function CanonicalNumericIndexString(argument) { + if (Type(argument) !== 'String') { + throw new $TypeError('Assertion failed: `argument` must be a String'); + } + if (argument === '-0') { return -0; } + var n = ToNumber(argument); + if (SameValue(ToString(n), argument)) { return n; } + return void 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CompletePropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CompletePropertyDescriptor.js new file mode 100644 index 0000000..548bf41 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CompletePropertyDescriptor.js @@ -0,0 +1,39 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor + +module.exports = function CompletePropertyDescriptor(Desc) { + /* eslint no-param-reassign: 0 */ + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (!has(Desc, '[[Value]]')) { + Desc['[[Value]]'] = void 0; + } + if (!has(Desc, '[[Writable]]')) { + Desc['[[Writable]]'] = false; + } + } else { + if (!has(Desc, '[[Get]]')) { + Desc['[[Get]]'] = void 0; + } + if (!has(Desc, '[[Set]]')) { + Desc['[[Set]]'] = void 0; + } + } + if (!has(Desc, '[[Enumerable]]')) { + Desc['[[Enumerable]]'] = false; + } + if (!has(Desc, '[[Configurable]]')) { + Desc['[[Configurable]]'] = false; + } + return Desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CopyDataProperties.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CopyDataProperties.js new file mode 100644 index 0000000..b75ba42 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CopyDataProperties.js @@ -0,0 +1,60 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); +var forEach = require('../helpers/forEach'); +var OwnPropertyKeys = require('../helpers/OwnPropertyKeys'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +var IsArray = require('./IsArray'); +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-copydataproperties + +module.exports = function CopyDataProperties(target, source, excludedItems) { + if (Type(target) !== 'Object') { + throw new TypeError('Assertion failed: "target" must be an Object'); + } + + if (!IsArray(excludedItems)) { + throw new TypeError('Assertion failed: "excludedItems" must be a List of Property Keys'); + } + for (var i = 0; i < excludedItems.length; i += 1) { + if (!IsPropertyKey(excludedItems[i])) { + throw new TypeError('Assertion failed: "excludedItems" must be a List of Property Keys'); + } + } + + if (typeof source === 'undefined' || source === null) { + return target; + } + + var ES = this; + + var fromObj = ES.ToObject(source); + + var sourceKeys = OwnPropertyKeys(fromObj); + forEach(sourceKeys, function (nextKey) { + var excluded = false; + + forEach(excludedItems, function (e) { + if (ES.SameValue(e, nextKey) === true) { + excluded = true; + } + }); + + var enumerable = $isEnumerable(fromObj, nextKey) || ( + // this is to handle string keys being non-enumerable in older engines + typeof source === 'string' + && nextKey >= 0 + && ES.IsInteger(ES.ToNumber(nextKey)) + ); + if (excluded === false && enumerable) { + var propValue = ES.Get(fromObj, nextKey); + ES.CreateDataProperty(target, nextKey, propValue); + } + }); + + return target; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataProperty.js new file mode 100644 index 0000000..32a86ef --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataProperty.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var OrdinaryGetOwnProperty = require('./OrdinaryGetOwnProperty'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createdataproperty + +module.exports = function CreateDataProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var oldDesc = OrdinaryGetOwnProperty(O, P); + var extensible = !oldDesc || IsExtensible(O); + var immutable = oldDesc && (!oldDesc['[[Writable]]'] || !oldDesc['[[Configurable]]']); + if (immutable || !extensible) { + return false; + } + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': true, + '[[Enumerable]]': true, + '[[Value]]': V, + '[[Writable]]': true + } + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataPropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataPropertyOrThrow.js new file mode 100644 index 0000000..9feaec8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateDataPropertyOrThrow.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var CreateDataProperty = require('./CreateDataProperty'); +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// // https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow + +module.exports = function CreateDataPropertyOrThrow(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + var success = CreateDataProperty(O, P, V); + if (!success) { + throw new $TypeError('unable to create data property'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CreateHTML.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateHTML.js new file mode 100644 index 0000000..536c92d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateHTML.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $replace = callBound('String.prototype.replace'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createhtml + +module.exports = function CreateHTML(string, tag, attribute, value) { + if (Type(tag) !== 'String' || Type(attribute) !== 'String') { + throw new $TypeError('Assertion failed: `tag` and `attribute` must be strings'); + } + var str = RequireObjectCoercible(string); + var S = ToString(str); + var p1 = '<' + tag; + if (attribute !== '') { + var V = ToString(value); + var escapedV = $replace(V, /\x22/g, '"'); + p1 += '\x20' + attribute + '\x3D\x22' + escapedV + '\x22'; + } + return p1 + '>' + S + ''; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CreateIterResultObject.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateIterResultObject.js new file mode 100644 index 0000000..aef1d22 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateIterResultObject.js @@ -0,0 +1,19 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject + +module.exports = function CreateIterResultObject(value, done) { + if (Type(done) !== 'Boolean') { + throw new $TypeError('Assertion failed: Type(done) is not Boolean'); + } + return { + value: value, + done: done + }; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CreateListFromArrayLike.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateListFromArrayLike.js new file mode 100644 index 0000000..d6b44b5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateListFromArrayLike.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBound = require('../helpers/callBound'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $indexOf = callBound('Array.prototype.indexOf', true) || callBound('String.prototype.indexOf'); +var $push = callBound('Array.prototype.push'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToLength = require('./ToLength'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike +module.exports = function CreateListFromArrayLike(obj) { + var elementTypes = arguments.length > 1 + ? arguments[1] + : ['Undefined', 'Null', 'Boolean', 'String', 'Symbol', 'Number', 'Object']; + + if (Type(obj) !== 'Object') { + throw new $TypeError('Assertion failed: `obj` must be an Object'); + } + if (!IsArray(elementTypes)) { + throw new $TypeError('Assertion failed: `elementTypes`, if provided, must be an array'); + } + var len = ToLength(Get(obj, 'length')); + var list = []; + var index = 0; + while (index < len) { + var indexName = ToString(index); + var next = Get(obj, indexName); + var nextType = Type(next); + if ($indexOf(elementTypes, nextType) < 0) { + throw new $TypeError('item type ' + nextType + ' is not a valid elementType'); + } + $push(list, next); + index += 1; + } + return list; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/CreateMethodProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateMethodProperty.js new file mode 100644 index 0000000..5b599ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/CreateMethodProperty.js @@ -0,0 +1,40 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-createmethodproperty + +module.exports = function CreateMethodProperty(O, P, V) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var newDesc = { + '[[Configurable]]': true, + '[[Enumerable]]': false, + '[[Value]]': V, + '[[Writable]]': true + }; + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + newDesc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/DateFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/DateFromTime.js new file mode 100644 index 0000000..962dba1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/DateFromTime.js @@ -0,0 +1,54 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); +var MonthFromTime = require('./MonthFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5 + +module.exports = function DateFromTime(t) { + var m = MonthFromTime(t); + var d = DayWithinYear(t); + if (m === 0) { + return d + 1; + } + if (m === 1) { + return d - 30; + } + var leap = InLeapYear(t); + if (m === 2) { + return d - 58 - leap; + } + if (m === 3) { + return d - 89 - leap; + } + if (m === 4) { + return d - 119 - leap; + } + if (m === 5) { + return d - 150 - leap; + } + if (m === 6) { + return d - 180 - leap; + } + if (m === 7) { + return d - 211 - leap; + } + if (m === 8) { + return d - 242 - leap; + } + if (m === 9) { + return d - 272 - leap; + } + if (m === 10) { + return d - 303 - leap; + } + if (m === 11) { + return d - 333 - leap; + } + throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/DateString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/DateString.js new file mode 100644 index 0000000..fc30329 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/DateString.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var weekdays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + +var $isNaN = require('../helpers/isNaN'); +var padTimeComponent = require('../helpers/padTimeComponent'); + +var Type = require('./Type'); +var WeekDay = require('./WeekDay'); +var MonthFromTime = require('./MonthFromTime'); +var YearFromTime = require('./YearFromTime'); +var DateFromTime = require('./DateFromTime'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-datestring + +module.exports = function DateString(tv) { + if (Type(tv) !== 'Number' || $isNaN(tv)) { + throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number'); + } + var weekday = weekdays[WeekDay(tv)]; + var month = months[MonthFromTime(tv)]; + var day = padTimeComponent(DateFromTime(tv)); + var year = padTimeComponent(YearFromTime(tv), 4); + return weekday + '\x20' + month + '\x20' + day + '\x20' + year; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/Day.js b/tic-tac-toe-app/node_modules/es-abstract/2019/Day.js new file mode 100644 index 0000000..00df813 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/Day.js @@ -0,0 +1,13 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function Day(t) { + return $floor(t / msPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/DayFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2019/DayFromYear.js new file mode 100644 index 0000000..08dd5af --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/DayFromYear.js @@ -0,0 +1,12 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DayFromYear(y) { + return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/DayWithinYear.js b/tic-tac-toe-app/node_modules/es-abstract/2019/DayWithinYear.js new file mode 100644 index 0000000..cfc4002 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/DayWithinYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var Day = require('./Day'); +var DayFromYear = require('./DayFromYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function DayWithinYear(t) { + return Day(t) - DayFromYear(YearFromTime(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/DaysInYear.js b/tic-tac-toe-app/node_modules/es-abstract/2019/DaysInYear.js new file mode 100644 index 0000000..db32251 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/DaysInYear.js @@ -0,0 +1,18 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DaysInYear(y) { + if (mod(y, 4) !== 0) { + return 365; + } + if (mod(y, 100) !== 0) { + return 366; + } + if (mod(y, 400) !== 0) { + return 365; + } + return 366; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/DefinePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2019/DefinePropertyOrThrow.js new file mode 100644 index 0000000..7977f6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/DefinePropertyOrThrow.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow + +module.exports = function DefinePropertyOrThrow(O, P, desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + var Desc = isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, desc) ? desc : ToPropertyDescriptor(desc); + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc is not a valid Property Descriptor'); + } + + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/DeletePropertyOrThrow.js b/tic-tac-toe-app/node_modules/es-abstract/2019/DeletePropertyOrThrow.js new file mode 100644 index 0000000..b476817 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/DeletePropertyOrThrow.js @@ -0,0 +1,27 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow + +module.exports = function DeletePropertyOrThrow(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // eslint-disable-next-line no-param-reassign + var success = delete O[P]; + if (!success) { + throw new $TypeError('Attempt to delete property failed.'); + } + return success; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js b/tic-tac-toe-app/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js new file mode 100644 index 0000000..e2ed722 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/EnumerableOwnPropertyNames.js @@ -0,0 +1,43 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var objectKeys = require('object-keys'); + +var callBound = require('../helpers/callBound'); + +var callBind = require('../helpers/callBind'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); +var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%')); + +var forEach = require('../helpers/forEach'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-enumerableownproperties + +module.exports = function EnumerableOwnProperties(O, kind) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + + var keys = objectKeys(O); + if (kind === 'key') { + return keys; + } + if (kind === 'value' || kind === 'key+value') { + var results = []; + forEach(keys, function (key) { + if ($isEnumerable(O, key)) { + $pushApply(results, [ + kind === 'value' ? O[key] : [key, O[key]] + ]); + } + }); + return results; + } + throw new $TypeError('Assertion failed: "kind" is not "key", "value", or "key+value": ' + kind); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/FlattenIntoArray.js b/tic-tac-toe-app/node_modules/es-abstract/2019/FlattenIntoArray.js new file mode 100644 index 0000000..313a6ed --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/FlattenIntoArray.js @@ -0,0 +1,58 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var Call = require('./Call'); +var CreateDataPropertyOrThrow = require('./CreateDataPropertyOrThrow'); +var Get = require('./Get'); +var HasProperty = require('./HasProperty'); +var IsArray = require('./IsArray'); +var ToLength = require('./ToLength'); +var ToString = require('./ToString'); + +// https://ecma-international.org/ecma-262/10.0/#sec-flattenintoarray + +// eslint-disable-next-line max-params, max-statements +module.exports = function FlattenIntoArray(target, source, sourceLen, start, depth) { + var mapperFunction; + if (arguments.length > 5) { + mapperFunction = arguments[5]; + } + + var targetIndex = start; + var sourceIndex = 0; + while (sourceIndex < sourceLen) { + var P = ToString(sourceIndex); + var exists = HasProperty(source, P); + if (exists === true) { + var element = Get(source, P); + if (typeof mapperFunction !== 'undefined') { + if (arguments.length <= 6) { + throw new $TypeError('Assertion failed: thisArg is required when mapperFunction is provided'); + } + element = Call(mapperFunction, arguments[6], [element, sourceIndex, source]); + } + var shouldFlatten = false; + if (depth > 0) { + shouldFlatten = IsArray(element); + } + if (shouldFlatten) { + var elementLen = ToLength(Get(element, 'length')); + targetIndex = FlattenIntoArray(target, element, elementLen, targetIndex, depth - 1); + } else { + if (targetIndex >= MAX_SAFE_INTEGER) { + throw new $TypeError('index too large'); + } + CreateDataPropertyOrThrow(target, ToString(targetIndex), element); + targetIndex += 1; + } + } + sourceIndex += 1; + } + + return targetIndex; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/FromPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/FromPropertyDescriptor.js new file mode 100644 index 0000000..5ec200e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/FromPropertyDescriptor.js @@ -0,0 +1,36 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor + +module.exports = function FromPropertyDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return Desc; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + var obj = {}; + if ('[[Value]]' in Desc) { + obj.value = Desc['[[Value]]']; + } + if ('[[Writable]]' in Desc) { + obj.writable = Desc['[[Writable]]']; + } + if ('[[Get]]' in Desc) { + obj.get = Desc['[[Get]]']; + } + if ('[[Set]]' in Desc) { + obj.set = Desc['[[Set]]']; + } + if ('[[Enumerable]]' in Desc) { + obj.enumerable = Desc['[[Enumerable]]']; + } + if ('[[Configurable]]' in Desc) { + obj.configurable = Desc['[[Configurable]]']; + } + return obj; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/Get.js b/tic-tac-toe-app/node_modules/es-abstract/2019/Get.js new file mode 100644 index 0000000..5b9ad78 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/Get.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var inspect = require('object-inspect'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +/** + * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p + * 1. Assert: Type(O) is Object. + * 2. Assert: IsPropertyKey(P) is true. + * 3. Return O.[[Get]](P, O). + */ + +module.exports = function Get(O, P) { + // 7.3.1.1 + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + // 7.3.1.2 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P)); + } + // 7.3.1.3 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/GetIterator.js b/tic-tac-toe-app/node_modules/es-abstract/2019/GetIterator.js new file mode 100644 index 0000000..7beddac --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/GetIterator.js @@ -0,0 +1,35 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getIteratorMethod = require('../helpers/getIteratorMethod'); +var AdvanceStringIndex = require('./AdvanceStringIndex'); +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsArray = require('./IsArray'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getiterator + +module.exports = function GetIterator(obj, method) { + var actualMethod = method; + if (arguments.length < 2) { + actualMethod = getIteratorMethod( + { + AdvanceStringIndex: AdvanceStringIndex, + GetMethod: GetMethod, + IsArray: IsArray, + Type: Type + }, + obj + ); + } + var iterator = Call(actualMethod, obj); + if (Type(iterator) !== 'Object') { + throw new $TypeError('iterator must return an object'); + } + + return iterator; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/GetMethod.js b/tic-tac-toe-app/node_modules/es-abstract/2019/GetMethod.js new file mode 100644 index 0000000..aef8cbc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/GetMethod.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var GetV = require('./GetV'); +var IsCallable = require('./IsCallable'); +var IsPropertyKey = require('./IsPropertyKey'); + +/** + * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let func be GetV(O, P). + * 3. ReturnIfAbrupt(func). + * 4. If func is either undefined or null, return undefined. + * 5. If IsCallable(func) is false, throw a TypeError exception. + * 6. Return func. + */ + +module.exports = function GetMethod(O, P) { + // 7.3.9.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.9.2 + var func = GetV(O, P); + + // 7.3.9.4 + if (func == null) { + return void 0; + } + + // 7.3.9.5 + if (!IsCallable(func)) { + throw new $TypeError(P + 'is not a function'); + } + + // 7.3.9.6 + return func; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/GetOwnPropertyKeys.js b/tic-tac-toe-app/node_modules/es-abstract/2019/GetOwnPropertyKeys.js new file mode 100644 index 0000000..8d7e5ee --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/GetOwnPropertyKeys.js @@ -0,0 +1,31 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var hasSymbols = require('has-symbols')(); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $gOPS = hasSymbols && GetIntrinsic('%Object.getOwnPropertySymbols%'); +var keys = require('object-keys'); + +var esType = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys + +module.exports = function GetOwnPropertyKeys(O, Type) { + if (esType(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (Type === 'Symbol') { + return $gOPS ? $gOPS(O) : []; + } + if (Type === 'String') { + if (!$gOPN) { + return keys(O); + } + return $gOPN(O); + } + throw new $TypeError('Assertion failed: `Type` must be `"String"` or `"Symbol"`'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js new file mode 100644 index 0000000..62da8fb --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/GetPrototypeFromConstructor.js @@ -0,0 +1,28 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Function = GetIntrinsic('%Function%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor + +module.exports = function GetPrototypeFromConstructor(constructor, intrinsicDefaultProto) { + var intrinsic = GetIntrinsic(intrinsicDefaultProto); // throws if not a valid intrinsic + if (!IsConstructor(constructor)) { + throw new $TypeError('Assertion failed: `constructor` must be a constructor'); + } + var proto = Get(constructor, 'prototype'); + if (Type(proto) !== 'Object') { + if (!(constructor instanceof $Function)) { + // ignore other realms, for now + throw new $TypeError('cross-realm constructors not currently supported'); + } + proto = intrinsic; + } + return proto; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/GetSubstitution.js b/tic-tac-toe-app/node_modules/es-abstract/2019/GetSubstitution.js new file mode 100644 index 0000000..2ec9ebc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/GetSubstitution.js @@ -0,0 +1,128 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); +var regexTester = require('../helpers/regexTester'); +var every = require('../helpers/every'); + +var $charAt = callBound('String.prototype.charAt'); +var $strSlice = callBound('String.prototype.slice'); +var $indexOf = callBound('String.prototype.indexOf'); +var $parseInt = parseInt; + +var isDigit = regexTester(/^[0-9]$/); + +var inspect = require('object-inspect'); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var IsInteger = require('./IsInteger'); +var ToObject = require('./ToObject'); +var ToString = require('./ToString'); +var Type = require('./Type'); + +var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false + +var isStringOrHole = function (capture, index, arr) { + return Type(capture) === 'String' || (canDistinguishSparseFromUndefined ? !(index in arr) : Type(capture) === 'Undefined'); +}; + +// http://www.ecma-international.org/ecma-262/9.0/#sec-getsubstitution + +// eslint-disable-next-line max-statements, max-params, max-lines-per-function +module.exports = function GetSubstitution(matched, str, position, captures, namedCaptures, replacement) { + if (Type(matched) !== 'String') { + throw new $TypeError('Assertion failed: `matched` must be a String'); + } + var matchLength = matched.length; + + if (Type(str) !== 'String') { + throw new $TypeError('Assertion failed: `str` must be a String'); + } + var stringLength = str.length; + + if (!IsInteger(position) || position < 0 || position > stringLength) { + throw new $TypeError('Assertion failed: `position` must be a nonnegative integer, and less than or equal to the length of `string`, got ' + inspect(position)); + } + + if (!IsArray(captures) || !every(captures, isStringOrHole)) { + throw new $TypeError('Assertion failed: `captures` must be a List of Strings, got ' + inspect(captures)); + } + + if (Type(replacement) !== 'String') { + throw new $TypeError('Assertion failed: `replacement` must be a String'); + } + + var tailPos = position + matchLength; + var m = captures.length; + if (Type(namedCaptures) !== 'Undefined') { + namedCaptures = ToObject(namedCaptures); // eslint-disable-line no-param-reassign + } + + var result = ''; + for (var i = 0; i < replacement.length; i += 1) { + // if this is a $, and it's not the end of the replacement + var current = $charAt(replacement, i); + var isLast = (i + 1) >= replacement.length; + var nextIsLast = (i + 2) >= replacement.length; + if (current === '$' && !isLast) { + var next = $charAt(replacement, i + 1); + if (next === '$') { + result += '$'; + i += 1; + } else if (next === '&') { + result += matched; + i += 1; + } else if (next === '`') { + result += position === 0 ? '' : $strSlice(str, 0, position - 1); + i += 1; + } else if (next === "'") { + result += tailPos >= stringLength ? '' : $strSlice(str, tailPos); + i += 1; + } else { + var nextNext = nextIsLast ? null : $charAt(replacement, i + 2); + if (isDigit(next) && next !== '0' && (nextIsLast || !isDigit(nextNext))) { + // $1 through $9, and not followed by a digit + var n = $parseInt(next, 10); + // if (n > m, impl-defined) + result += (n <= m && Type(captures[n - 1]) === 'Undefined') ? '' : captures[n - 1]; + i += 1; + } else if (isDigit(next) && (nextIsLast || isDigit(nextNext))) { + // $00 through $99 + var nn = next + nextNext; + var nnI = $parseInt(nn, 10) - 1; + // if nn === '00' or nn > m, impl-defined + result += (nn <= m && Type(captures[nnI]) === 'Undefined') ? '' : captures[nnI]; + i += 2; + } else if (next === '<') { + // eslint-disable-next-line max-depth + if (Type(namedCaptures) === 'Undefined') { + result += '$<'; + i += 2; + } else { + var endIndex = $indexOf(replacement, '>', i); + // eslint-disable-next-line max-depth + if (endIndex > -1) { + var groupName = $strSlice(replacement, i, endIndex); + var capture = Get(namedCaptures, groupName); + // eslint-disable-next-line max-depth + if (Type(capture) !== 'Undefined') { + result += ToString(capture); + } + i += '$<' + groupName + '>'.length; + } + } + } else { + result += '$'; + } + } + } else { + // the final $, or else not a $ + result += $charAt(replacement, i); + } + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/GetV.js b/tic-tac-toe-app/node_modules/es-abstract/2019/GetV.js new file mode 100644 index 0000000..7b5139a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/GetV.js @@ -0,0 +1,29 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var ToObject = require('./ToObject'); + +/** + * 7.3.2 GetV (V, P) + * 1. Assert: IsPropertyKey(P) is true. + * 2. Let O be ToObject(V). + * 3. ReturnIfAbrupt(O). + * 4. Return O.[[Get]](P, V). + */ + +module.exports = function GetV(V, P) { + // 7.3.2.1 + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: IsPropertyKey(P) is not true'); + } + + // 7.3.2.2-3 + var O = ToObject(V); + + // 7.3.2.4 + return O[P]; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/HasOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2019/HasOwnProperty.js new file mode 100644 index 0000000..679059f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/HasOwnProperty.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var has = require('has'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty + +module.exports = function HasOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return has(O, P); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/HasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2019/HasProperty.js new file mode 100644 index 0000000..5f2d212 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/HasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty + +module.exports = function HasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/HourFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/HourFromTime.js new file mode 100644 index 0000000..957ce32 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/HourFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerHour = timeConstants.msPerHour; +var HoursPerDay = timeConstants.HoursPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function HourFromTime(t) { + return mod($floor(t / msPerHour), HoursPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/InLeapYear.js b/tic-tac-toe-app/node_modules/es-abstract/2019/InLeapYear.js new file mode 100644 index 0000000..38ba8fd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/InLeapYear.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DaysInYear = require('./DaysInYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function InLeapYear(t) { + var days = DaysInYear(YearFromTime(t)); + if (days === 365) { + return 0; + } + if (days === 366) { + return 1; + } + throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/InstanceofOperator.js b/tic-tac-toe-app/node_modules/es-abstract/2019/InstanceofOperator.js new file mode 100644 index 0000000..ebd308c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/InstanceofOperator.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $hasInstance = GetIntrinsic('Symbol.hasInstance', true); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var OrdinaryHasInstance = require('./OrdinaryHasInstance'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-instanceofoperator + +module.exports = function InstanceofOperator(O, C) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var instOfHandler = $hasInstance ? GetMethod(C, $hasInstance) : void 0; + if (typeof instOfHandler !== 'undefined') { + return ToBoolean(Call(instOfHandler, C, [O])); + } + if (!IsCallable(C)) { + throw new $TypeError('`C` is not Callable'); + } + return OrdinaryHasInstance(C, O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/Invoke.js b/tic-tac-toe-app/node_modules/es-abstract/2019/Invoke.js new file mode 100644 index 0000000..769f0e3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/Invoke.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $arraySlice = require('../helpers/callBound')('Array.prototype.slice'); + +var Call = require('./Call'); +var GetV = require('./GetV'); +var IsPropertyKey = require('./IsPropertyKey'); + +// https://ecma-international.org/ecma-262/6.0/#sec-invoke + +module.exports = function Invoke(O, P) { + if (!IsPropertyKey(P)) { + throw new $TypeError('P must be a Property Key'); + } + var argumentsList = $arraySlice(arguments, 2); + var func = GetV(O, P); + return Call(func, O, argumentsList); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsAccessorDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsAccessorDescriptor.js new file mode 100644 index 0000000..5139464 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsAccessorDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor + +module.exports = function IsAccessorDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsArray.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsArray.js new file mode 100644 index 0000000..7b25f37 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsArray.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Array = GetIntrinsic('%Array%'); + +// eslint-disable-next-line global-require +var toStr = !$Array.isArray && require('../helpers/callBound')('Object.prototype.toString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isarray + +module.exports = $Array.isArray || function IsArray(argument) { + return toStr(argument) === '[object Array]'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsCallable.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsCallable.js new file mode 100644 index 0000000..e4bfa36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsCallable.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11 + +module.exports = require('is-callable'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsConcatSpreadable.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsConcatSpreadable.js new file mode 100644 index 0000000..dc8aae1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsConcatSpreadable.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $isConcatSpreadable = GetIntrinsic('%Symbol.isConcatSpreadable%', true); + +var Get = require('./Get'); +var IsArray = require('./IsArray'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable + +module.exports = function IsConcatSpreadable(O) { + if (Type(O) !== 'Object') { + return false; + } + if ($isConcatSpreadable) { + var spreadable = Get(O, $isConcatSpreadable); + if (typeof spreadable !== 'undefined') { + return ToBoolean(spreadable); + } + } + return IsArray(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsConstructor.js new file mode 100644 index 0000000..00ea52c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsConstructor.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isconstructor + +module.exports = function IsConstructor(argument) { + return typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument` +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsDataDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsDataDescriptor.js new file mode 100644 index 0000000..0ad3045 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsDataDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var assertRecord = require('../helpers/assertRecord'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor + +module.exports = function IsDataDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsExtensible.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsExtensible.js new file mode 100644 index 0000000..0c4c8a6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsExtensible.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var isPrimitive = require('../helpers/isPrimitive'); + +var $preventExtensions = $Object.preventExtensions; +var $isExtensible = $Object.isExtensible; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isextensible-o + +module.exports = $preventExtensions + ? function IsExtensible(obj) { + return !isPrimitive(obj) && $isExtensible(obj); + } + : function IsExtensible(obj) { + return !isPrimitive(obj); + }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsGenericDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsGenericDescriptor.js new file mode 100644 index 0000000..8618ce4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsGenericDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var assertRecord = require('../helpers/assertRecord'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor + +module.exports = function IsGenericDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) { + return true; + } + + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsInteger.js new file mode 100644 index 0000000..0f488b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsInteger.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-isinteger + +module.exports = function IsInteger(argument) { + if (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) { + return false; + } + var abs = $abs(argument); + return $floor(abs) === abs; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsPromise.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsPromise.js new file mode 100644 index 0000000..e8e92a2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsPromise.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $PromiseThen = callBound('Promise.prototype.then', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispromise + +module.exports = function IsPromise(x) { + if (Type(x) !== 'Object') { + return false; + } + if (!$PromiseThen) { // Promises are not supported + return false; + } + try { + $PromiseThen(x); // throws if not a promise + } catch (e) { + return false; + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsPropertyKey.js new file mode 100644 index 0000000..74b8d95 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsPropertyKey.js @@ -0,0 +1,7 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ispropertykey + +module.exports = function IsPropertyKey(argument) { + return typeof argument === 'string' || typeof argument === 'symbol'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsRegExp.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsRegExp.js new file mode 100644 index 0000000..fdf2323 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsRegExp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $match = GetIntrinsic('%Symbol.match%', true); + +var hasRegExpMatcher = require('is-regex'); + +var ToBoolean = require('./ToBoolean'); + +// https://ecma-international.org/ecma-262/6.0/#sec-isregexp + +module.exports = function IsRegExp(argument) { + if (!argument || typeof argument !== 'object') { + return false; + } + if ($match) { + var isRegExp = argument[$match]; + if (typeof isRegExp !== 'undefined') { + return ToBoolean(isRegExp); + } + } + return hasRegExpMatcher(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IsStringPrefix.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IsStringPrefix.js new file mode 100644 index 0000000..f5e2996 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IsStringPrefix.js @@ -0,0 +1,47 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPrefixOf = require('../helpers/isPrefixOf'); + +// var callBound = require('../helpers/callBound'); + +// var $charAt = callBound('String.prototype.charAt'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-isstringprefix + +module.exports = function IsStringPrefix(p, q) { + if (Type(p) !== 'String') { + throw new $TypeError('Assertion failed: "p" must be a String'); + } + + if (Type(q) !== 'String') { + throw new $TypeError('Assertion failed: "q" must be a String'); + } + + return isPrefixOf(p, q); + /* + if (p === q || p === '') { + return true; + } + + var pLength = p.length; + var qLength = q.length; + if (pLength >= qLength) { + return false; + } + + // assert: pLength < qLength + + for (var i = 0; i < pLength; i += 1) { + if ($charAt(p, i) !== $charAt(q, i)) { + return false; + } + } + return true; + */ +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IterableToList.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IterableToList.js new file mode 100644 index 0000000..0b8cdcf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IterableToList.js @@ -0,0 +1,24 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); +var $arrayPush = callBound('Array.prototype.push'); + +var GetIterator = require('./GetIterator'); +var IteratorStep = require('./IteratorStep'); +var IteratorValue = require('./IteratorValue'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-iterabletolist + +module.exports = function IterableToList(items, method) { + var iterator = GetIterator(items, method); + var values = []; + var next = true; + while (next) { + next = IteratorStep(iterator); + if (next) { + var nextValue = IteratorValue(next); + $arrayPush(values, nextValue); + } + } + return values; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorClose.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorClose.js new file mode 100644 index 0000000..35c8c2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorClose.js @@ -0,0 +1,50 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Call = require('./Call'); +var GetMethod = require('./GetMethod'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose + +module.exports = function IteratorClose(iterator, completion) { + if (Type(iterator) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterator) is not Object'); + } + if (!IsCallable(completion)) { + throw new $TypeError('Assertion failed: completion is not a thunk for a Completion Record'); + } + var completionThunk = completion; + + var iteratorReturn = GetMethod(iterator, 'return'); + + if (typeof iteratorReturn === 'undefined') { + return completionThunk(); + } + + var completionRecord; + try { + var innerResult = Call(iteratorReturn, iterator, []); + } catch (e) { + // if we hit here, then "e" is the innerResult completion that needs re-throwing + + // if the completion is of type "throw", this will throw. + completionThunk(); + completionThunk = null; // ensure it's not called twice. + + // if not, then return the innerResult completion + throw e; + } + completionRecord = completionThunk(); // if innerResult worked, then throw if the completion does + completionThunk = null; // ensure it's not called twice. + + if (Type(innerResult) !== 'Object') { + throw new $TypeError('iterator .return must return an object'); + } + + return completionRecord; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorComplete.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorComplete.js new file mode 100644 index 0000000..a62b9bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorComplete.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var ToBoolean = require('./ToBoolean'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete + +module.exports = function IteratorComplete(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return ToBoolean(Get(iterResult, 'done')); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorNext.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorNext.js new file mode 100644 index 0000000..7e59915 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorNext.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Invoke = require('./Invoke'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext + +module.exports = function IteratorNext(iterator, value) { + var result = Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]); + if (Type(result) !== 'Object') { + throw new $TypeError('iterator next must return an object'); + } + return result; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorStep.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorStep.js new file mode 100644 index 0000000..41b9d1b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorStep.js @@ -0,0 +1,13 @@ +'use strict'; + +var IteratorComplete = require('./IteratorComplete'); +var IteratorNext = require('./IteratorNext'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep + +module.exports = function IteratorStep(iterator) { + var result = IteratorNext(iterator); + var done = IteratorComplete(result); + return done === true ? false : result; +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorValue.js b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorValue.js new file mode 100644 index 0000000..5e71a44 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/IteratorValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue + +module.exports = function IteratorValue(iterResult) { + if (Type(iterResult) !== 'Object') { + throw new $TypeError('Assertion failed: Type(iterResult) is not Object'); + } + return Get(iterResult, 'value'); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/MakeDate.js b/tic-tac-toe-app/node_modules/es-abstract/2019/MakeDate.js new file mode 100644 index 0000000..7b592d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/MakeDate.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13 + +module.exports = function MakeDate(day, time) { + if (!$isFinite(day) || !$isFinite(time)) { + return NaN; + } + return (day * msPerDay) + time; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/MakeDay.js b/tic-tac-toe-app/node_modules/es-abstract/2019/MakeDay.js new file mode 100644 index 0000000..f1ab810 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/MakeDay.js @@ -0,0 +1,33 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); +var $DateUTC = GetIntrinsic('%Date.UTC%'); + +var mod = require('../helpers/mod'); +var $isFinite = require('../helpers/isFinite'); + +var DateFromTime = require('./DateFromTime'); +var Day = require('./Day'); +var MonthFromTime = require('./MonthFromTime'); +var ToInteger = require('./ToInteger'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12 + +module.exports = function MakeDay(year, month, date) { + if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) { + return NaN; + } + var y = ToInteger(year); + var m = ToInteger(month); + var dt = ToInteger(date); + var ym = y + $floor(m / 12); + var mn = mod(m, 12); + var t = $DateUTC(ym, mn, 1); + if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) { + return NaN; + } + return Day(t) + dt - 1; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/MakeTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/MakeTime.js new file mode 100644 index 0000000..e118500 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/MakeTime.js @@ -0,0 +1,23 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var msPerMinute = timeConstants.msPerMinute; +var msPerHour = timeConstants.msPerHour; + +var ToInteger = require('./ToInteger'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11 + +module.exports = function MakeTime(hour, min, sec, ms) { + if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) { + return NaN; + } + var h = ToInteger(hour); + var m = ToInteger(min); + var s = ToInteger(sec); + var milli = ToInteger(ms); + var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli; + return t; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/MinFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/MinFromTime.js new file mode 100644 index 0000000..e80e191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/MinFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerMinute = timeConstants.msPerMinute; +var MinutesPerHour = timeConstants.MinutesPerHour; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function MinFromTime(t) { + return mod($floor(t / msPerMinute), MinutesPerHour); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/MonthFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/MonthFromTime.js new file mode 100644 index 0000000..4f120f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/MonthFromTime.js @@ -0,0 +1,47 @@ +'use strict'; + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function MonthFromTime(t) { + var day = DayWithinYear(t); + if (0 <= day && day < 31) { + return 0; + } + var leap = InLeapYear(t); + if (31 <= day && day < (59 + leap)) { + return 1; + } + if ((59 + leap) <= day && day < (90 + leap)) { + return 2; + } + if ((90 + leap) <= day && day < (120 + leap)) { + return 3; + } + if ((120 + leap) <= day && day < (151 + leap)) { + return 4; + } + if ((151 + leap) <= day && day < (181 + leap)) { + return 5; + } + if ((181 + leap) <= day && day < (212 + leap)) { + return 6; + } + if ((212 + leap) <= day && day < (243 + leap)) { + return 7; + } + if ((243 + leap) <= day && day < (273 + leap)) { + return 8; + } + if ((273 + leap) <= day && day < (304 + leap)) { + return 9; + } + if ((304 + leap) <= day && day < (334 + leap)) { + return 10; + } + if ((334 + leap) <= day && day < (365 + leap)) { + return 11; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/NumberToString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/NumberToString.js new file mode 100644 index 0000000..2cc70e0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/NumberToString.js @@ -0,0 +1,18 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-tostring-applied-to-the-number-type + +module.exports = function NumberToString(m) { + if (Type(m) !== 'Number') { + throw new TypeError('Assertion failed: "m" must be a String'); + } + + return $String(m); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ObjectCreate.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ObjectCreate.js new file mode 100644 index 0000000..e2445b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ObjectCreate.js @@ -0,0 +1,37 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $ObjectCreate = GetIntrinsic('%Object.create%', true); +var $TypeError = GetIntrinsic('%TypeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); + +var Type = require('./Type'); + +var hasProto = !({ __proto__: null } instanceof Object); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate + +module.exports = function ObjectCreate(proto, internalSlotsList) { + if (proto !== null && Type(proto) !== 'Object') { + throw new $TypeError('Assertion failed: `proto` must be null or an object'); + } + var slots = arguments.length < 2 ? [] : internalSlotsList; + if (slots.length > 0) { + throw new $SyntaxError('es-abstract does not yet support internal slots'); + } + + if ($ObjectCreate) { + return $ObjectCreate(proto); + } + if (hasProto) { + return { __proto__: proto }; + } + + if (proto === null) { + throw new $SyntaxError('native Object.create support is required to create null objects'); + } + var T = function T() {}; + T.prototype = proto; + return new T(); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js new file mode 100644 index 0000000..59780b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryDefineOwnProperty.js @@ -0,0 +1,61 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var IsPropertyKey = require('./IsPropertyKey'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); +var ValidateAndApplyPropertyDescriptor = require('./ValidateAndApplyPropertyDescriptor'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty + +module.exports = function OrdinaryDefineOwnProperty(O, P, Desc) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (!$gOPD) { + // ES3/IE 8 fallback + if (IsAccessorDescriptor(Desc)) { + throw new $SyntaxError('This environment does not support accessor property descriptors.'); + } + var creatingNormalDataProperty = !(P in O) + && Desc['[[Writable]]'] + && Desc['[[Enumerable]]'] + && Desc['[[Configurable]]'] + && '[[Value]]' in Desc; + var settingExistingDataProperty = (P in O) + && (!('[[Configurable]]' in Desc) || Desc['[[Configurable]]']) + && (!('[[Enumerable]]' in Desc) || Desc['[[Enumerable]]']) + && (!('[[Writable]]' in Desc) || Desc['[[Writable]]']) + && '[[Value]]' in Desc; + if (creatingNormalDataProperty || settingExistingDataProperty) { + O[P] = Desc['[[Value]]']; // eslint-disable-line no-param-reassign + return SameValue(O[P], Desc['[[Value]]']); + } + throw new $SyntaxError('This environment does not support defining non-writable, non-enumerable, or non-configurable properties'); + } + var desc = $gOPD(O, P); + var current = desc && ToPropertyDescriptor(desc); + var extensible = IsExtensible(O); + return ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js new file mode 100644 index 0000000..b9882e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetOwnProperty.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +var has = require('has'); + +var IsArray = require('./IsArray'); +var IsPropertyKey = require('./IsPropertyKey'); +var IsRegExp = require('./IsRegExp'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty + +module.exports = function OrdinaryGetOwnProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + if (!has(O, P)) { + return void 0; + } + if (!$gOPD) { + // ES3 / IE 8 fallback + var arrayLength = IsArray(O) && P === 'length'; + var regexLastIndex = IsRegExp(O) && P === 'lastIndex'; + return { + '[[Configurable]]': !(arrayLength || regexLastIndex), + '[[Enumerable]]': $isEnumerable(O, P), + '[[Value]]': O[P], + '[[Writable]]': true + }; + } + return ToPropertyDescriptor($gOPD(O, P)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetPrototypeOf.js new file mode 100644 index 0000000..344077a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryGetPrototypeOf.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $getProto = require('../helpers/getProto'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetprototypeof + +module.exports = function OrdinaryGetPrototypeOf(O) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: O must be an Object'); + } + if (!$getProto) { + throw new $TypeError('This environment does not support fetching prototypes.'); + } + return $getProto(O); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasInstance.js b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasInstance.js new file mode 100644 index 0000000..51abe26 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasInstance.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance + +module.exports = function OrdinaryHasInstance(C, O) { + if (IsCallable(C) === false) { + return false; + } + if (Type(O) !== 'Object') { + return false; + } + var P = Get(C, 'prototype'); + if (Type(P) !== 'Object') { + throw new $TypeError('OrdinaryHasInstance called on an object with an invalid prototype property.'); + } + return O instanceof C; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasProperty.js b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasProperty.js new file mode 100644 index 0000000..076c25a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinaryHasProperty.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty + +module.exports = function OrdinaryHasProperty(O, P) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: P must be a Property Key'); + } + return P in O; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js new file mode 100644 index 0000000..3541331 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/OrdinarySetPrototypeOf.js @@ -0,0 +1,53 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $setProto = require('../helpers/setProto'); + +var OrdinaryGetPrototypeOf = require('./OrdinaryGetPrototypeOf'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/7.0/#sec-ordinarysetprototypeof + +module.exports = function OrdinarySetPrototypeOf(O, V) { + if (Type(V) !== 'Object' && Type(V) !== 'Null') { + throw new $TypeError('Assertion failed: V must be Object or Null'); + } + /* + var extensible = IsExtensible(O); + var current = OrdinaryGetPrototypeOf(O); + if (SameValue(V, current)) { + return true; + } + if (!extensible) { + return false; + } + */ + try { + $setProto(O, V); + } catch (e) { + return false; + } + return OrdinaryGetPrototypeOf(O) === V; + /* + var p = V; + var done = false; + while (!done) { + if (p === null) { + done = true; + } else if (SameValue(p, O)) { + return false; + } else { + if (wat) { + done = true; + } else { + p = p.[[Prototype]]; + } + } + } + O.[[Prototype]] = V; + return true; + */ +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/PromiseResolve.js b/tic-tac-toe-app/node_modules/es-abstract/2019/PromiseResolve.js new file mode 100644 index 0000000..f70745d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/PromiseResolve.js @@ -0,0 +1,15 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $PromiseResolve = callBound('Promise.resolve', true); + +// https://ecma-international.org/ecma-262/9.0/#sec-promise-resolve + +module.exports = function PromiseResolve(C, x) { + if (!$PromiseResolve) { + throw new SyntaxError('This environment does not support Promises.'); + } + return $PromiseResolve(C, x); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/RegExpExec.js b/tic-tac-toe-app/node_modules/es-abstract/2019/RegExpExec.js new file mode 100644 index 0000000..15c9186 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/RegExpExec.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var regexExec = require('../helpers/callBound')('RegExp.prototype.exec'); + +var Call = require('./Call'); +var Get = require('./Get'); +var IsCallable = require('./IsCallable'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-regexpexec + +module.exports = function RegExpExec(R, S) { + if (Type(R) !== 'Object') { + throw new $TypeError('Assertion failed: `R` must be an Object'); + } + if (Type(S) !== 'String') { + throw new $TypeError('Assertion failed: `S` must be a String'); + } + var exec = Get(R, 'exec'); + if (IsCallable(exec)) { + var result = Call(exec, R, [S]); + if (result === null || Type(result) === 'Object') { + return result; + } + throw new $TypeError('"exec" method must return `null` or an Object'); + } + return regexExec(R, S); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/RequireObjectCoercible.js b/tic-tac-toe-app/node_modules/es-abstract/2019/RequireObjectCoercible.js new file mode 100644 index 0000000..9008359 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/RequireObjectCoercible.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../5/CheckObjectCoercible'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SameValue.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SameValue.js new file mode 100644 index 0000000..47c936d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SameValue.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12 + +module.exports = function SameValue(x, y) { + if (x === y) { // 0 === -0, but they are not identical. + if (x === 0) { return 1 / x === 1 / y; } + return true; + } + return $isNaN(x) && $isNaN(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SameValueNonNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SameValueNonNumber.js new file mode 100644 index 0000000..5668752 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SameValueNonNumber.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var SameValue = require('./SameValue'); + +// https://www.ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber + +module.exports = function SameValueNonNumber(x, y) { + if (typeof x === 'number' || typeof x !== typeof y) { + throw new $TypeError('SameValueNonNumber requires two non-number values of the same type.'); + } + return SameValue(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SameValueZero.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SameValueZero.js new file mode 100644 index 0000000..0dedcd2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SameValueZero.js @@ -0,0 +1,9 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-samevaluezero + +module.exports = function SameValueZero(x, y) { + return (x === y) || ($isNaN(x) && $isNaN(y)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SecFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SecFromTime.js new file mode 100644 index 0000000..7190011 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SecFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var SecondsPerMinute = timeConstants.SecondsPerMinute; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function SecFromTime(t) { + return mod($floor(t / msPerSecond), SecondsPerMinute); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/Set.js b/tic-tac-toe-app/node_modules/es-abstract/2019/Set.js new file mode 100644 index 0000000..18ebd99 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/Set.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsPropertyKey = require('./IsPropertyKey'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw + +module.exports = function Set(O, P, V, Throw) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: `O` must be an Object'); + } + if (!IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: `P` must be a Property Key'); + } + if (Type(Throw) !== 'Boolean') { + throw new $TypeError('Assertion failed: `Throw` must be a Boolean'); + } + if (Throw) { + O[P] = V; // eslint-disable-line no-param-reassign + return true; + } else { + try { + O[P] = V; // eslint-disable-line no-param-reassign + } catch (e) { + return false; + } + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SetFunctionName.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SetFunctionName.js new file mode 100644 index 0000000..f93324a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SetFunctionName.js @@ -0,0 +1,44 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var has = require('has'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var getSymbolDescription = require('../helpers/getSymbolDescription'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsExtensible = require('./IsExtensible'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname + +module.exports = function SetFunctionName(F, name) { + if (typeof F !== 'function') { + throw new $TypeError('Assertion failed: `F` must be a function'); + } + if (!IsExtensible(F) || has(F, 'name')) { + throw new $TypeError('Assertion failed: `F` must be extensible, and must not have a `name` own property'); + } + var nameType = Type(name); + if (nameType !== 'Symbol' && nameType !== 'String') { + throw new $TypeError('Assertion failed: `name` must be a Symbol or a String'); + } + if (nameType === 'Symbol') { + var description = getSymbolDescription(name); + // eslint-disable-next-line no-param-reassign + name = typeof description === 'undefined' ? '' : '[' + description + ']'; + } + if (arguments.length > 2) { + var prefix = arguments[2]; + // eslint-disable-next-line no-param-reassign + name = prefix + ' ' + name; + } + return DefinePropertyOrThrow(F, 'name', { + '[[Value]]': name, + '[[Writable]]': false, + '[[Enumerable]]': false, + '[[Configurable]]': true + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SetIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SetIntegrityLevel.js new file mode 100644 index 0000000..3d5c81d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SetIntegrityLevel.js @@ -0,0 +1,57 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); +var $preventExtensions = GetIntrinsic('%Object.preventExtensions%'); +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); + +var forEach = require('../helpers/forEach'); + +var DefinePropertyOrThrow = require('./DefinePropertyOrThrow'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-setintegritylevel + +module.exports = function SetIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + if (!$preventExtensions) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.preventExtensions` support'); + } + var status = $preventExtensions(O); + if (!status) { + return false; + } + if (!$gOPN) { + throw new $SyntaxError('SetIntegrityLevel requires native `Object.getOwnPropertyNames` support'); + } + var theKeys = $gOPN(O); + if (level === 'sealed') { + forEach(theKeys, function (k) { + DefinePropertyOrThrow(O, k, { configurable: false }); + }); + } else if (level === 'frozen') { + forEach(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + var desc; + if (IsAccessorDescriptor(ToPropertyDescriptor(currentDesc))) { + desc = { configurable: false }; + } else { + desc = { configurable: false, writable: false }; + } + DefinePropertyOrThrow(O, k, desc); + } + }); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SpeciesConstructor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SpeciesConstructor.js new file mode 100644 index 0000000..3cdcd74 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SpeciesConstructor.js @@ -0,0 +1,32 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $species = GetIntrinsic('%Symbol.species%', true); +var $TypeError = GetIntrinsic('%TypeError%'); + +var IsConstructor = require('./IsConstructor'); +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor + +module.exports = function SpeciesConstructor(O, defaultConstructor) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + var C = O.constructor; + if (typeof C === 'undefined') { + return defaultConstructor; + } + if (Type(C) !== 'Object') { + throw new $TypeError('O.constructor is not an Object'); + } + var S = $species ? C[$species] : void 0; + if (S == null) { + return defaultConstructor; + } + if (IsConstructor(S)) { + return S; + } + throw new $TypeError('no constructor found'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/StrictEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/2019/StrictEqualityComparison.js new file mode 100644 index 0000000..eea5df3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/StrictEqualityComparison.js @@ -0,0 +1,17 @@ +'use strict'; + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 + +module.exports = function StrictEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType !== yType) { + return false; + } + if (xType === 'Undefined' || xType === 'Null') { + return true; + } + return x === y; // shortcut for steps 4-7 +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/SymbolDescriptiveString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/SymbolDescriptiveString.js new file mode 100644 index 0000000..7bd8191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/SymbolDescriptiveString.js @@ -0,0 +1,20 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var callBound = require('../helpers/callBound'); + +var $SymbolToString = callBound('Symbol.prototype.toString', true); + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring + +module.exports = function SymbolDescriptiveString(sym) { + if (Type(sym) !== 'Symbol') { + throw new $TypeError('Assertion failed: `sym` must be a Symbol'); + } + return $SymbolToString(sym); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/TestIntegrityLevel.js b/tic-tac-toe-app/node_modules/es-abstract/2019/TestIntegrityLevel.js new file mode 100644 index 0000000..7a57397 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/TestIntegrityLevel.js @@ -0,0 +1,42 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = require('../helpers/getOwnPropertyDescriptor'); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var every = require('../helpers/every'); + +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsExtensible = require('./IsExtensible'); +var ToPropertyDescriptor = require('./ToPropertyDescriptor'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-testintegritylevel + +module.exports = function TestIntegrityLevel(O, level) { + if (Type(O) !== 'Object') { + throw new $TypeError('Assertion failed: Type(O) is not Object'); + } + if (level !== 'sealed' && level !== 'frozen') { + throw new $TypeError('Assertion failed: `level` must be `"sealed"` or `"frozen"`'); + } + var status = IsExtensible(O); + if (status) { + return false; + } + var theKeys = $gOPN(O); + return theKeys.length === 0 || every(theKeys, function (k) { + var currentDesc = $gOPD(O, k); + if (typeof currentDesc !== 'undefined') { + if (currentDesc.configurable) { + return false; + } + if (level === 'frozen' && IsDataDescriptor(ToPropertyDescriptor(currentDesc)) && currentDesc.writable) { + return false; + } + } + return true; + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/TimeClip.js b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeClip.js new file mode 100644 index 0000000..57aa08c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeClip.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); +var $Number = GetIntrinsic('%Number%'); +var $abs = GetIntrinsic('%Math.abs%'); + +var $isFinite = require('../helpers/isFinite'); + +var ToNumber = require('./ToNumber'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14 + +module.exports = function TimeClip(time) { + if (!$isFinite(time) || $abs(time) > 8.64e15) { + return NaN; + } + return $Number(new $Date(ToNumber(time))); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/TimeFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeFromYear.js new file mode 100644 index 0000000..df646c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeFromYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +var DayFromYear = require('./DayFromYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function TimeFromYear(y) { + return msPerDay * DayFromYear(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/TimeString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeString.js new file mode 100644 index 0000000..87642eb --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeString.js @@ -0,0 +1,25 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var padTimeComponent = require('../helpers/padTimeComponent'); + +var HourFromTime = require('./HourFromTime'); +var MinFromTime = require('./MinFromTime'); +var SecFromTime = require('./SecFromTime'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/9.0/#sec-timestring + +module.exports = function TimeString(tv) { + if (Type(tv) !== 'Number' || $isNaN(tv)) { + throw new $TypeError('Assertion failed: `tv` must be a non-NaN Number'); + } + var hour = HourFromTime(tv); + var minute = MinFromTime(tv); + var second = SecFromTime(tv); + return padTimeComponent(hour) + ':' + padTimeComponent(minute) + ':' + padTimeComponent(second) + '\x20GMT'; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/TimeWithinDay.js b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeWithinDay.js new file mode 100644 index 0000000..c5b21d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/TimeWithinDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function TimeWithinDay(t) { + return mod(t, msPerDay); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToBoolean.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToBoolean.js new file mode 100644 index 0000000..65d8737 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToBoolean.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 + +module.exports = function ToBoolean(value) { return !!value; }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToDateString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToDateString.js new file mode 100644 index 0000000..7a6d4c4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToDateString.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Date = GetIntrinsic('%Date%'); + +var $isNaN = require('../helpers/isNaN'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-todatestring + +module.exports = function ToDateString(tv) { + if (Type(tv) !== 'Number') { + throw new $TypeError('Assertion failed: `tv` must be a Number'); + } + if ($isNaN(tv)) { + return 'Invalid Date'; + } + return $Date(tv); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToIndex.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToIndex.js new file mode 100644 index 0000000..a55398d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToIndex.js @@ -0,0 +1,26 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $RangeError = GetIntrinsic('%RangeError%'); + +var ToInteger = require('./ToInteger'); +var ToLength = require('./ToLength'); +var SameValueZero = require('./SameValueZero'); + +// https://www.ecma-international.org/ecma-262/8.0/#sec-toindex + +module.exports = function ToIndex(value) { + if (typeof value === 'undefined') { + return 0; + } + var integerIndex = ToInteger(value); + if (integerIndex < 0) { + throw new $RangeError('index must be >= 0'); + } + var index = ToLength(integerIndex); + if (!SameValueZero(integerIndex, index)) { + throw new $RangeError('index must be >= 0 and < 2 ** 53 - 1'); + } + return index; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt16.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt16.js new file mode 100644 index 0000000..5a112c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt16.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint16 = require('./ToUint16'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint16 + +module.exports = function ToInt16(argument) { + var int16bit = ToUint16(argument); + return int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt32.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt32.js new file mode 100644 index 0000000..a8d2680 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.5 + +module.exports = function ToInt32(x) { + return ToNumber(x) >> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt8.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt8.js new file mode 100644 index 0000000..d103123 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInt8.js @@ -0,0 +1,10 @@ +'use strict'; + +var ToUint8 = require('./ToUint8'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toint8 + +module.exports = function ToInt8(argument) { + var int8bit = ToUint8(argument); + return int8bit >= 0x80 ? int8bit - 0x100 : int8bit; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToInteger.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInteger.js new file mode 100644 index 0000000..16f7db9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToInteger.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5ToInteger = require('../5/ToInteger'); + +var ToNumber = require('./ToNumber'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tointeger + +module.exports = function ToInteger(value) { + var number = ToNumber(value); + return ES5ToInteger(number); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToLength.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToLength.js new file mode 100644 index 0000000..1bef9be --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToLength.js @@ -0,0 +1,12 @@ +'use strict'; + +var MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger'); + +var ToInteger = require('./ToInteger'); + +module.exports = function ToLength(argument) { + var len = ToInteger(argument); + if (len <= 0) { return 0; } // includes converting -0 to +0 + if (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; } + return len; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToNumber.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToNumber.js new file mode 100644 index 0000000..7a3cdc8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToNumber.js @@ -0,0 +1,59 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $Number = GetIntrinsic('%Number%'); +var $RegExp = GetIntrinsic('%RegExp%'); +var $parseInteger = GetIntrinsic('%parseInt%'); + +var callBound = require('../helpers/callBound'); +var regexTester = require('../helpers/regexTester'); +var isPrimitive = require('../helpers/isPrimitive'); + +var $strSlice = callBound('String.prototype.slice'); +var isBinary = regexTester(/^0b[01]+$/i); +var isOctal = regexTester(/^0o[0-7]+$/i); +var isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i); +var nonWS = ['\u0085', '\u200b', '\ufffe'].join(''); +var nonWSregex = new $RegExp('[' + nonWS + ']', 'g'); +var hasNonWS = regexTester(nonWSregex); + +// whitespace from: https://es5.github.io/#x15.5.4.20 +// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324 +var ws = [ + '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003', + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028', + '\u2029\uFEFF' +].join(''); +var trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g'); +var $replace = callBound('String.prototype.replace'); +var $trim = function (value) { + return $replace(value, trimRegex, ''); +}; + +var ToPrimitive = require('./ToPrimitive'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tonumber + +module.exports = function ToNumber(argument) { + var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number); + if (typeof value === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a number'); + } + if (typeof value === 'string') { + if (isBinary(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 2)); + } else if (isOctal(value)) { + return ToNumber($parseInteger($strSlice(value, 2), 8)); + } else if (hasNonWS(value) || isInvalidHexLiteral(value)) { + return NaN; + } else { + var trimmed = $trim(value); + if (trimmed !== value) { + return ToNumber(trimmed); + } + } + } + return $Number(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToObject.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToObject.js new file mode 100644 index 0000000..50d5b94 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToObject.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toobject + +module.exports = function ToObject(value) { + RequireObjectCoercible(value); + return $Object(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToPrimitive.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToPrimitive.js new file mode 100644 index 0000000..81c655d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToPrimitive.js @@ -0,0 +1,12 @@ +'use strict'; + +var toPrimitive = require('es-to-primitive/es2015'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive + +module.exports = function ToPrimitive(input) { + if (arguments.length > 1) { + return toPrimitive(input, arguments[1]); + } + return toPrimitive(input); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyDescriptor.js new file mode 100644 index 0000000..38e536e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyDescriptor.js @@ -0,0 +1,52 @@ +'use strict'; + +var has = require('has'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); +var ToBoolean = require('./ToBoolean'); +var IsCallable = require('./IsCallable'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5 + +module.exports = function ToPropertyDescriptor(Obj) { + if (Type(Obj) !== 'Object') { + throw new $TypeError('ToPropertyDescriptor requires an object'); + } + + var desc = {}; + if (has(Obj, 'enumerable')) { + desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable); + } + if (has(Obj, 'configurable')) { + desc['[[Configurable]]'] = ToBoolean(Obj.configurable); + } + if (has(Obj, 'value')) { + desc['[[Value]]'] = Obj.value; + } + if (has(Obj, 'writable')) { + desc['[[Writable]]'] = ToBoolean(Obj.writable); + } + if (has(Obj, 'get')) { + var getter = Obj.get; + if (typeof getter !== 'undefined' && !IsCallable(getter)) { + throw new TypeError('getter must be a function'); + } + desc['[[Get]]'] = getter; + } + if (has(Obj, 'set')) { + var setter = Obj.set; + if (typeof setter !== 'undefined' && !IsCallable(setter)) { + throw new $TypeError('setter must be a function'); + } + desc['[[Set]]'] = setter; + } + + if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) { + throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute'); + } + return desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyKey.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyKey.js new file mode 100644 index 0000000..38f40dd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToPropertyKey.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +var ToPrimitive = require('./ToPrimitive'); +var ToString = require('./ToString'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-topropertykey + +module.exports = function ToPropertyKey(argument) { + var key = ToPrimitive(argument, $String); + return typeof key === 'symbol' ? key : ToString(key); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToString.js new file mode 100644 index 0000000..a345431 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToString.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function ToString(argument) { + if (typeof argument === 'symbol') { + throw new $TypeError('Cannot convert a Symbol value to a string'); + } + return $String(argument); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint16.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint16.js new file mode 100644 index 0000000..c8a408b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint16.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.7 + +module.exports = function ToUint16(value) { + var number = ToNumber(value); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x10000); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint32.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint32.js new file mode 100644 index 0000000..3660f62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.6 + +module.exports = function ToUint32(x) { + return ToNumber(x) >>> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8.js new file mode 100644 index 0000000..bf84753 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +module.exports = function ToUint8(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x100); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8Clamp.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8Clamp.js new file mode 100644 index 0000000..c7f9f56 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ToUint8Clamp.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); + +var $floor = $Math.floor; + +// https://www.ecma-international.org/ecma-262/6.0/#sec-touint8clamp + +module.exports = function ToUint8Clamp(argument) { + var number = ToNumber(argument); + if ($isNaN(number) || number <= 0) { return 0; } + if (number >= 0xFF) { return 0xFF; } + var f = $floor(argument); + if (f + 0.5 < number) { return f + 1; } + if (number < f + 0.5) { return f; } + if (f % 2 !== 0) { return f + 1; } + return f; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/TrimString.js b/tic-tac-toe-app/node_modules/es-abstract/2019/TrimString.js new file mode 100644 index 0000000..32d4675 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/TrimString.js @@ -0,0 +1,29 @@ +'use strict'; + +var trimStart = require('string.prototype.trimleft'); +var trimEnd = require('string.prototype.trimright'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var RequireObjectCoercible = require('./RequireObjectCoercible'); +var ToString = require('./ToString'); + +// https://ecma-international.org/ecma-262/10.0/#sec-trimstring + +module.exports = function TrimString(string, where) { + var str = RequireObjectCoercible(string); + var S = ToString(str); + var T; + if (where === 'start') { + T = trimStart(S); + } else if (where === 'end') { + T = trimEnd(S); + } else if (where === 'start+end') { + T = trimStart(trimEnd(S)); + } else { + throw new $TypeError('Assertion failed: invalid `where` value; must be "start", "end", or "start+end"'); + } + return T; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/Type.js b/tic-tac-toe-app/node_modules/es-abstract/2019/Type.js new file mode 100644 index 0000000..6c99376 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/Type.js @@ -0,0 +1,12 @@ +'use strict'; + +var ES5Type = require('../5/Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-tostring + +module.exports = function Type(x) { + if (typeof x === 'symbol') { + return 'Symbol'; + } + return ES5Type(x); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/ValidateAndApplyPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/2019/ValidateAndApplyPropertyDescriptor.js new file mode 100644 index 0000000..d4b9007 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/ValidateAndApplyPropertyDescriptor.js @@ -0,0 +1,170 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var DefineOwnProperty = require('../helpers/DefineOwnProperty'); +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); +var isSamePropertyDescriptor = require('../helpers/isSamePropertyDescriptor'); + +var FromPropertyDescriptor = require('./FromPropertyDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsGenericDescriptor = require('./IsGenericDescriptor'); +var IsPropertyKey = require('./IsPropertyKey'); +var SameValue = require('./SameValue'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/6.0/#sec-validateandapplypropertydescriptor +// https://www.ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor + +// eslint-disable-next-line max-lines-per-function, max-statements, max-params +module.exports = function ValidateAndApplyPropertyDescriptor(O, P, extensible, Desc, current) { + // this uses the ES2017+ logic, since it fixes a number of bugs in the ES2015 logic. + var oType = Type(O); + if (oType !== 'Undefined' && oType !== 'Object') { + throw new $TypeError('Assertion failed: O must be undefined or an Object'); + } + if (Type(extensible) !== 'Boolean') { + throw new $TypeError('Assertion failed: extensible must be a Boolean'); + } + if (!isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, Desc)) { + throw new $TypeError('Assertion failed: Desc must be a Property Descriptor'); + } + if (Type(current) !== 'Undefined' && !isPropertyDescriptor({ + Type: Type, + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor + }, current)) { + throw new $TypeError('Assertion failed: current must be a Property Descriptor, or undefined'); + } + if (oType !== 'Undefined' && !IsPropertyKey(P)) { + throw new $TypeError('Assertion failed: if O is not undefined, P must be a Property Key'); + } + if (Type(current) === 'Undefined') { + if (!extensible) { + return false; + } + if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': Desc['[[Configurable]]'], + '[[Enumerable]]': Desc['[[Enumerable]]'], + '[[Value]]': Desc['[[Value]]'], + '[[Writable]]': Desc['[[Writable]]'] + } + ); + } + } else { + if (!IsAccessorDescriptor(Desc)) { + throw new $TypeError('Assertion failed: Desc is not an accessor descriptor'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + } + return true; + } + if (IsGenericDescriptor(Desc) && !('[[Configurable]]' in Desc) && !('[[Enumerable]]' in Desc)) { + return true; + } + if (isSamePropertyDescriptor({ SameValue: SameValue }, Desc, current)) { + return true; // removed by ES2017, but should still be correct + } + // "if every field in Desc is absent, return true" can't really match the assertion that it's a Property Descriptor + if (!current['[[Configurable]]']) { + if (Desc['[[Configurable]]']) { + return false; + } + if ('[[Enumerable]]' in Desc && !Desc['[[Enumerable]]'] === !!current['[[Enumerable]]']) { + return false; + } + } + if (IsGenericDescriptor(Desc)) { + // no further validation is required. + } else if (IsDataDescriptor(current) !== IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + return false; + } + if (IsDataDescriptor(current)) { + if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Get]]': undefined + } + ); + } + } else if (oType !== 'Undefined') { + DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + { + '[[Configurable]]': current['[[Configurable]]'], + '[[Enumerable]]': current['[[Enumerable]]'], + '[[Value]]': undefined + } + ); + } + } else if (IsDataDescriptor(current) && IsDataDescriptor(Desc)) { + if (!current['[[Configurable]]'] && !current['[[Writable]]']) { + if ('[[Writable]]' in Desc && Desc['[[Writable]]']) { + return false; + } + if ('[[Value]]' in Desc && !SameValue(Desc['[[Value]]'], current['[[Value]]'])) { + return false; + } + return true; + } + } else if (IsAccessorDescriptor(current) && IsAccessorDescriptor(Desc)) { + if (!current['[[Configurable]]']) { + if ('[[Set]]' in Desc && !SameValue(Desc['[[Set]]'], current['[[Set]]'])) { + return false; + } + if ('[[Get]]' in Desc && !SameValue(Desc['[[Get]]'], current['[[Get]]'])) { + return false; + } + return true; + } + } else { + throw new $TypeError('Assertion failed: current and Desc are not both data, both accessors, or one accessor and one data.'); + } + if (oType !== 'Undefined') { + return DefineOwnProperty( + IsDataDescriptor, + SameValue, + FromPropertyDescriptor, + O, + P, + Desc + ); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/WeekDay.js b/tic-tac-toe-app/node_modules/es-abstract/2019/WeekDay.js new file mode 100644 index 0000000..2973e02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/WeekDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +var Day = require('./Day'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6 + +module.exports = function WeekDay(t) { + return mod(Day(t) + 4, 7); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/YearFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/YearFromTime.js new file mode 100644 index 0000000..ff5339f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/YearFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); + +var callBound = require('../helpers/callBound'); + +var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function YearFromTime(t) { + // largest y such that this.TimeFromYear(y) <= t + return $getUTCFullYear(new $Date(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/modulo.js b/tic-tac-toe-app/node_modules/es-abstract/2019/modulo.js new file mode 100644 index 0000000..bc04c06 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/modulo.js @@ -0,0 +1,9 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-5.2 + +module.exports = function modulo(x, y) { + return mod(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/msFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/2019/msFromTime.js new file mode 100644 index 0000000..c31eda0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/msFromTime.js @@ -0,0 +1,10 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerSecond = require('../helpers/timeConstants').msPerSecond; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function msFromTime(t) { + return mod(t, msPerSecond); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/thisBooleanValue.js b/tic-tac-toe-app/node_modules/es-abstract/2019/thisBooleanValue.js new file mode 100644 index 0000000..3ffac9c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/thisBooleanValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $BooleanValueOf = require('../helpers/callBound')('Boolean.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object + +module.exports = function thisBooleanValue(value) { + if (Type(value) === 'Boolean') { + return value; + } + + return $BooleanValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/thisNumberValue.js b/tic-tac-toe-app/node_modules/es-abstract/2019/thisNumberValue.js new file mode 100644 index 0000000..0345e52 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/thisNumberValue.js @@ -0,0 +1,18 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var Type = require('./Type'); + +var $NumberValueOf = callBound('Number.prototype.valueOf'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object + +module.exports = function thisNumberValue(value) { + if (Type(value) === 'Number') { + return value; + } + + return $NumberValueOf(value); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/thisStringValue.js b/tic-tac-toe-app/node_modules/es-abstract/2019/thisStringValue.js new file mode 100644 index 0000000..3b99b6e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/thisStringValue.js @@ -0,0 +1,15 @@ +'use strict'; + +var $StringValueOf = require('../helpers/callBound')('String.prototype.valueOf'); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object + +module.exports = function thisStringValue(value) { + if (Type(value) === 'String') { + return value; + } + + return $StringValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/thisSymbolValue.js b/tic-tac-toe-app/node_modules/es-abstract/2019/thisSymbolValue.js new file mode 100644 index 0000000..3c3b347 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/thisSymbolValue.js @@ -0,0 +1,19 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true); + +var Type = require('./Type'); + +// https://ecma-international.org/ecma-262/9.0/#sec-thissymbolvalue + +module.exports = function thisSymbolValue(value) { + if (!$SymbolValueOf) { + throw new SyntaxError('Symbols are not supported; thisSymbolValue requires that `value` be a Symbol or a Symbol object'); + } + if (Type(value) === 'Symbol') { + return value; + } + return $SymbolValueOf(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/2019/thisTimeValue.js b/tic-tac-toe-app/node_modules/es-abstract/2019/thisTimeValue.js new file mode 100644 index 0000000..a9a47ac --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/2019/thisTimeValue.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('../2018/thisTimeValue'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/AbstractEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/5/AbstractEqualityComparison.js new file mode 100644 index 0000000..e55c764 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/AbstractEqualityComparison.js @@ -0,0 +1,37 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 + +module.exports = function AbstractEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType === yType) { + return x === y; // ES6+ specified this shortcut anyways. + } + if (x == null && y == null) { + return true; + } + if (xType === 'Number' && yType === 'String') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if (xType === 'String' && yType === 'Number') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (xType === 'Boolean') { + return AbstractEqualityComparison(ToNumber(x), y); + } + if (yType === 'Boolean') { + return AbstractEqualityComparison(x, ToNumber(y)); + } + if ((xType === 'String' || xType === 'Number') && yType === 'Object') { + return AbstractEqualityComparison(x, ToPrimitive(y)); + } + if (xType === 'Object' && (yType === 'String' || yType === 'Number')) { + return AbstractEqualityComparison(ToPrimitive(x), y); + } + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/AbstractRelationalComparison.js b/tic-tac-toe-app/node_modules/es-abstract/5/AbstractRelationalComparison.js new file mode 100644 index 0000000..bc7ca83 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/AbstractRelationalComparison.js @@ -0,0 +1,66 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Number = GetIntrinsic('%Number%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var isPrefixOf = require('../helpers/isPrefixOf'); + +var ToNumber = require('./ToNumber'); +var ToPrimitive = require('./ToPrimitive'); +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.8.5 + +// eslint-disable-next-line max-statements +module.exports = function AbstractRelationalComparison(x, y, LeftFirst) { + if (Type(LeftFirst) !== 'Boolean') { + throw new $TypeError('Assertion failed: LeftFirst argument must be a Boolean'); + } + var px; + var py; + if (LeftFirst) { + px = ToPrimitive(x, $Number); + py = ToPrimitive(y, $Number); + } else { + py = ToPrimitive(y, $Number); + px = ToPrimitive(x, $Number); + } + var bothStrings = Type(px) === 'String' && Type(py) === 'String'; + if (!bothStrings) { + var nx = ToNumber(px); + var ny = ToNumber(py); + if ($isNaN(nx) || $isNaN(ny)) { + return undefined; + } + if ($isFinite(nx) && $isFinite(ny) && nx === ny) { + return false; + } + if (nx === 0 && ny === 0) { + return false; + } + if (nx === Infinity) { + return false; + } + if (ny === Infinity) { + return true; + } + if (ny === -Infinity) { + return false; + } + if (nx === -Infinity) { + return true; + } + return nx < ny; // by now, these are both nonzero, finite, and not equal + } + if (isPrefixOf(py, px)) { + return false; + } + if (isPrefixOf(px, py)) { + return true; + } + return px < py; // both strings, neither a prefix of the other. shortcut for steps c-f +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/CheckObjectCoercible.js b/tic-tac-toe-app/node_modules/es-abstract/5/CheckObjectCoercible.js new file mode 100644 index 0000000..f02b289 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/CheckObjectCoercible.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.10 + +module.exports = function CheckObjectCoercible(value, optMessage) { + if (value == null) { + throw new $TypeError(optMessage || ('Cannot call method on ' + value)); + } + return value; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/DateFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/DateFromTime.js new file mode 100644 index 0000000..962dba1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/DateFromTime.js @@ -0,0 +1,54 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); +var MonthFromTime = require('./MonthFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.5 + +module.exports = function DateFromTime(t) { + var m = MonthFromTime(t); + var d = DayWithinYear(t); + if (m === 0) { + return d + 1; + } + if (m === 1) { + return d - 30; + } + var leap = InLeapYear(t); + if (m === 2) { + return d - 58 - leap; + } + if (m === 3) { + return d - 89 - leap; + } + if (m === 4) { + return d - 119 - leap; + } + if (m === 5) { + return d - 150 - leap; + } + if (m === 6) { + return d - 180 - leap; + } + if (m === 7) { + return d - 211 - leap; + } + if (m === 8) { + return d - 242 - leap; + } + if (m === 9) { + return d - 272 - leap; + } + if (m === 10) { + return d - 303 - leap; + } + if (m === 11) { + return d - 333 - leap; + } + throw new $EvalError('Assertion failed: MonthFromTime returned an impossible value: ' + m); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/Day.js b/tic-tac-toe-app/node_modules/es-abstract/5/Day.js new file mode 100644 index 0000000..00df813 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/Day.js @@ -0,0 +1,13 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function Day(t) { + return $floor(t / msPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/DayFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/5/DayFromYear.js new file mode 100644 index 0000000..08dd5af --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/DayFromYear.js @@ -0,0 +1,12 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DayFromYear(y) { + return (365 * (y - 1970)) + $floor((y - 1969) / 4) - $floor((y - 1901) / 100) + $floor((y - 1601) / 400); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/DayWithinYear.js b/tic-tac-toe-app/node_modules/es-abstract/5/DayWithinYear.js new file mode 100644 index 0000000..cfc4002 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/DayWithinYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var Day = require('./Day'); +var DayFromYear = require('./DayFromYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function DayWithinYear(t) { + return Day(t) - DayFromYear(YearFromTime(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/DaysInYear.js b/tic-tac-toe-app/node_modules/es-abstract/5/DaysInYear.js new file mode 100644 index 0000000..db32251 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/DaysInYear.js @@ -0,0 +1,18 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function DaysInYear(y) { + if (mod(y, 4) !== 0) { + return 365; + } + if (mod(y, 100) !== 0) { + return 366; + } + if (mod(y, 400) !== 0) { + return 365; + } + return 366; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/FromPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/5/FromPropertyDescriptor.js new file mode 100644 index 0000000..a3cefbe --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/FromPropertyDescriptor.js @@ -0,0 +1,39 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); + +var assertRecord = require('../helpers/assertRecord'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.4 + +module.exports = function FromPropertyDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return Desc; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (IsDataDescriptor(Desc)) { + return { + value: Desc['[[Value]]'], + writable: !!Desc['[[Writable]]'], + enumerable: !!Desc['[[Enumerable]]'], + configurable: !!Desc['[[Configurable]]'] + }; + } else if (IsAccessorDescriptor(Desc)) { + return { + get: Desc['[[Get]]'], + set: Desc['[[Set]]'], + enumerable: !!Desc['[[Enumerable]]'], + configurable: !!Desc['[[Configurable]]'] + }; + } else { + throw new $TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor'); + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/HourFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/HourFromTime.js new file mode 100644 index 0000000..957ce32 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/HourFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerHour = timeConstants.msPerHour; +var HoursPerDay = timeConstants.HoursPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function HourFromTime(t) { + return mod($floor(t / msPerHour), HoursPerDay); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/InLeapYear.js b/tic-tac-toe-app/node_modules/es-abstract/5/InLeapYear.js new file mode 100644 index 0000000..38ba8fd --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/InLeapYear.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $EvalError = GetIntrinsic('%EvalError%'); + +var DaysInYear = require('./DaysInYear'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function InLeapYear(t) { + var days = DaysInYear(YearFromTime(t)); + if (days === 365) { + return 0; + } + if (days === 366) { + return 1; + } + throw new $EvalError('Assertion failed: there are not 365 or 366 days in a year, got: ' + days); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/IsAccessorDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/5/IsAccessorDescriptor.js new file mode 100644 index 0000000..561382a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/IsAccessorDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var Type = require('./Type'); + +var assertRecord = require('../helpers/assertRecord'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.1 + +module.exports = function IsAccessorDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/IsCallable.js b/tic-tac-toe-app/node_modules/es-abstract/5/IsCallable.js new file mode 100644 index 0000000..e4bfa36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/IsCallable.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.11 + +module.exports = require('is-callable'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/IsDataDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/5/IsDataDescriptor.js new file mode 100644 index 0000000..783e2dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/IsDataDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var has = require('has'); + +var Type = require('./Type'); + +var assertRecord = require('../helpers/assertRecord'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.2 + +module.exports = function IsDataDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) { + return false; + } + + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/IsGenericDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/5/IsGenericDescriptor.js new file mode 100644 index 0000000..93340e9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/IsGenericDescriptor.js @@ -0,0 +1,23 @@ +'use strict'; + +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var Type = require('./Type'); + +var assertRecord = require('../helpers/assertRecord'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.3 + +module.exports = function IsGenericDescriptor(Desc) { + if (typeof Desc === 'undefined') { + return false; + } + + assertRecord(Type, 'Property Descriptor', 'Desc', Desc); + + if (!IsAccessorDescriptor(Desc) && !IsDataDescriptor(Desc)) { + return true; + } + + return false; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/IsPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/5/IsPropertyDescriptor.js new file mode 100644 index 0000000..2a96c63 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/IsPropertyDescriptor.js @@ -0,0 +1,17 @@ +'use strict'; + +var isPropertyDescriptor = require('../helpers/isPropertyDescriptor'); + +var Type = require('./Type'); +var IsDataDescriptor = require('./IsDataDescriptor'); +var IsAccessorDescriptor = require('./IsAccessorDescriptor'); + +// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type + +module.exports = function IsPropertyDescriptor(Desc) { + return isPropertyDescriptor({ + IsDataDescriptor: IsDataDescriptor, + IsAccessorDescriptor: IsAccessorDescriptor, + Type: Type + }, Desc); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/MakeDate.js b/tic-tac-toe-app/node_modules/es-abstract/5/MakeDate.js new file mode 100644 index 0000000..7b592d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/MakeDate.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.13 + +module.exports = function MakeDate(day, time) { + if (!$isFinite(day) || !$isFinite(time)) { + return NaN; + } + return (day * msPerDay) + time; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/MakeDay.js b/tic-tac-toe-app/node_modules/es-abstract/5/MakeDay.js new file mode 100644 index 0000000..f1ab810 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/MakeDay.js @@ -0,0 +1,33 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); +var $DateUTC = GetIntrinsic('%Date.UTC%'); + +var mod = require('../helpers/mod'); +var $isFinite = require('../helpers/isFinite'); + +var DateFromTime = require('./DateFromTime'); +var Day = require('./Day'); +var MonthFromTime = require('./MonthFromTime'); +var ToInteger = require('./ToInteger'); +var YearFromTime = require('./YearFromTime'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.12 + +module.exports = function MakeDay(year, month, date) { + if (!$isFinite(year) || !$isFinite(month) || !$isFinite(date)) { + return NaN; + } + var y = ToInteger(year); + var m = ToInteger(month); + var dt = ToInteger(date); + var ym = y + $floor(m / 12); + var mn = mod(m, 12); + var t = $DateUTC(ym, mn, 1); + if (YearFromTime(t) !== ym || MonthFromTime(t) !== mn || DateFromTime(t) !== 1) { + return NaN; + } + return Day(t) + dt - 1; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/MakeTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/MakeTime.js new file mode 100644 index 0000000..e118500 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/MakeTime.js @@ -0,0 +1,23 @@ +'use strict'; + +var $isFinite = require('../helpers/isFinite'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var msPerMinute = timeConstants.msPerMinute; +var msPerHour = timeConstants.msPerHour; + +var ToInteger = require('./ToInteger'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.11 + +module.exports = function MakeTime(hour, min, sec, ms) { + if (!$isFinite(hour) || !$isFinite(min) || !$isFinite(sec) || !$isFinite(ms)) { + return NaN; + } + var h = ToInteger(hour); + var m = ToInteger(min); + var s = ToInteger(sec); + var milli = ToInteger(ms); + var t = (h * msPerHour) + (m * msPerMinute) + (s * msPerSecond) + milli; + return t; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/MinFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/MinFromTime.js new file mode 100644 index 0000000..e80e191 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/MinFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerMinute = timeConstants.msPerMinute; +var MinutesPerHour = timeConstants.MinutesPerHour; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function MinFromTime(t) { + return mod($floor(t / msPerMinute), MinutesPerHour); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/MonthFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/MonthFromTime.js new file mode 100644 index 0000000..4f120f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/MonthFromTime.js @@ -0,0 +1,47 @@ +'use strict'; + +var DayWithinYear = require('./DayWithinYear'); +var InLeapYear = require('./InLeapYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.4 + +module.exports = function MonthFromTime(t) { + var day = DayWithinYear(t); + if (0 <= day && day < 31) { + return 0; + } + var leap = InLeapYear(t); + if (31 <= day && day < (59 + leap)) { + return 1; + } + if ((59 + leap) <= day && day < (90 + leap)) { + return 2; + } + if ((90 + leap) <= day && day < (120 + leap)) { + return 3; + } + if ((120 + leap) <= day && day < (151 + leap)) { + return 4; + } + if ((151 + leap) <= day && day < (181 + leap)) { + return 5; + } + if ((181 + leap) <= day && day < (212 + leap)) { + return 6; + } + if ((212 + leap) <= day && day < (243 + leap)) { + return 7; + } + if ((243 + leap) <= day && day < (273 + leap)) { + return 8; + } + if ((273 + leap) <= day && day < (304 + leap)) { + return 9; + } + if ((304 + leap) <= day && day < (334 + leap)) { + return 10; + } + if ((334 + leap) <= day && day < (365 + leap)) { + return 11; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/SameValue.js b/tic-tac-toe-app/node_modules/es-abstract/5/SameValue.js new file mode 100644 index 0000000..47c936d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/SameValue.js @@ -0,0 +1,13 @@ +'use strict'; + +var $isNaN = require('../helpers/isNaN'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.12 + +module.exports = function SameValue(x, y) { + if (x === y) { // 0 === -0, but they are not identical. + if (x === 0) { return 1 / x === 1 / y; } + return true; + } + return $isNaN(x) && $isNaN(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/SecFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/SecFromTime.js new file mode 100644 index 0000000..7190011 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/SecFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $floor = GetIntrinsic('%Math.floor%'); + +var mod = require('../helpers/mod'); +var timeConstants = require('../helpers/timeConstants'); +var msPerSecond = timeConstants.msPerSecond; +var SecondsPerMinute = timeConstants.SecondsPerMinute; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function SecFromTime(t) { + return mod($floor(t / msPerSecond), SecondsPerMinute); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/StrictEqualityComparison.js b/tic-tac-toe-app/node_modules/es-abstract/5/StrictEqualityComparison.js new file mode 100644 index 0000000..eea5df3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/StrictEqualityComparison.js @@ -0,0 +1,17 @@ +'use strict'; + +var Type = require('./Type'); + +// https://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 + +module.exports = function StrictEqualityComparison(x, y) { + var xType = Type(x); + var yType = Type(y); + if (xType !== yType) { + return false; + } + if (xType === 'Undefined' || xType === 'Null') { + return true; + } + return x === y; // shortcut for steps 4-7 +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/TimeClip.js b/tic-tac-toe-app/node_modules/es-abstract/5/TimeClip.js new file mode 100644 index 0000000..57aa08c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/TimeClip.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); +var $Number = GetIntrinsic('%Number%'); +var $abs = GetIntrinsic('%Math.abs%'); + +var $isFinite = require('../helpers/isFinite'); + +var ToNumber = require('./ToNumber'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.14 + +module.exports = function TimeClip(time) { + if (!$isFinite(time) || $abs(time) > 8.64e15) { + return NaN; + } + return $Number(new $Date(ToNumber(time))); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/TimeFromYear.js b/tic-tac-toe-app/node_modules/es-abstract/5/TimeFromYear.js new file mode 100644 index 0000000..df646c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/TimeFromYear.js @@ -0,0 +1,11 @@ +'use strict'; + +var msPerDay = require('../helpers/timeConstants').msPerDay; + +var DayFromYear = require('./DayFromYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function TimeFromYear(y) { + return msPerDay * DayFromYear(y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/TimeWithinDay.js b/tic-tac-toe-app/node_modules/es-abstract/5/TimeWithinDay.js new file mode 100644 index 0000000..c5b21d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/TimeWithinDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerDay = require('../helpers/timeConstants').msPerDay; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.2 + +module.exports = function TimeWithinDay(t) { + return mod(t, msPerDay); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToBoolean.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToBoolean.js new file mode 100644 index 0000000..65d8737 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToBoolean.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 + +module.exports = function ToBoolean(value) { return !!value; }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToInt32.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToInt32.js new file mode 100644 index 0000000..a8d2680 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToInt32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.5 + +module.exports = function ToInt32(x) { + return ToNumber(x) >> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToInteger.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToInteger.js new file mode 100644 index 0000000..a95265b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToInteger.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.4 + +module.exports = function ToInteger(value) { + var number = ToNumber(value); + if ($isNaN(number)) { return 0; } + if (number === 0 || !$isFinite(number)) { return number; } + return $sign(number) * $floor($abs(number)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToNumber.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToNumber.js new file mode 100644 index 0000000..4a7a3b8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToNumber.js @@ -0,0 +1,7 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.3 + +module.exports = function ToNumber(value) { + return +value; // eslint-disable-line no-implicit-coercion +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToObject.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToObject.js new file mode 100644 index 0000000..1d27a13 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToObject.js @@ -0,0 +1,14 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Object = GetIntrinsic('%Object%'); + +var CheckObjectCoercible = require('./CheckObjectCoercible'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.9 + +module.exports = function ToObject(value) { + CheckObjectCoercible(value); + return $Object(value); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToPrimitive.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToPrimitive.js new file mode 100644 index 0000000..071df70 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToPrimitive.js @@ -0,0 +1,5 @@ +'use strict'; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.1 + +module.exports = require('es-to-primitive/es5'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToPropertyDescriptor.js new file mode 100644 index 0000000..38e536e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToPropertyDescriptor.js @@ -0,0 +1,52 @@ +'use strict'; + +var has = require('has'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); + +var Type = require('./Type'); +var ToBoolean = require('./ToBoolean'); +var IsCallable = require('./IsCallable'); + +// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5 + +module.exports = function ToPropertyDescriptor(Obj) { + if (Type(Obj) !== 'Object') { + throw new $TypeError('ToPropertyDescriptor requires an object'); + } + + var desc = {}; + if (has(Obj, 'enumerable')) { + desc['[[Enumerable]]'] = ToBoolean(Obj.enumerable); + } + if (has(Obj, 'configurable')) { + desc['[[Configurable]]'] = ToBoolean(Obj.configurable); + } + if (has(Obj, 'value')) { + desc['[[Value]]'] = Obj.value; + } + if (has(Obj, 'writable')) { + desc['[[Writable]]'] = ToBoolean(Obj.writable); + } + if (has(Obj, 'get')) { + var getter = Obj.get; + if (typeof getter !== 'undefined' && !IsCallable(getter)) { + throw new TypeError('getter must be a function'); + } + desc['[[Get]]'] = getter; + } + if (has(Obj, 'set')) { + var setter = Obj.set; + if (typeof setter !== 'undefined' && !IsCallable(setter)) { + throw new $TypeError('setter must be a function'); + } + desc['[[Set]]'] = setter; + } + + if ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) { + throw new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute'); + } + return desc; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToString.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToString.js new file mode 100644 index 0000000..80ece42 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToString.js @@ -0,0 +1,12 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $String = GetIntrinsic('%String%'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.8 + +module.exports = function ToString(value) { + return $String(value); +}; + diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToUint16.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToUint16.js new file mode 100644 index 0000000..c8a408b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToUint16.js @@ -0,0 +1,24 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); + +var ToNumber = require('./ToNumber'); + +var $isNaN = require('../helpers/isNaN'); +var $isFinite = require('../helpers/isFinite'); +var $sign = require('../helpers/sign'); +var $mod = require('../helpers/mod'); + +var $floor = $Math.floor; +var $abs = $Math.abs; + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.7 + +module.exports = function ToUint16(value) { + var number = ToNumber(value); + if ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; } + var posInt = $sign(number) * $floor($abs(number)); + return $mod(posInt, 0x10000); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/ToUint32.js b/tic-tac-toe-app/node_modules/es-abstract/5/ToUint32.js new file mode 100644 index 0000000..3660f62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/ToUint32.js @@ -0,0 +1,9 @@ +'use strict'; + +var ToNumber = require('./ToNumber'); + +// http://www.ecma-international.org/ecma-262/5.1/#sec-9.6 + +module.exports = function ToUint32(x) { + return ToNumber(x) >>> 0; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/Type.js b/tic-tac-toe-app/node_modules/es-abstract/5/Type.js new file mode 100644 index 0000000..9cc750c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/Type.js @@ -0,0 +1,24 @@ +'use strict'; + +// https://www.ecma-international.org/ecma-262/5.1/#sec-8 + +module.exports = function Type(x) { + if (x === null) { + return 'Null'; + } + if (typeof x === 'undefined') { + return 'Undefined'; + } + if (typeof x === 'function' || typeof x === 'object') { + return 'Object'; + } + if (typeof x === 'number') { + return 'Number'; + } + if (typeof x === 'boolean') { + return 'Boolean'; + } + if (typeof x === 'string') { + return 'String'; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/WeekDay.js b/tic-tac-toe-app/node_modules/es-abstract/5/WeekDay.js new file mode 100644 index 0000000..2973e02 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/WeekDay.js @@ -0,0 +1,11 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +var Day = require('./Day'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.6 + +module.exports = function WeekDay(t) { + return mod(Day(t) + 4, 7); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/YearFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/YearFromTime.js new file mode 100644 index 0000000..ff5339f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/YearFromTime.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Date = GetIntrinsic('%Date%'); + +var callBound = require('../helpers/callBound'); + +var $getUTCFullYear = callBound('Date.prototype.getUTCFullYear'); + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.3 + +module.exports = function YearFromTime(t) { + // largest y such that this.TimeFromYear(y) <= t + return $getUTCFullYear(new $Date(t)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/modulo.js b/tic-tac-toe-app/node_modules/es-abstract/5/modulo.js new file mode 100644 index 0000000..bc04c06 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/modulo.js @@ -0,0 +1,9 @@ +'use strict'; + +var mod = require('../helpers/mod'); + +// https://ecma-international.org/ecma-262/5.1/#sec-5.2 + +module.exports = function modulo(x, y) { + return mod(x, y); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/5/msFromTime.js b/tic-tac-toe-app/node_modules/es-abstract/5/msFromTime.js new file mode 100644 index 0000000..c31eda0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/5/msFromTime.js @@ -0,0 +1,10 @@ +'use strict'; + +var mod = require('../helpers/mod'); +var msPerSecond = require('../helpers/timeConstants').msPerSecond; + +// https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.10 + +module.exports = function msFromTime(t) { + return mod(t, msPerSecond); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/CHANGELOG.md b/tic-tac-toe-app/node_modules/es-abstract/CHANGELOG.md new file mode 100644 index 0000000..b3922e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/CHANGELOG.md @@ -0,0 +1,333 @@ +1.17.5 / 2020-03-22 +================= + * [Fix] `CreateDataProperty`: update an existing property + * [Fix] run missing spackle from cd7504701879ddea0f5981e99cbcf93bfea9171d + * [Dev Deps] update `make-arrow-function`, `tape`, `@ljharb/eslint-config` + +1.17.4 / 2020-01-21 +================= + * [Fix] `2015+`: add code to handle IE 8’s problems + * [Tests] fix tests for IE 8 + +1.17.3 / 2020-01-19 +================= + * [Fix] `ObjectCreate` `2015+`: Fall back to `__proto__` and normal `new` in older browsers + * [Fix] `GetIntrinsic`: ensure the `allowMissing` property actually works on dotted intrinsics + +1.17.2 / 2020-01-14 +================= + * [Fix] `helpers/OwnPropertyKeys`: include non-enumerables too + +1.17.1 / 2020-01-14 +================= + * [Refactor] add `OwnPropertyKeys` helper, use it in `CopyDataProperties` + * [Refactor] `IteratorClose`: remove useless assignment + * [Dev Deps] update `eslint`, `tape`, `diff` + +1.17.0 / 2019-12-20 +================= + * [New] Split up each operation into its own file (prereleased) + * [Fix] `GetIntrinsic`: IE 8 has a broken `Object.getOwnPropertyDescriptor` + * [Fix] `object.assign` is a runtime dep (prereleased) + * [Refactor] `GetIntrinsic`: remove the internal property salts, since % already handles that + * [Refactor] `GetIntrinsic`: further simplification + * [Deps] update `is-callable`, `string.prototype.trimleft`, `string.prototype.trimright`, `is-regex` + * [Dev Deps] update `@ljharb/eslint-config`, `object-is`, `object.fromentries`, `tape` + * [Tests] add `.eslintignore` + * [meta] remove unused Makefile and associated utils + * [meta] only run spackle script in publish (#78) (prereleased) + +1.17.0-next.1 / 2019-12-11 +================= + * [Fix] `object.assign` is a runtime dep + * [meta] only run spackle script in publish (#78) + +1.17.0-next.0 / 2019-12-11 +================= + * [New] Split up each operation into its own file + +1.16.3 / 2019-12-04 +================= + * [Fix] `GetIntrinsic`: when given a path to a getter, return the actual getter + * [Dev Deps] update `eslint` + +1.16.2 / 2019-11-24 +================= + * [Fix] IE 6-7 lack JSON + * [Fix] IE 6-8 strings can’t use array slice, they need string slice + * [Dev Deps] update `eslint` + +1.16.1 / 2019-11-24 +================= + * [Fix] `GetIntrinsics`: turns out IE 8 throws when `Object.getOwnPropertyDescriptor(arguments);`, and does not throw on `callee` anyways + * [Deps] update `es-to-primitive`, `has-symbols`, `object-inspect` + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest` + * [meta] re-include year files inside `operations` + * [meta] add `funding` field + * [actions] add Automatic Rebase github action + * [Tests] use shared travis-ci config + * [Tests] disable `check-coverage`, and let codecov do it + +1.16.0 / 2019-10-18 +================= + * [New] `ES2015+`: add `SetFunctionName` + * [New] `ES2015+`: add `GetPrototypeFromConstructor`, with caveats + * [New] `ES2015+`: add `CreateListFromArrayLike` + * [New] `ES2016+`: add `OrdinarySetPrototypeOf` + * [New] `ES2016+`: add `OrdinaryGetPrototypeOf` + * [New] add `getSymbolDescription` and `getInferredName` helpers + * [Fix] `GetIterator`: add fallback for pre-Symbol environments, tests + * [Dev Deps] update `object.fromentries` + * [Tests] add `node` `v12.2` + +1.15.0 / 2019-10-02 +================= + * [New] `ES2018`+: add `DateString`, `TimeString` + * [New] `ES2015`+: add `ToDateString` + * [New] `ES5`+: add `msFromTime`, `SecFromTime`, `MinFromTime`, `HourFromTime`, `TimeWithinDay`, `Day`, `DayFromYear`, `TimeFromYear`, `YearFromTime`, `WeekDay`, `DaysInYear`, `InLeapYear`, `DayWithinYear`, `MonthFromTime`, `DateFromTime`, `MakeDay`, `MakeDate`, `MakeTime`, `TimeClip`, `modulo` + * [New] add `regexTester` helper + * [New] add `callBound` helper + * [New] add ES2020’s intrinsic dot notation + * [New] add `isPrefixOf` helper + * [New] add `maxSafeInteger` helper + * [Deps] update `string.prototype.trimleft`, `string.prototype.trimright` + * [Dev Deps] update `eslint` + * [Tests] on `node` `v12.11` + * [meta] npmignore operations scripts; add "deltas" + +1.14.2 / 2019-09-08 +================= + * [Fix] `ES2016`: `IterableToArrayLike`: add proper fallback for strings, pre-Symbols + * [Tests] on `node` `v12.10` + +1.14.1 / 2019-09-03 +================= + * [meta] republish with some extra files removed + +1.14.0 / 2019-09-02 +================= + * [New] add ES2019 + * [New] `ES2017+`: add `IterableToList` + * [New] `ES2016`: add `IterableToArrayLike` + * [New] `ES2015+`: add `ArrayCreate`, `ArraySetLength`, `OrdinaryDefineOwnProperty`, `OrdinaryGetOwnProperty`, `OrdinaryHasProperty`, `CreateHTML`, `GetOwnPropertyKeys`, `InstanceofOperator`, `SymbolDescriptiveString`, `GetSubstitution`, `ValidateAndApplyPropertyDescriptor`, `IsPromise`, `OrdinaryHasInstance`, `TestIntegrityLevel`, `SetIntegrityLevel` + * [New] add `callBind` helper, and use it + * [New] add helpers: `isPropertyDescriptor`, `every` + * [New] ES5+: add `Abstract Relational Comparison` + * [New] ES5+: add `Abstract Equality Comparison`, `Strict Equality Comparison` + * [Fix] `ES2015+`: `GetIterator`: only require native Symbols when `method` is omitted + * [Fix] `ES2015`: `Call`: error message now properly displays Symbols using `object-inspect` + * [Fix] `ES2015+`: `ValidateAndApplyPropertyDescriptor`: use ES2017 logic to bypass spec bugs + * [Fix] `ES2015+`: `CreateDataProperty`, `DefinePropertyOrThrow`, `ValidateAndApplyPropertyDescriptor`: add fallbacks for ES3 + * [Fix] `ES2015+`: `FromPropertyDescriptor`: no longer requires a fully complete Property Descriptor + * [Fix] `ES5`: `IsPropertyDescriptor`: call into `IsDataDescriptor` and `IsAccessorDescriptor` + * [Refactor] use `has-symbols` for Symbol detection + * [Fix] `helpers/assertRecord`: remove `console.log` + * [Deps] update `object-keys` + * [readme] add security note + * [meta] change http URLs to https + * [meta] linter cleanup + * [meta] fix getOps script + * [meta] add FUNDING.yml + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `safe-publish-latest`, `semver`, `replace`, `cheerio`, `tape` + * [Tests] up to `node` `v12.9`, `v11.15`, `v10.16`, `v8.16`, `v6.17` + * [Tests] temporarily allow node 0.6 to fail; segfaulting in travis + * [Tests] use the values helper more in es5 tests + * [Tests] fix linting to apply to all files + * [Tests] run `npx aud` only on prod deps + * [Tests] add v.descriptors helpers + * [Tests] use `npx aud` instead of `npm audit` with hoops + * [Tests] use `eclint` instead of `editorconfig-tools` + * [Tests] some intrinsic cleanup + * [Tests] migrate es5 tests to use values helper + * [Tests] add some missing ES2015 ops + +1.13.0 / 2019-01-02 +================= + * [New] add ES2018 + * [New] add ES2015/ES2016: EnumerableOwnNames; ES2017: EnumerableOwnProperties + * [New] `ES2015+`: add `thisBooleanValue`, `thisNumberValue`, `thisStringValue`, `thisTimeValue` + * [New] `ES2015+`: add `DefinePropertyOrThrow`, `DeletePropertyOrThrow`, `CreateMethodProperty` + * [New] add `assertRecord` helper + * [Deps] update `is-callable`, `has`, `object-keys`, `es-to-primitive` + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape`, `semver`, `safe-publish-latest`, `replace` + * [Tests] use `npm audit` instead of `nsp` + * [Tests] remove `jscs` + * [Tests] up to `node` `v11.6`, `v10.15`, `v8.15`, `v6.16` + * [Tests] move descriptor factories to `values` helper + * [Tests] add `getOps` to programmatically fetch abstract operation names + +1.12.0 / 2018-05-31 +================= + * [New] add `GetIntrinsic` entry point + * [New] `ES2015`+: add `ObjectCreate` + * [Robustness]: `ES2015+`: ensure `Math.{abs,floor}` and `Function.call` are cached + +1.11.0 / 2018-03-21 +================= + * [New] `ES2015+`: add iterator abstract ops + * [Dev Deps] update `eslint`, `nsp`, `object.assign`, `semver`, `tape` + * [Tests] up to `node` `v9.8`, `v8.10`, `v6.13` + +1.10.0 / 2017-11-24 +================= + * [New] ES2015+: `AdvanceStringIndex` + * [Dev Deps] update `eslint`, `nsp` + * [Tests] require node 0.6 to pass again + * [Tests] up to `node` `v9.2`, `v8.9`, `v6.12`; use `nvm install-latest-npm`; pin included builds to LTS + +1.9.0 / 2017-09-30 +================= + * [New] `es2015+`: add `ArraySpeciesCreate` + * [New] ES2015+: add `CreateDataProperty` and `CreateDataPropertyOrThrow` + * [Tests] consolidate duplicated tests + * [Tests] increase coverage + * [Dev Deps] update `nsp`, `eslint` + +1.8.2 / 2017-09-03 +================= + * [Fix] `es2015`+: `ToNumber`: provide the proper hint for Date objects (#27) + * [Dev Deps] update `eslint` + +1.8.1 / 2017-08-30 +================= + * [Fix] ES2015+: `ToPropertyKey`: should return a symbol for Symbols (#26) + * [Deps] update `function-bind` + * [Dev Deps] update `eslint`, `@ljharb/eslint-config` + * [Docs] github broke markdown parsing + +1.8.0 / 2017-08-04 +================= + * [New] add ES2017 + * [New] move es6+ to es2015+; leave es6/es7 as aliases + * [New] ES5+: add `IsPropertyDescriptor`, `IsAccessorDescriptor`, `IsDataDescriptor`, `IsGenericDescriptor`, `FromPropertyDescriptor`, `ToPropertyDescriptor` + * [New] ES2015+: add `CompletePropertyDescriptor`, `Set`, `HasOwnProperty`, `HasProperty`, `IsConcatSpreadable`, `Invoke`, `CreateIterResultObject`, `RegExpExec` + * [Fix] es7/es2016: do not mutate ES6 + * [Fix] assign helper only supports one source + * [Deps] update `is-regex` + * [Dev Deps] update `nsp`, `eslint`, `@ljharb/eslint-config` + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `nsp`, `semver`, `tape` + * [Tests] add tests for missing and excess operations + * [Tests] add codecov for coverage + * [Tests] up to `node` `v8.2`, `v7.10`, `v6.11`, `v4.8`; newer npm breaks on older node + * [Tests] use same lists of value types across tests; ensure tests are the same when ops are the same + * [Tests] ES2015: add ToNumber symbol tests + * [Tests] switch to `nyc` for code coverage + * [Tests] make IsRegExp tests consistent across editions + +1.7.0 / 2017-01-22 +================= + * [New] ES6: Add `GetMethod` (#16) + * [New] ES6: Add `GetV` (#16) + * [New] ES6: Add `Get` (#17) + * [Tests] up to `node` `v7.4`, `v6.9`, `v4.6`; improve test matrix + * [Dev Deps] update `tape`, `nsp`, `eslint`, `@ljharb/eslint-config`, `safe-publish-latest` + +1.6.1 / 2016-08-21 +================= + * [Fix] ES6: IsConstructor should return true for `class` constructors. + +1.6.0 / 2016-08-20 +================= + * [New] ES5 / ES6: add `Type` + * [New] ES6: `SpeciesConstructor` + * [Dev Deps] update `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config`, `semver`; add `safe-publish-latest` + * [Tests] up to `node` `v6.4`, `v5.12`, `v4.5` + +1.5.1 / 2016-05-30 +================= + * [Fix] `ES.IsRegExp`: actually look up `Symbol.match` on the argument + * [Refactor] create `isNaN` helper + * [Deps] update `is-callable`, `function-bind` + * [Deps] update `es-to-primitive`, fix ES5 tests + * [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config`, `tape`, `nsp` + * [Tests] up to `node` `v6.2`, `v5.11`, `v4.4` + * [Tests] use pretest/posttest for linting/security + +1.5.0 / 2015-12-27 +================= + * [New] adds `Symbol.toPrimitive` support via `es-to-primitive` + * [Deps] update `is-callable`, `es-to-primitive` + * [Dev Deps] update `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config`, `semver`, `tape` + * [Tests] up to `node` `v5.3` + +1.4.3 / 2015-11-04 +================= + * [Fix] `ES6.ToNumber`: should give `NaN` for explicitly signed hex strings (#4) + * [Refactor] `ES6.ToNumber`: No need to double-trim + * [Refactor] group tests better + * [Tests] should still pass on `node` `v0.8` + +1.4.2 / 2015-11-02 +================= + * [Fix] ensure `ES.ToNumber` trims whitespace, and does not trim non-whitespace (#3) + +1.4.1 / 2015-10-31 +================= + * [Fix] ensure only 0-1 are valid binary and 0-7 are valid octal digits (#2) + * [Dev Deps] update `tape`, `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config` + * [Tests] on `node` `v5.0` + * [Tests] fix npm upgrades for older node versions + * package.json: use object form of "authors", add "contributors" + +1.4.0 / 2015-09-26 +================= + * [Deps] update `is-callable` + * [Dev Deps] update `tape`, `jscs`, `eslint`, `@ljharb/eslint-config` + * [Tests] on `node` `v4.2` + * [New] Add `SameValueNonNumber` to ES7 + +1.3.2 / 2015-09-26 +================= + * [Fix] Fix `ES6.IsRegExp` to properly handle `Symbol.match`, per spec. + * [Tests] up to `io.js` `v3.3`, `node` `v4.1` + * [Dev Deps] update `tape`, `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config`, `semver` + +1.3.1 / 2015-08-15 +================= + * [Fix] Ensure that objects that `toString` to a binary or octal literal also convert properly + +1.3.0 / 2015-08-15 +================= + * [New] ES6’s ToNumber now supports binary and octal literals. + * [Dev Deps] update `jscs`, `eslint`, `@ljharb/eslint-config`, `tape` + * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG + * [Tests] up to `io.js` `v3.0` + +1.2.2 / 2015-07-28 +================= + * [Fix] Both `ES5.CheckObjectCoercible` and `ES6.RequireObjectCoercible` return the value if they don't throw. + * [Tests] Test on latest `io.js` versions. + * [Dev Deps] Update `eslint`, `jscs`, `tape`, `semver`, `covert`, `nsp` + +1.2.1 / 2015-03-20 +================= + * Fix `isFinite` helper. + +1.2.0 / 2015-03-19 +================= + * Use `es-to-primitive` for ToPrimitive methods. + * Test on latest `io.js` versions; allow failures on all but 2 latest `node`/`io.js` versions. + +1.1.2 / 2015-03-20 +================= + * Fix isFinite helper. + +1.1.1 / 2015-03-19 +================= + * Fix isPrimitive check for functions + * Update `eslint`, `editorconfig-tools`, `semver`, `nsp` + +1.1.0 / 2015-02-17 +================= + * Add ES7 export (non-default). + * All grade A-supported `node`/`iojs` versions now ship with an `npm` that understands `^`. + * Test on `iojs-v1.2`. + +1.0.1 / 2015-01-30 +================= + * Use `is-callable` instead of an internal function. + * Update `tape`, `jscs`, `nsp`, `eslint` + +1.0.0 / 2015-01-10 +================= + * v1.0.0 diff --git a/tic-tac-toe-app/node_modules/es-abstract/GetIntrinsic.js b/tic-tac-toe-app/node_modules/es-abstract/GetIntrinsic.js new file mode 100644 index 0000000..6e0af00 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/GetIntrinsic.js @@ -0,0 +1,218 @@ +'use strict'; + +/* globals + Atomics, + SharedArrayBuffer, +*/ + +var undefined; + +var $TypeError = TypeError; + +var $gOPD = Object.getOwnPropertyDescriptor; +if ($gOPD) { + try { + $gOPD({}, ''); + } catch (e) { + $gOPD = null; // this is IE 8, which has a broken gOPD + } +} + +var throwTypeError = function () { throw new $TypeError(); }; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = require('has-symbols')(); + +var getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto + +var generator; // = function * () {}; +var generatorFunction = generator ? getProto(generator) : undefined; +var asyncFn; // async function() {}; +var asyncFunction = asyncFn ? asyncFn.constructor : undefined; +var asyncGen; // async function * () {}; +var asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined; +var asyncGenIterator = asyncGen ? asyncGen() : undefined; + +var TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype, + '%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined, + '%ArrayPrototype%': Array.prototype, + '%ArrayProto_entries%': Array.prototype.entries, + '%ArrayProto_forEach%': Array.prototype.forEach, + '%ArrayProto_keys%': Array.prototype.keys, + '%ArrayProto_values%': Array.prototype.values, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': asyncFunction, + '%AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined, + '%AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined, + '%AsyncGeneratorFunction%': asyncGenFunction, + '%AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined, + '%AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%Boolean%': Boolean, + '%BooleanPrototype%': Boolean.prototype, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype, + '%Date%': Date, + '%DatePrototype%': Date.prototype, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': Error, + '%ErrorPrototype%': Error.prototype, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': EvalError, + '%EvalErrorPrototype%': EvalError.prototype, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype, + '%Function%': Function, + '%FunctionPrototype%': Function.prototype, + '%Generator%': generator ? getProto(generator()) : undefined, + '%GeneratorFunction%': generatorFunction, + '%GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%JSONParse%': typeof JSON === 'object' ? JSON.parse : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()), + '%MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype, + '%Math%': Math, + '%Number%': Number, + '%NumberPrototype%': Number.prototype, + '%Object%': Object, + '%ObjectPrototype%': Object.prototype, + '%ObjProto_toString%': Object.prototype.toString, + '%ObjProto_valueOf%': Object.prototype.valueOf, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype, + '%PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then, + '%Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all, + '%Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject, + '%Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': RangeError, + '%RangeErrorPrototype%': RangeError.prototype, + '%ReferenceError%': ReferenceError, + '%ReferenceErrorPrototype%': ReferenceError.prototype, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%RegExpPrototype%': RegExp.prototype, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype, + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined, + '%StringPrototype%': String.prototype, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined, + '%SyntaxError%': SyntaxError, + '%SyntaxErrorPrototype%': SyntaxError.prototype, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined, + '%TypeError%': $TypeError, + '%TypeErrorPrototype%': $TypeError.prototype, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype, + '%URIError%': URIError, + '%URIErrorPrototype%': URIError.prototype, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet, + '%WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype +}; + +var bind = require('function-bind'); +var $replace = bind.call(Function.call, String.prototype.replace); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : (number || match); + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + if (!(name in INTRINSICS)) { + throw new SyntaxError('intrinsic ' + name + ' does not exist!'); + } + + // istanbul ignore if // hopefully this is impossible to test :-) + if (typeof INTRINSICS[name] === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return INTRINSICS[name]; +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new TypeError('"allowMissing" argument must be a boolean'); + } + + var parts = stringToPath(name); + + var value = getBaseIntrinsic('%' + (parts.length > 0 ? parts[0] : '') + '%', allowMissing); + for (var i = 1; i < parts.length; i += 1) { + if (value != null) { + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, parts[i]); + if (!allowMissing && !(parts[i] in value)) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + value = desc ? (desc.get || desc.value) : value[parts[i]]; + } else { + value = value[parts[i]]; + } + } + } + return value; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/LICENSE b/tic-tac-toe-app/node_modules/es-abstract/LICENSE new file mode 100644 index 0000000..8c271c1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (C) 2015 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/es-abstract/README.md b/tic-tac-toe-app/node_modules/es-abstract/README.md new file mode 100644 index 0000000..20342d1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/README.md @@ -0,0 +1,48 @@ +# es-abstract [![Version Badge][npm-version-svg]][package-url] + +[![Build Status][travis-svg]][travis-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +[![browser support][testling-svg]][testling-url] + +ECMAScript spec abstract operations. +When different versions of the spec conflict, the default export will be the latest version of the abstract operation. +All abstract operations will also be available under an `es5`/`es2015`/`es2016`/`es2017`/`es2018`/`es2019` entry point, and exported property, if you require a specific version. + +## Example + +```js +var ES = require('es-abstract'); +var assert = require('assert'); + +assert(ES.isCallable(function () {})); +assert(!ES.isCallable(/a/g)); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +## Security + +Please email [@ljharb](https://github.com/ljharb) or see https://tidelift.com/security if you have a potential security vulnerability to report. + +[package-url]: https://npmjs.org/package/es-abstract +[npm-version-svg]: http://versionbadg.es/ljharb/es-abstract.svg +[travis-svg]: https://travis-ci.org/ljharb/es-abstract.svg +[travis-url]: https://travis-ci.org/ljharb/es-abstract +[deps-svg]: https://david-dm.org/ljharb/es-abstract.svg +[deps-url]: https://david-dm.org/ljharb/es-abstract +[dev-deps-svg]: https://david-dm.org/ljharb/es-abstract/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-abstract#info=devDependencies +[testling-svg]: https://ci.testling.com/ljharb/es-abstract.png +[testling-url]: https://ci.testling.com/ljharb/es-abstract +[npm-badge-png]: https://nodei.co/npm/es-abstract.png?downloads=true&stars=true +[license-image]: https://img.shields.io/npm/l/es-abstract.svg +[license-url]: LICENSE +[downloads-image]: https://img.shields.io/npm/dm/es-abstract.svg +[downloads-url]: https://npm-stat.com/charts.html?package=es-abstract diff --git a/tic-tac-toe-app/node_modules/es-abstract/es2015.js b/tic-tac-toe-app/node_modules/es-abstract/es2015.js new file mode 100644 index 0000000..dc02ca4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es2015.js @@ -0,0 +1,115 @@ +'use strict'; + +/* eslint global-require: 0 */ +// https://www.ecma-international.org/ecma-262/6.0/#sec-abstract-operations +var ES6 = { + 'Abstract Equality Comparison': require('./2015/AbstractEqualityComparison'), + 'Abstract Relational Comparison': require('./2015/AbstractRelationalComparison'), + 'Strict Equality Comparison': require('./2015/StrictEqualityComparison'), + AdvanceStringIndex: require('./2015/AdvanceStringIndex'), + ArrayCreate: require('./2015/ArrayCreate'), + ArraySetLength: require('./2015/ArraySetLength'), + ArraySpeciesCreate: require('./2015/ArraySpeciesCreate'), + Call: require('./2015/Call'), + CanonicalNumericIndexString: require('./2015/CanonicalNumericIndexString'), + CompletePropertyDescriptor: require('./2015/CompletePropertyDescriptor'), + CreateDataProperty: require('./2015/CreateDataProperty'), + CreateDataPropertyOrThrow: require('./2015/CreateDataPropertyOrThrow'), + CreateHTML: require('./2015/CreateHTML'), + CreateIterResultObject: require('./2015/CreateIterResultObject'), + CreateListFromArrayLike: require('./2015/CreateListFromArrayLike'), + CreateMethodProperty: require('./2015/CreateMethodProperty'), + DateFromTime: require('./2015/DateFromTime'), + Day: require('./2015/Day'), + DayFromYear: require('./2015/DayFromYear'), + DaysInYear: require('./2015/DaysInYear'), + DayWithinYear: require('./2015/DayWithinYear'), + DefinePropertyOrThrow: require('./2015/DefinePropertyOrThrow'), + DeletePropertyOrThrow: require('./2015/DeletePropertyOrThrow'), + EnumerableOwnNames: require('./2015/EnumerableOwnNames'), + FromPropertyDescriptor: require('./2015/FromPropertyDescriptor'), + Get: require('./2015/Get'), + GetIterator: require('./2015/GetIterator'), + GetMethod: require('./2015/GetMethod'), + GetOwnPropertyKeys: require('./2015/GetOwnPropertyKeys'), + GetPrototypeFromConstructor: require('./2015/GetPrototypeFromConstructor'), + GetSubstitution: require('./2015/GetSubstitution'), + GetV: require('./2015/GetV'), + HasOwnProperty: require('./2015/HasOwnProperty'), + HasProperty: require('./2015/HasProperty'), + HourFromTime: require('./2015/HourFromTime'), + InLeapYear: require('./2015/InLeapYear'), + InstanceofOperator: require('./2015/InstanceofOperator'), + Invoke: require('./2015/Invoke'), + IsAccessorDescriptor: require('./2015/IsAccessorDescriptor'), + IsArray: require('./2015/IsArray'), + IsCallable: require('./2015/IsCallable'), + IsConcatSpreadable: require('./2015/IsConcatSpreadable'), + IsConstructor: require('./2015/IsConstructor'), + IsDataDescriptor: require('./2015/IsDataDescriptor'), + IsExtensible: require('./2015/IsExtensible'), + IsGenericDescriptor: require('./2015/IsGenericDescriptor'), + IsInteger: require('./2015/IsInteger'), + IsPromise: require('./2015/IsPromise'), + IsPropertyDescriptor: require('./2015/IsPropertyDescriptor'), + IsPropertyKey: require('./2015/IsPropertyKey'), + IsRegExp: require('./2015/IsRegExp'), + IteratorClose: require('./2015/IteratorClose'), + IteratorComplete: require('./2015/IteratorComplete'), + IteratorNext: require('./2015/IteratorNext'), + IteratorStep: require('./2015/IteratorStep'), + IteratorValue: require('./2015/IteratorValue'), + MakeDate: require('./2015/MakeDate'), + MakeDay: require('./2015/MakeDay'), + MakeTime: require('./2015/MakeTime'), + MinFromTime: require('./2015/MinFromTime'), + modulo: require('./2015/modulo'), + MonthFromTime: require('./2015/MonthFromTime'), + msFromTime: require('./2015/msFromTime'), + ObjectCreate: require('./2015/ObjectCreate'), + OrdinaryDefineOwnProperty: require('./2015/OrdinaryDefineOwnProperty'), + OrdinaryGetOwnProperty: require('./2015/OrdinaryGetOwnProperty'), + OrdinaryHasInstance: require('./2015/OrdinaryHasInstance'), + OrdinaryHasProperty: require('./2015/OrdinaryHasProperty'), + RegExpExec: require('./2015/RegExpExec'), + RequireObjectCoercible: require('./2015/RequireObjectCoercible'), + SameValue: require('./2015/SameValue'), + SameValueZero: require('./2015/SameValueZero'), + SecFromTime: require('./2015/SecFromTime'), + Set: require('./2015/Set'), + SetFunctionName: require('./2015/SetFunctionName'), + SetIntegrityLevel: require('./2015/SetIntegrityLevel'), + SpeciesConstructor: require('./2015/SpeciesConstructor'), + SymbolDescriptiveString: require('./2015/SymbolDescriptiveString'), + TestIntegrityLevel: require('./2015/TestIntegrityLevel'), + thisBooleanValue: require('./2015/thisBooleanValue'), + thisNumberValue: require('./2015/thisNumberValue'), + thisStringValue: require('./2015/thisStringValue'), + thisTimeValue: require('./2015/thisTimeValue'), + TimeClip: require('./2015/TimeClip'), + TimeFromYear: require('./2015/TimeFromYear'), + TimeWithinDay: require('./2015/TimeWithinDay'), + ToBoolean: require('./2015/ToBoolean'), + ToDateString: require('./2015/ToDateString'), + ToInt16: require('./2015/ToInt16'), + ToInt32: require('./2015/ToInt32'), + ToInt8: require('./2015/ToInt8'), + ToInteger: require('./2015/ToInteger'), + ToLength: require('./2015/ToLength'), + ToNumber: require('./2015/ToNumber'), + ToObject: require('./2015/ToObject'), + ToPrimitive: require('./2015/ToPrimitive'), + ToPropertyDescriptor: require('./2015/ToPropertyDescriptor'), + ToPropertyKey: require('./2015/ToPropertyKey'), + ToString: require('./2015/ToString'), + ToUint16: require('./2015/ToUint16'), + ToUint32: require('./2015/ToUint32'), + ToUint8: require('./2015/ToUint8'), + ToUint8Clamp: require('./2015/ToUint8Clamp'), + Type: require('./2015/Type'), + ValidateAndApplyPropertyDescriptor: require('./2015/ValidateAndApplyPropertyDescriptor'), + WeekDay: require('./2015/WeekDay'), + YearFromTime: require('./2015/YearFromTime') +}; + +module.exports = ES6; diff --git a/tic-tac-toe-app/node_modules/es-abstract/es2016.js b/tic-tac-toe-app/node_modules/es-abstract/es2016.js new file mode 100644 index 0000000..9e72e82 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es2016.js @@ -0,0 +1,119 @@ +'use strict'; + +/* eslint global-require: 0 */ +// https://www.ecma-international.org/ecma-262/7.0/#sec-abstract-operations +var ES2016 = { + 'Abstract Equality Comparison': require('./2016/AbstractEqualityComparison'), + 'Abstract Relational Comparison': require('./2016/AbstractRelationalComparison'), + 'Strict Equality Comparison': require('./2016/StrictEqualityComparison'), + AdvanceStringIndex: require('./2016/AdvanceStringIndex'), + ArrayCreate: require('./2016/ArrayCreate'), + ArraySetLength: require('./2016/ArraySetLength'), + ArraySpeciesCreate: require('./2016/ArraySpeciesCreate'), + Call: require('./2016/Call'), + CanonicalNumericIndexString: require('./2016/CanonicalNumericIndexString'), + CompletePropertyDescriptor: require('./2016/CompletePropertyDescriptor'), + CreateDataProperty: require('./2016/CreateDataProperty'), + CreateDataPropertyOrThrow: require('./2016/CreateDataPropertyOrThrow'), + CreateHTML: require('./2016/CreateHTML'), + CreateIterResultObject: require('./2016/CreateIterResultObject'), + CreateListFromArrayLike: require('./2016/CreateListFromArrayLike'), + CreateMethodProperty: require('./2016/CreateMethodProperty'), + DateFromTime: require('./2016/DateFromTime'), + Day: require('./2016/Day'), + DayFromYear: require('./2016/DayFromYear'), + DaysInYear: require('./2016/DaysInYear'), + DayWithinYear: require('./2016/DayWithinYear'), + DefinePropertyOrThrow: require('./2016/DefinePropertyOrThrow'), + DeletePropertyOrThrow: require('./2016/DeletePropertyOrThrow'), + EnumerableOwnNames: require('./2016/EnumerableOwnNames'), + FromPropertyDescriptor: require('./2016/FromPropertyDescriptor'), + Get: require('./2016/Get'), + GetIterator: require('./2016/GetIterator'), + GetMethod: require('./2016/GetMethod'), + GetOwnPropertyKeys: require('./2016/GetOwnPropertyKeys'), + GetPrototypeFromConstructor: require('./2016/GetPrototypeFromConstructor'), + GetSubstitution: require('./2016/GetSubstitution'), + GetV: require('./2016/GetV'), + HasOwnProperty: require('./2016/HasOwnProperty'), + HasProperty: require('./2016/HasProperty'), + HourFromTime: require('./2016/HourFromTime'), + InLeapYear: require('./2016/InLeapYear'), + InstanceofOperator: require('./2016/InstanceofOperator'), + Invoke: require('./2016/Invoke'), + IsAccessorDescriptor: require('./2016/IsAccessorDescriptor'), + IsArray: require('./2016/IsArray'), + IsCallable: require('./2016/IsCallable'), + IsConcatSpreadable: require('./2016/IsConcatSpreadable'), + IsConstructor: require('./2016/IsConstructor'), + IsDataDescriptor: require('./2016/IsDataDescriptor'), + IsExtensible: require('./2016/IsExtensible'), + IsGenericDescriptor: require('./2016/IsGenericDescriptor'), + IsInteger: require('./2016/IsInteger'), + IsPromise: require('./2016/IsPromise'), + IsPropertyDescriptor: require('./2016/IsPropertyDescriptor'), + IsPropertyKey: require('./2016/IsPropertyKey'), + IsRegExp: require('./2016/IsRegExp'), + IterableToArrayLike: require('./2016/IterableToArrayLike'), + IteratorClose: require('./2016/IteratorClose'), + IteratorComplete: require('./2016/IteratorComplete'), + IteratorNext: require('./2016/IteratorNext'), + IteratorStep: require('./2016/IteratorStep'), + IteratorValue: require('./2016/IteratorValue'), + MakeDate: require('./2016/MakeDate'), + MakeDay: require('./2016/MakeDay'), + MakeTime: require('./2016/MakeTime'), + MinFromTime: require('./2016/MinFromTime'), + modulo: require('./2016/modulo'), + MonthFromTime: require('./2016/MonthFromTime'), + msFromTime: require('./2016/msFromTime'), + ObjectCreate: require('./2016/ObjectCreate'), + OrdinaryDefineOwnProperty: require('./2016/OrdinaryDefineOwnProperty'), + OrdinaryGetOwnProperty: require('./2016/OrdinaryGetOwnProperty'), + OrdinaryGetPrototypeOf: require('./2016/OrdinaryGetPrototypeOf'), + OrdinarySetPrototypeOf: require('./2016/OrdinarySetPrototypeOf'), + OrdinaryHasInstance: require('./2016/OrdinaryHasInstance'), + OrdinaryHasProperty: require('./2016/OrdinaryHasProperty'), + RegExpExec: require('./2016/RegExpExec'), + RequireObjectCoercible: require('./2016/RequireObjectCoercible'), + SameValue: require('./2016/SameValue'), + SameValueNonNumber: require('./2016/SameValueNonNumber'), + SameValueZero: require('./2016/SameValueZero'), + SecFromTime: require('./2016/SecFromTime'), + Set: require('./2016/Set'), + SetFunctionName: require('./2016/SetFunctionName'), + SetIntegrityLevel: require('./2016/SetIntegrityLevel'), + SpeciesConstructor: require('./2016/SpeciesConstructor'), + SymbolDescriptiveString: require('./2016/SymbolDescriptiveString'), + TestIntegrityLevel: require('./2016/TestIntegrityLevel'), + thisBooleanValue: require('./2016/thisBooleanValue'), + thisNumberValue: require('./2016/thisNumberValue'), + thisStringValue: require('./2016/thisStringValue'), + thisTimeValue: require('./2016/thisTimeValue'), + TimeClip: require('./2016/TimeClip'), + TimeFromYear: require('./2016/TimeFromYear'), + TimeWithinDay: require('./2016/TimeWithinDay'), + ToBoolean: require('./2016/ToBoolean'), + ToDateString: require('./2016/ToDateString'), + ToInt16: require('./2016/ToInt16'), + ToInt32: require('./2016/ToInt32'), + ToInt8: require('./2016/ToInt8'), + ToInteger: require('./2016/ToInteger'), + ToLength: require('./2016/ToLength'), + ToNumber: require('./2016/ToNumber'), + ToObject: require('./2016/ToObject'), + ToPrimitive: require('./2016/ToPrimitive'), + ToPropertyDescriptor: require('./2016/ToPropertyDescriptor'), + ToPropertyKey: require('./2016/ToPropertyKey'), + ToString: require('./2016/ToString'), + ToUint16: require('./2016/ToUint16'), + ToUint32: require('./2016/ToUint32'), + ToUint8: require('./2016/ToUint8'), + ToUint8Clamp: require('./2016/ToUint8Clamp'), + Type: require('./2016/Type'), + ValidateAndApplyPropertyDescriptor: require('./2016/ValidateAndApplyPropertyDescriptor'), + WeekDay: require('./2016/WeekDay'), + YearFromTime: require('./2016/YearFromTime') +}; + +module.exports = ES2016; diff --git a/tic-tac-toe-app/node_modules/es-abstract/es2017.js b/tic-tac-toe-app/node_modules/es-abstract/es2017.js new file mode 100644 index 0000000..5f317b7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es2017.js @@ -0,0 +1,120 @@ +'use strict'; + +/* eslint global-require: 0 */ +// https://www.ecma-international.org/ecma-262/8.0/#sec-abstract-operations +var ES2017 = { + 'Abstract Equality Comparison': require('./2017/AbstractEqualityComparison'), + 'Abstract Relational Comparison': require('./2017/AbstractRelationalComparison'), + 'Strict Equality Comparison': require('./2017/StrictEqualityComparison'), + AdvanceStringIndex: require('./2017/AdvanceStringIndex'), + ArrayCreate: require('./2017/ArrayCreate'), + ArraySetLength: require('./2017/ArraySetLength'), + ArraySpeciesCreate: require('./2017/ArraySpeciesCreate'), + Call: require('./2017/Call'), + CanonicalNumericIndexString: require('./2017/CanonicalNumericIndexString'), + CompletePropertyDescriptor: require('./2017/CompletePropertyDescriptor'), + CreateDataProperty: require('./2017/CreateDataProperty'), + CreateDataPropertyOrThrow: require('./2017/CreateDataPropertyOrThrow'), + CreateHTML: require('./2017/CreateHTML'), + CreateIterResultObject: require('./2017/CreateIterResultObject'), + CreateListFromArrayLike: require('./2017/CreateListFromArrayLike'), + CreateMethodProperty: require('./2017/CreateMethodProperty'), + DateFromTime: require('./2017/DateFromTime'), + Day: require('./2017/Day'), + DayFromYear: require('./2017/DayFromYear'), + DaysInYear: require('./2017/DaysInYear'), + DayWithinYear: require('./2017/DayWithinYear'), + DefinePropertyOrThrow: require('./2017/DefinePropertyOrThrow'), + DeletePropertyOrThrow: require('./2017/DeletePropertyOrThrow'), + EnumerableOwnProperties: require('./2017/EnumerableOwnProperties'), + FromPropertyDescriptor: require('./2017/FromPropertyDescriptor'), + Get: require('./2017/Get'), + GetIterator: require('./2017/GetIterator'), + GetMethod: require('./2017/GetMethod'), + GetOwnPropertyKeys: require('./2017/GetOwnPropertyKeys'), + GetPrototypeFromConstructor: require('./2017/GetPrototypeFromConstructor'), + GetSubstitution: require('./2017/GetSubstitution'), + GetV: require('./2017/GetV'), + HasOwnProperty: require('./2017/HasOwnProperty'), + HasProperty: require('./2017/HasProperty'), + HourFromTime: require('./2017/HourFromTime'), + InLeapYear: require('./2017/InLeapYear'), + InstanceofOperator: require('./2017/InstanceofOperator'), + Invoke: require('./2017/Invoke'), + IsAccessorDescriptor: require('./2017/IsAccessorDescriptor'), + IsArray: require('./2017/IsArray'), + IsCallable: require('./2017/IsCallable'), + IsConcatSpreadable: require('./2017/IsConcatSpreadable'), + IsConstructor: require('./2017/IsConstructor'), + IsDataDescriptor: require('./2017/IsDataDescriptor'), + IsExtensible: require('./2017/IsExtensible'), + IsGenericDescriptor: require('./2017/IsGenericDescriptor'), + IsInteger: require('./2017/IsInteger'), + IsPromise: require('./2017/IsPromise'), + IsPropertyDescriptor: require('./2017/IsPropertyDescriptor'), + IsPropertyKey: require('./2017/IsPropertyKey'), + IsRegExp: require('./2017/IsRegExp'), + IterableToList: require('./2017/IterableToList'), + IteratorClose: require('./2017/IteratorClose'), + IteratorComplete: require('./2017/IteratorComplete'), + IteratorNext: require('./2017/IteratorNext'), + IteratorStep: require('./2017/IteratorStep'), + IteratorValue: require('./2017/IteratorValue'), + MakeDate: require('./2017/MakeDate'), + MakeDay: require('./2017/MakeDay'), + MakeTime: require('./2017/MakeTime'), + MinFromTime: require('./2017/MinFromTime'), + modulo: require('./2017/modulo'), + MonthFromTime: require('./2017/MonthFromTime'), + msFromTime: require('./2017/msFromTime'), + ObjectCreate: require('./2017/ObjectCreate'), + OrdinaryDefineOwnProperty: require('./2017/OrdinaryDefineOwnProperty'), + OrdinaryGetOwnProperty: require('./2017/OrdinaryGetOwnProperty'), + OrdinarySetPrototypeOf: require('./2017/OrdinarySetPrototypeOf'), + OrdinaryGetPrototypeOf: require('./2017/OrdinaryGetPrototypeOf'), + OrdinaryHasInstance: require('./2017/OrdinaryHasInstance'), + OrdinaryHasProperty: require('./2017/OrdinaryHasProperty'), + RegExpExec: require('./2017/RegExpExec'), + RequireObjectCoercible: require('./2017/RequireObjectCoercible'), + SameValue: require('./2017/SameValue'), + SameValueNonNumber: require('./2017/SameValueNonNumber'), + SameValueZero: require('./2017/SameValueZero'), + SecFromTime: require('./2017/SecFromTime'), + Set: require('./2017/Set'), + SetFunctionName: require('./2017/SetFunctionName'), + SetIntegrityLevel: require('./2017/SetIntegrityLevel'), + SpeciesConstructor: require('./2017/SpeciesConstructor'), + SymbolDescriptiveString: require('./2017/SymbolDescriptiveString'), + TestIntegrityLevel: require('./2017/TestIntegrityLevel'), + thisBooleanValue: require('./2017/thisBooleanValue'), + thisNumberValue: require('./2017/thisNumberValue'), + thisStringValue: require('./2017/thisStringValue'), + thisTimeValue: require('./2017/thisTimeValue'), + TimeClip: require('./2017/TimeClip'), + TimeFromYear: require('./2017/TimeFromYear'), + TimeWithinDay: require('./2017/TimeWithinDay'), + ToBoolean: require('./2017/ToBoolean'), + ToDateString: require('./2017/ToDateString'), + ToIndex: require('./2017/ToIndex'), + ToInt16: require('./2017/ToInt16'), + ToInt32: require('./2017/ToInt32'), + ToInt8: require('./2017/ToInt8'), + ToInteger: require('./2017/ToInteger'), + ToLength: require('./2017/ToLength'), + ToNumber: require('./2017/ToNumber'), + ToObject: require('./2017/ToObject'), + ToPrimitive: require('./2017/ToPrimitive'), + ToPropertyDescriptor: require('./2017/ToPropertyDescriptor'), + ToPropertyKey: require('./2017/ToPropertyKey'), + ToString: require('./2017/ToString'), + ToUint16: require('./2017/ToUint16'), + ToUint32: require('./2017/ToUint32'), + ToUint8: require('./2017/ToUint8'), + ToUint8Clamp: require('./2017/ToUint8Clamp'), + Type: require('./2017/Type'), + ValidateAndApplyPropertyDescriptor: require('./2017/ValidateAndApplyPropertyDescriptor'), + WeekDay: require('./2017/WeekDay'), + YearFromTime: require('./2017/YearFromTime') +}; + +module.exports = ES2017; diff --git a/tic-tac-toe-app/node_modules/es-abstract/es2018.js b/tic-tac-toe-app/node_modules/es-abstract/es2018.js new file mode 100644 index 0000000..e68910b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es2018.js @@ -0,0 +1,126 @@ +'use strict'; + +/* eslint global-require: 0 */ +// https://www.ecma-international.org/ecma-262/9.0/#sec-abstract-operations +var ES2018 = { + 'Abstract Equality Comparison': require('./2018/AbstractEqualityComparison'), + 'Abstract Relational Comparison': require('./2018/AbstractRelationalComparison'), + 'Strict Equality Comparison': require('./2018/StrictEqualityComparison'), + AdvanceStringIndex: require('./2018/AdvanceStringIndex'), + ArrayCreate: require('./2018/ArrayCreate'), + ArraySetLength: require('./2018/ArraySetLength'), + ArraySpeciesCreate: require('./2018/ArraySpeciesCreate'), + Call: require('./2018/Call'), + CanonicalNumericIndexString: require('./2018/CanonicalNumericIndexString'), + CompletePropertyDescriptor: require('./2018/CompletePropertyDescriptor'), + CopyDataProperties: require('./2018/CopyDataProperties'), + CreateDataProperty: require('./2018/CreateDataProperty'), + CreateDataPropertyOrThrow: require('./2018/CreateDataPropertyOrThrow'), + CreateHTML: require('./2018/CreateHTML'), + CreateIterResultObject: require('./2018/CreateIterResultObject'), + CreateListFromArrayLike: require('./2018/CreateListFromArrayLike'), + CreateMethodProperty: require('./2018/CreateMethodProperty'), + DateFromTime: require('./2018/DateFromTime'), + DateString: require('./2018/DateString'), + Day: require('./2018/Day'), + DayFromYear: require('./2018/DayFromYear'), + DaysInYear: require('./2018/DaysInYear'), + DayWithinYear: require('./2018/DayWithinYear'), + DefinePropertyOrThrow: require('./2018/DefinePropertyOrThrow'), + DeletePropertyOrThrow: require('./2018/DeletePropertyOrThrow'), + EnumerableOwnPropertyNames: require('./2018/EnumerableOwnPropertyNames'), + FromPropertyDescriptor: require('./2018/FromPropertyDescriptor'), + Get: require('./2018/Get'), + GetIterator: require('./2018/GetIterator'), + GetMethod: require('./2018/GetMethod'), + GetOwnPropertyKeys: require('./2018/GetOwnPropertyKeys'), + GetPrototypeFromConstructor: require('./2018/GetPrototypeFromConstructor'), + GetSubstitution: require('./2018/GetSubstitution'), + GetV: require('./2018/GetV'), + HasOwnProperty: require('./2018/HasOwnProperty'), + HasProperty: require('./2018/HasProperty'), + HourFromTime: require('./2018/HourFromTime'), + InLeapYear: require('./2018/InLeapYear'), + InstanceofOperator: require('./2018/InstanceofOperator'), + Invoke: require('./2018/Invoke'), + IsAccessorDescriptor: require('./2018/IsAccessorDescriptor'), + IsArray: require('./2018/IsArray'), + IsCallable: require('./2018/IsCallable'), + IsConcatSpreadable: require('./2018/IsConcatSpreadable'), + IsConstructor: require('./2018/IsConstructor'), + IsDataDescriptor: require('./2018/IsDataDescriptor'), + IsExtensible: require('./2018/IsExtensible'), + IsGenericDescriptor: require('./2018/IsGenericDescriptor'), + IsInteger: require('./2018/IsInteger'), + IsPromise: require('./2018/IsPromise'), + IsPropertyKey: require('./2018/IsPropertyKey'), + IsRegExp: require('./2018/IsRegExp'), + IsStringPrefix: require('./2018/IsStringPrefix'), + IterableToList: require('./2018/IterableToList'), + IteratorClose: require('./2018/IteratorClose'), + IteratorComplete: require('./2018/IteratorComplete'), + IteratorNext: require('./2018/IteratorNext'), + IteratorStep: require('./2018/IteratorStep'), + IteratorValue: require('./2018/IteratorValue'), + MakeDate: require('./2018/MakeDate'), + MakeDay: require('./2018/MakeDay'), + MakeTime: require('./2018/MakeTime'), + MinFromTime: require('./2018/MinFromTime'), + modulo: require('./2018/modulo'), + MonthFromTime: require('./2018/MonthFromTime'), + msFromTime: require('./2018/msFromTime'), + NumberToString: require('./2018/NumberToString'), + ObjectCreate: require('./2018/ObjectCreate'), + OrdinaryDefineOwnProperty: require('./2018/OrdinaryDefineOwnProperty'), + OrdinaryGetOwnProperty: require('./2018/OrdinaryGetOwnProperty'), + OrdinaryGetPrototypeOf: require('./2018/OrdinaryGetPrototypeOf'), + OrdinarySetPrototypeOf: require('./2018/OrdinarySetPrototypeOf'), + OrdinaryHasInstance: require('./2018/OrdinaryHasInstance'), + OrdinaryHasProperty: require('./2018/OrdinaryHasProperty'), + PromiseResolve: require('./2018/PromiseResolve'), + RegExpExec: require('./2018/RegExpExec'), + RequireObjectCoercible: require('./2018/RequireObjectCoercible'), + SameValue: require('./2018/SameValue'), + SameValueNonNumber: require('./2018/SameValueNonNumber'), + SameValueZero: require('./2018/SameValueZero'), + SecFromTime: require('./2018/SecFromTime'), + Set: require('./2018/Set'), + SetFunctionName: require('./2018/SetFunctionName'), + SetIntegrityLevel: require('./2018/SetIntegrityLevel'), + SpeciesConstructor: require('./2018/SpeciesConstructor'), + SymbolDescriptiveString: require('./2018/SymbolDescriptiveString'), + TestIntegrityLevel: require('./2018/TestIntegrityLevel'), + thisBooleanValue: require('./2018/thisBooleanValue'), + thisNumberValue: require('./2018/thisNumberValue'), + thisStringValue: require('./2018/thisStringValue'), + thisSymbolValue: require('./2018/thisSymbolValue'), + thisTimeValue: require('./2018/thisTimeValue'), + TimeClip: require('./2018/TimeClip'), + TimeFromYear: require('./2018/TimeFromYear'), + TimeString: require('./2018/TimeString'), + TimeWithinDay: require('./2018/TimeWithinDay'), + ToBoolean: require('./2018/ToBoolean'), + ToDateString: require('./2018/ToDateString'), + ToIndex: require('./2018/ToIndex'), + ToInt16: require('./2018/ToInt16'), + ToInt32: require('./2018/ToInt32'), + ToInt8: require('./2018/ToInt8'), + ToInteger: require('./2018/ToInteger'), + ToLength: require('./2018/ToLength'), + ToNumber: require('./2018/ToNumber'), + ToObject: require('./2018/ToObject'), + ToPrimitive: require('./2018/ToPrimitive'), + ToPropertyDescriptor: require('./2018/ToPropertyDescriptor'), + ToPropertyKey: require('./2018/ToPropertyKey'), + ToString: require('./2018/ToString'), + ToUint16: require('./2018/ToUint16'), + ToUint32: require('./2018/ToUint32'), + ToUint8: require('./2018/ToUint8'), + ToUint8Clamp: require('./2018/ToUint8Clamp'), + Type: require('./2018/Type'), + ValidateAndApplyPropertyDescriptor: require('./2018/ValidateAndApplyPropertyDescriptor'), + WeekDay: require('./2018/WeekDay'), + YearFromTime: require('./2018/YearFromTime') +}; + +module.exports = ES2018; diff --git a/tic-tac-toe-app/node_modules/es-abstract/es2019.js b/tic-tac-toe-app/node_modules/es-abstract/es2019.js new file mode 100644 index 0000000..3bd65e4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es2019.js @@ -0,0 +1,129 @@ +'use strict'; + +/* eslint global-require: 0 */ +// https://www.ecma-international.org/ecma-262/10.0/#sec-abstract-operations +var ES2019 = { + 'Abstract Equality Comparison': require('./2019/AbstractEqualityComparison'), + 'Abstract Relational Comparison': require('./2019/AbstractRelationalComparison'), + 'Strict Equality Comparison': require('./2019/StrictEqualityComparison'), + AddEntriesFromIterable: require('./2019/AddEntriesFromIterable'), + AdvanceStringIndex: require('./2019/AdvanceStringIndex'), + ArrayCreate: require('./2019/ArrayCreate'), + ArraySetLength: require('./2019/ArraySetLength'), + ArraySpeciesCreate: require('./2019/ArraySpeciesCreate'), + Call: require('./2019/Call'), + CanonicalNumericIndexString: require('./2019/CanonicalNumericIndexString'), + CompletePropertyDescriptor: require('./2019/CompletePropertyDescriptor'), + CopyDataProperties: require('./2019/CopyDataProperties'), + CreateDataProperty: require('./2019/CreateDataProperty'), + CreateDataPropertyOrThrow: require('./2019/CreateDataPropertyOrThrow'), + CreateHTML: require('./2019/CreateHTML'), + CreateIterResultObject: require('./2019/CreateIterResultObject'), + CreateListFromArrayLike: require('./2019/CreateListFromArrayLike'), + CreateMethodProperty: require('./2019/CreateMethodProperty'), + DateFromTime: require('./2019/DateFromTime'), + DateString: require('./2019/DateString'), + Day: require('./2019/Day'), + DayFromYear: require('./2019/DayFromYear'), + DaysInYear: require('./2019/DaysInYear'), + DayWithinYear: require('./2019/DayWithinYear'), + DefinePropertyOrThrow: require('./2019/DefinePropertyOrThrow'), + DeletePropertyOrThrow: require('./2019/DeletePropertyOrThrow'), + EnumerableOwnPropertyNames: require('./2019/EnumerableOwnPropertyNames'), + FlattenIntoArray: require('./2019/FlattenIntoArray'), + FromPropertyDescriptor: require('./2019/FromPropertyDescriptor'), + Get: require('./2019/Get'), + GetIterator: require('./2019/GetIterator'), + GetMethod: require('./2019/GetMethod'), + GetOwnPropertyKeys: require('./2019/GetOwnPropertyKeys'), + GetPrototypeFromConstructor: require('./2019/GetPrototypeFromConstructor'), + GetSubstitution: require('./2019/GetSubstitution'), + GetV: require('./2019/GetV'), + HasOwnProperty: require('./2019/HasOwnProperty'), + HasProperty: require('./2019/HasProperty'), + HourFromTime: require('./2019/HourFromTime'), + InLeapYear: require('./2019/InLeapYear'), + InstanceofOperator: require('./2019/InstanceofOperator'), + Invoke: require('./2019/Invoke'), + IsAccessorDescriptor: require('./2019/IsAccessorDescriptor'), + IsArray: require('./2019/IsArray'), + IsCallable: require('./2019/IsCallable'), + IsConcatSpreadable: require('./2019/IsConcatSpreadable'), + IsConstructor: require('./2019/IsConstructor'), + IsDataDescriptor: require('./2019/IsDataDescriptor'), + IsExtensible: require('./2019/IsExtensible'), + IsGenericDescriptor: require('./2019/IsGenericDescriptor'), + IsInteger: require('./2019/IsInteger'), + IsPromise: require('./2019/IsPromise'), + IsPropertyKey: require('./2019/IsPropertyKey'), + IsRegExp: require('./2019/IsRegExp'), + IsStringPrefix: require('./2019/IsStringPrefix'), + IterableToList: require('./2019/IterableToList'), + IteratorClose: require('./2019/IteratorClose'), + IteratorComplete: require('./2019/IteratorComplete'), + IteratorNext: require('./2019/IteratorNext'), + IteratorStep: require('./2019/IteratorStep'), + IteratorValue: require('./2019/IteratorValue'), + MakeDate: require('./2019/MakeDate'), + MakeDay: require('./2019/MakeDay'), + MakeTime: require('./2019/MakeTime'), + MinFromTime: require('./2019/MinFromTime'), + modulo: require('./2019/modulo'), + MonthFromTime: require('./2019/MonthFromTime'), + msFromTime: require('./2019/msFromTime'), + NumberToString: require('./2019/NumberToString'), + ObjectCreate: require('./2019/ObjectCreate'), + OrdinaryDefineOwnProperty: require('./2019/OrdinaryDefineOwnProperty'), + OrdinaryGetOwnProperty: require('./2019/OrdinaryGetOwnProperty'), + OrdinaryGetPrototypeOf: require('./2019/OrdinaryGetPrototypeOf'), + OrdinarySetPrototypeOf: require('./2019/OrdinarySetPrototypeOf'), + OrdinaryHasInstance: require('./2019/OrdinaryHasInstance'), + OrdinaryHasProperty: require('./2019/OrdinaryHasProperty'), + PromiseResolve: require('./2019/PromiseResolve'), + RegExpExec: require('./2019/RegExpExec'), + RequireObjectCoercible: require('./2019/RequireObjectCoercible'), + SameValue: require('./2019/SameValue'), + SameValueNonNumber: require('./2019/SameValueNonNumber'), + SameValueZero: require('./2019/SameValueZero'), + SecFromTime: require('./2019/SecFromTime'), + Set: require('./2019/Set'), + SetFunctionName: require('./2019/SetFunctionName'), + SetIntegrityLevel: require('./2019/SetIntegrityLevel'), + SpeciesConstructor: require('./2019/SpeciesConstructor'), + SymbolDescriptiveString: require('./2019/SymbolDescriptiveString'), + TestIntegrityLevel: require('./2019/TestIntegrityLevel'), + thisBooleanValue: require('./2019/thisBooleanValue'), + thisNumberValue: require('./2019/thisNumberValue'), + thisStringValue: require('./2019/thisStringValue'), + thisSymbolValue: require('./2019/thisSymbolValue'), + thisTimeValue: require('./2019/thisTimeValue'), + TimeClip: require('./2019/TimeClip'), + TimeFromYear: require('./2019/TimeFromYear'), + TimeString: require('./2019/TimeString'), + TimeWithinDay: require('./2019/TimeWithinDay'), + ToBoolean: require('./2019/ToBoolean'), + ToDateString: require('./2019/ToDateString'), + ToIndex: require('./2019/ToIndex'), + ToInt16: require('./2019/ToInt16'), + ToInt32: require('./2019/ToInt32'), + ToInt8: require('./2019/ToInt8'), + ToInteger: require('./2019/ToInteger'), + ToLength: require('./2019/ToLength'), + ToNumber: require('./2019/ToNumber'), + ToObject: require('./2019/ToObject'), + ToPrimitive: require('./2019/ToPrimitive'), + ToPropertyDescriptor: require('./2019/ToPropertyDescriptor'), + ToPropertyKey: require('./2019/ToPropertyKey'), + ToString: require('./2019/ToString'), + ToUint16: require('./2019/ToUint16'), + ToUint32: require('./2019/ToUint32'), + ToUint8: require('./2019/ToUint8'), + ToUint8Clamp: require('./2019/ToUint8Clamp'), + TrimString: require('./2019/TrimString'), + Type: require('./2019/Type'), + ValidateAndApplyPropertyDescriptor: require('./2019/ValidateAndApplyPropertyDescriptor'), + WeekDay: require('./2019/WeekDay'), + YearFromTime: require('./2019/YearFromTime') +}; + +module.exports = ES2019; diff --git a/tic-tac-toe-app/node_modules/es-abstract/es5.js b/tic-tac-toe-app/node_modules/es-abstract/es5.js new file mode 100644 index 0000000..2cc9515 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es5.js @@ -0,0 +1,49 @@ +'use strict'; + +/* eslint global-require: 0 */ + +// https://es5.github.io/#x9 +module.exports = { + 'Abstract Equality Comparison': require('./5/AbstractEqualityComparison'), + 'Abstract Relational Comparison': require('./5/AbstractRelationalComparison'), + 'Strict Equality Comparison': require('./5/StrictEqualityComparison'), + CheckObjectCoercible: require('./5/CheckObjectCoercible'), + DateFromTime: require('./5/DateFromTime'), + Day: require('./5/Day'), + DayFromYear: require('./5/DayFromYear'), + DaysInYear: require('./5/DaysInYear'), + DayWithinYear: require('./5/DayWithinYear'), + FromPropertyDescriptor: require('./5/FromPropertyDescriptor'), + HourFromTime: require('./5/HourFromTime'), + InLeapYear: require('./5/InLeapYear'), + IsAccessorDescriptor: require('./5/IsAccessorDescriptor'), + IsCallable: require('./5/IsCallable'), + IsDataDescriptor: require('./5/IsDataDescriptor'), + IsGenericDescriptor: require('./5/IsGenericDescriptor'), + IsPropertyDescriptor: require('./5/IsPropertyDescriptor'), + MakeDate: require('./5/MakeDate'), + MakeDay: require('./5/MakeDay'), + MakeTime: require('./5/MakeTime'), + MinFromTime: require('./5/MinFromTime'), + modulo: require('./5/modulo'), + MonthFromTime: require('./5/MonthFromTime'), + msFromTime: require('./5/msFromTime'), + SameValue: require('./5/SameValue'), + SecFromTime: require('./5/SecFromTime'), + TimeClip: require('./5/TimeClip'), + TimeFromYear: require('./5/TimeFromYear'), + TimeWithinDay: require('./5/TimeWithinDay'), + ToBoolean: require('./5/ToBoolean'), + ToInt32: require('./5/ToInt32'), + ToInteger: require('./5/ToInteger'), + ToNumber: require('./5/ToNumber'), + ToObject: require('./5/ToObject'), + ToPrimitive: require('./5/ToPrimitive'), + ToPropertyDescriptor: require('./5/ToPropertyDescriptor'), + ToString: require('./5/ToString'), + ToUint16: require('./5/ToUint16'), + ToUint32: require('./5/ToUint32'), + Type: require('./5/Type'), + WeekDay: require('./5/WeekDay'), + YearFromTime: require('./5/YearFromTime') +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/es6.js b/tic-tac-toe-app/node_modules/es-abstract/es6.js new file mode 100644 index 0000000..2d1f4dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es6.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./es2015'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/es7.js b/tic-tac-toe-app/node_modules/es-abstract/es7.js new file mode 100644 index 0000000..f2f15c0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/es7.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./es2016'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/DefineOwnProperty.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/DefineOwnProperty.js new file mode 100644 index 0000000..99ace10 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/DefineOwnProperty.js @@ -0,0 +1,45 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); + +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = null; + } +} + +var callBound = require('../helpers/callBound'); + +var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable'); + +// eslint-disable-next-line max-params +module.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) { + if (!$defineProperty) { + if (!IsDataDescriptor(desc)) { + // ES3 does not support getters/setters + return false; + } + if (!desc['[[Configurable]]'] || !desc['[[Writable]]']) { + return false; + } + + // fallback for ES3 + if (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) { + // a non-enumerable existing property + return false; + } + + // property does not exist at all, or exists but is enumerable + var V = desc['[[Value]]']; + // eslint-disable-next-line no-param-reassign + O[P] = V; // will use [[Define]] + return SameValue(O[P], V); + } + $defineProperty(O, P, FromPropertyDescriptor(desc)); + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/OwnPropertyKeys.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/OwnPropertyKeys.js new file mode 100644 index 0000000..7d02196 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/OwnPropertyKeys.js @@ -0,0 +1,21 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBind = require('./callBind'); +var callBound = require('./callBound'); + +var $pushApply = callBind.apply(GetIntrinsic('%Array.prototype.push%')); +var $SymbolValueOf = callBound('Symbol.prototype.valueOf', true); +var $gOPN = GetIntrinsic('%Object.getOwnPropertyNames%', true); +var $gOPS = $SymbolValueOf ? GetIntrinsic('%Object.getOwnPropertySymbols%') : null; + +var keys = require('object-keys'); + +module.exports = function OwnPropertyKeys(source) { + var ownKeys = ($gOPN || keys)(source); + if ($gOPS) { + $pushApply(ownKeys, $gOPS(source)); + } + return ownKeys; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/assertRecord.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/assertRecord.js new file mode 100644 index 0000000..45e115a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/assertRecord.js @@ -0,0 +1,48 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $SyntaxError = GetIntrinsic('%SyntaxError%'); + +var has = require('has'); + +var predicates = { + // https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type + 'Property Descriptor': function isPropertyDescriptor(Type, Desc) { + if (Type(Desc) !== 'Object') { + return false; + } + var allowed = { + '[[Configurable]]': true, + '[[Enumerable]]': true, + '[[Get]]': true, + '[[Set]]': true, + '[[Value]]': true, + '[[Writable]]': true + }; + + for (var key in Desc) { // eslint-disable-line + if (has(Desc, key) && !allowed[key]) { + return false; + } + } + + var isData = has(Desc, '[[Value]]'); + var IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]'); + if (isData && IsAccessor) { + throw new $TypeError('Property Descriptors may not be both accessor and data descriptors'); + } + return true; + } +}; + +module.exports = function assertRecord(Type, recordType, argumentName, value) { + var predicate = predicates[recordType]; + if (typeof predicate !== 'function') { + throw new $SyntaxError('unknown record type: ' + recordType); + } + if (!predicate(Type, value)) { + throw new $TypeError(argumentName + ' must be a ' + recordType); + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/assign.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/assign.js new file mode 100644 index 0000000..7e6666e --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/assign.js @@ -0,0 +1,22 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var has = require('has'); + +var $assign = GetIntrinsic('%Object%').assign; + +module.exports = function assign(target, source) { + if ($assign) { + return $assign(target, source); + } + + // eslint-disable-next-line no-restricted-syntax + for (var key in source) { + if (has(source, key)) { + // eslint-disable-next-line no-param-reassign + target[key] = source[key]; + } + } + return target; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/callBind.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/callBind.js new file mode 100644 index 0000000..dd206ab --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/callBind.js @@ -0,0 +1,17 @@ +'use strict'; + +var bind = require('function-bind'); + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Function = GetIntrinsic('%Function%'); +var $apply = $Function.apply; +var $call = $Function.call; + +module.exports = function callBind() { + return bind.apply($call, arguments); +}; + +module.exports.apply = function applyBind() { + return bind.apply($apply, arguments); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/callBound.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/callBound.js new file mode 100644 index 0000000..9dc8fc5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/callBound.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBind = require('./callBind'); + +var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); + +module.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.')) { + return callBind(intrinsic); + } + return intrinsic; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/every.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/every.js new file mode 100644 index 0000000..42a4582 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/every.js @@ -0,0 +1,10 @@ +'use strict'; + +module.exports = function every(array, predicate) { + for (var i = 0; i < array.length; i += 1) { + if (!predicate(array[i], i, array)) { + return false; + } + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/forEach.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/forEach.js new file mode 100644 index 0000000..35915a6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/forEach.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = function forEach(array, callback) { + for (var i = 0; i < array.length; i += 1) { + callback(array[i], i, array); // eslint-disable-line callback-return + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/getInferredName.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/getInferredName.js new file mode 100644 index 0000000..2dab6e7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/getInferredName.js @@ -0,0 +1,10 @@ +'use strict'; + +var getInferredName; +try { + // eslint-disable-next-line no-new-func + getInferredName = Function('s', 'return { [s]() {} }[s].name;'); +} catch (e) {} + +var inferred = function () {}; +module.exports = getInferredName && inferred.name === 'inferred' ? getInferredName : null; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/getIteratorMethod.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/getIteratorMethod.js new file mode 100644 index 0000000..02f932c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/getIteratorMethod.js @@ -0,0 +1,45 @@ +'use strict'; + +var hasSymbols = require('has-symbols')(); +var GetIntrinsic = require('../GetIntrinsic'); +var callBound = require('./callBound'); + +var $iterator = GetIntrinsic('%Symbol.iterator%', true); +var $stringSlice = callBound('String.prototype.slice'); + +module.exports = function getIteratorMethod(ES, iterable) { + var usingIterator; + if (hasSymbols) { + usingIterator = ES.GetMethod(iterable, $iterator); + } else if (ES.IsArray(iterable)) { + usingIterator = function () { + var i = -1; + var arr = this; // eslint-disable-line no-invalid-this + return { + next: function () { + i += 1; + return { + done: i >= arr.length, + value: arr[i] + }; + } + }; + }; + } else if (ES.Type(iterable) === 'String') { + usingIterator = function () { + var i = 0; + return { + next: function () { + var nextIndex = ES.AdvanceStringIndex(iterable, i, true); + var value = $stringSlice(iterable, i, nextIndex); + i = nextIndex; + return { + done: nextIndex > iterable.length, + value: value + }; + } + }; + }; + } + return usingIterator; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js new file mode 100644 index 0000000..71168e9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%'); +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/getProto.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/getProto.js new file mode 100644 index 0000000..af10fd8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/getProto.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var originalGetProto = GetIntrinsic('%Object.getPrototypeOf%', true); +var $ArrayProto = GetIntrinsic('%Array.prototype%'); + +module.exports = originalGetProto || ( + // eslint-disable-next-line no-proto + [].__proto__ === $ArrayProto + ? function (O) { + return O.__proto__; // eslint-disable-line no-proto + } + : null +); diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/getSymbolDescription.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/getSymbolDescription.js new file mode 100644 index 0000000..dff8fcc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/getSymbolDescription.js @@ -0,0 +1,30 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var callBound = require('./callBound'); + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var symToStr = callBound('Symbol.prototype.toString', true); + +var getInferredName = require('./getInferredName'); + +module.exports = function getSymbolDescription(symbol) { + if (!symToStr) { + throw new $SyntaxError('Symbols are not supported in this environment'); + } + var str = symToStr(symbol); // will throw if not a symbol + + if (getInferredName) { + var name = getInferredName(symbol); + if (name === '') { return; } + // eslint-disable-next-line consistent-return + return name.slice(1, -1); // name.slice('['.length, -']'.length); + } + + var desc = str.slice(7, -1); // str.slice('Symbol('.length, -')'.length); + if (desc) { + // eslint-disable-next-line consistent-return + return desc; + } +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/isFinite.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/isFinite.js new file mode 100644 index 0000000..9e7cd4f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/isFinite.js @@ -0,0 +1,5 @@ +'use strict'; + +var $isNaN = Number.isNaN || function (a) { return a !== a; }; + +module.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; }; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/isNaN.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/isNaN.js new file mode 100644 index 0000000..cb8631d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/isNaN.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = Number.isNaN || function isNaN(a) { + return a !== a; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/isPrefixOf.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/isPrefixOf.js new file mode 100644 index 0000000..b67d640 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/isPrefixOf.js @@ -0,0 +1,13 @@ +'use strict'; + +var $strSlice = require('../helpers/callBound')('String.prototype.slice'); + +module.exports = function isPrefixOf(prefix, string) { + if (prefix === string) { + return true; + } + if (prefix.length > string.length) { + return false; + } + return $strSlice(string, 0, prefix.length) === prefix; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/isPrimitive.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/isPrimitive.js new file mode 100644 index 0000000..06f0bf0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/isPrimitive.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = function isPrimitive(value) { + return value === null || (typeof value !== 'function' && typeof value !== 'object'); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/isPropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/isPropertyDescriptor.js new file mode 100644 index 0000000..23e8995 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/isPropertyDescriptor.js @@ -0,0 +1,31 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var has = require('has'); +var $TypeError = GetIntrinsic('%TypeError%'); + +module.exports = function IsPropertyDescriptor(ES, Desc) { + if (ES.Type(Desc) !== 'Object') { + return false; + } + var allowed = { + '[[Configurable]]': true, + '[[Enumerable]]': true, + '[[Get]]': true, + '[[Set]]': true, + '[[Value]]': true, + '[[Writable]]': true + }; + + for (var key in Desc) { // eslint-disable-line + if (has(Desc, key) && !allowed[key]) { + return false; + } + } + + if (ES.IsDataDescriptor(Desc) && ES.IsAccessorDescriptor(Desc)) { + throw new $TypeError('Property Descriptors may not be both accessor and data descriptors'); + } + return true; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/isSamePropertyDescriptor.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/isSamePropertyDescriptor.js new file mode 100644 index 0000000..a6162a1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/isSamePropertyDescriptor.js @@ -0,0 +1,20 @@ +'use strict'; + +var every = require('./every'); + +module.exports = function isSamePropertyDescriptor(ES, D1, D2) { + var fields = [ + '[[Configurable]]', + '[[Enumerable]]', + '[[Get]]', + '[[Set]]', + '[[Value]]', + '[[Writable]]' + ]; + return every(fields, function (field) { + if ((field in D1) !== (field in D2)) { + return false; + } + return ES.SameValue(D1[field], D2[field]); + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/maxSafeInteger.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/maxSafeInteger.js new file mode 100644 index 0000000..2fe8f38 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/maxSafeInteger.js @@ -0,0 +1,8 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $Math = GetIntrinsic('%Math%'); +var $Number = GetIntrinsic('%Number%'); + +module.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/mod.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/mod.js new file mode 100644 index 0000000..70f0eea --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/mod.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = function mod(number, modulo) { + var remain = number % modulo; + return Math.floor(remain >= 0 ? remain : remain + modulo); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/padTimeComponent.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/padTimeComponent.js new file mode 100644 index 0000000..cbd8d06 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/padTimeComponent.js @@ -0,0 +1,9 @@ +'use strict'; + +var callBound = require('../helpers/callBound'); + +var $strSlice = callBound('String.prototype.slice'); + +module.exports = function padTimeComponent(c, count) { + return $strSlice('00' + c, -(count || 2)); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/regexTester.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/regexTester.js new file mode 100644 index 0000000..982cc9f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/regexTester.js @@ -0,0 +1,11 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var $test = GetIntrinsic('RegExp.prototype.test'); + +var callBind = require('./callBind'); + +module.exports = function regexTester(regex) { + return callBind($test, regex); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/setProto.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/setProto.js new file mode 100644 index 0000000..29ec991 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/setProto.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var originalSetProto = GetIntrinsic('%Object.setPrototypeOf%', true); +var $ArrayProto = GetIntrinsic('%Array.prototype%'); + +module.exports = originalSetProto || ( + // eslint-disable-next-line no-proto, no-negated-condition + [].__proto__ !== $ArrayProto + ? null + : function (O, proto) { + O.__proto__ = proto; // eslint-disable-line no-proto, no-param-reassign + return O; + } +); diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/sign.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/sign.js new file mode 100644 index 0000000..598ea7d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/sign.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = function sign(number) { + return number >= 0 ? 1 : -1; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/helpers/timeConstants.js b/tic-tac-toe-app/node_modules/es-abstract/helpers/timeConstants.js new file mode 100644 index 0000000..c275b40 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/helpers/timeConstants.js @@ -0,0 +1,19 @@ +'use strict'; + +var HoursPerDay = 24; +var MinutesPerHour = 60; +var SecondsPerMinute = 60; +var msPerSecond = 1e3; +var msPerMinute = msPerSecond * SecondsPerMinute; +var msPerHour = msPerMinute * MinutesPerHour; +var msPerDay = 86400000; + +module.exports = { + HoursPerDay: HoursPerDay, + MinutesPerHour: MinutesPerHour, + SecondsPerMinute: SecondsPerMinute, + msPerSecond: msPerSecond, + msPerMinute: msPerMinute, + msPerHour: msPerHour, + msPerDay: msPerDay +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/index.js b/tic-tac-toe-app/node_modules/es-abstract/index.js new file mode 100644 index 0000000..7cef039 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/index.js @@ -0,0 +1,26 @@ +'use strict'; + +var assign = require('./helpers/assign'); + +var ES5 = require('./es5'); +var ES2015 = require('./es2015'); +var ES2016 = require('./es2016'); +var ES2017 = require('./es2017'); +var ES2018 = require('./es2018'); +var ES2019 = require('./es2019'); + +var ES = { + ES5: ES5, + ES6: ES2015, + ES2015: ES2015, + ES7: ES2016, + ES2016: ES2016, + ES2017: ES2017, + ES2018: ES2018, + ES2019: ES2019 +}; +assign(ES, ES5); +delete ES.CheckObjectCoercible; // renamed in ES6 to RequireObjectCoercible +assign(ES, ES2015); + +module.exports = ES; diff --git a/tic-tac-toe-app/node_modules/es-abstract/operations/.eslintrc b/tic-tac-toe-app/node_modules/es-abstract/operations/.eslintrc new file mode 100644 index 0000000..bcd76f7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/operations/.eslintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "id-length": 0, + }, +} diff --git a/tic-tac-toe-app/node_modules/es-abstract/operations/2015.js b/tic-tac-toe-app/node_modules/es-abstract/operations/2015.js new file mode 100644 index 0000000..3f6c358 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/operations/2015.js @@ -0,0 +1,117 @@ +'use strict'; + +module.exports = { + IsPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op + + 'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/6.0/#sec-abstract-equality-comparison', + 'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/6.0/#sec-abstract-relational-comparison', + 'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/6.0/#sec-strict-equality-comparison', + AdvanceStringIndex: 'https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex', + ArrayCreate: 'https://ecma-international.org/ecma-262/6.0/#sec-arraycreate', + ArraySetLength: 'https://ecma-international.org/ecma-262/6.0/#sec-arraysetlength', + ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate', + Call: 'https://ecma-international.org/ecma-262/6.0/#sec-call', + CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring', + CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor', + Construct: 'https://ecma-international.org/ecma-262/6.0/#sec-construct', + CreateArrayFromList: 'https://ecma-international.org/ecma-262/6.0/#sec-createarrayfromlist', + CreateDataProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-createdataproperty', + CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow', + CreateHTML: 'https://ecma-international.org/ecma-262/6.0/#sec-createhtml', + CreateIterResultObject: 'https://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject', + CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/6.0/#sec-createlistfromarraylike', + CreateListIterator: 'https://ecma-international.org/ecma-262/6.0/#sec-createlistiterator', + CreateMethodProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-createmethodproperty', + DateFromTime: 'https://ecma-international.org/ecma-262/6.0/#sec-date-number', + Day: 'https://ecma-international.org/ecma-262/6.0/#sec-day-number-and-time-within-day', + DayFromYear: 'https://ecma-international.org/ecma-262/6.0/#sec-year-number', + DaysInYear: 'https://ecma-international.org/ecma-262/6.0/#sec-year-number', + DayWithinYear: 'https://ecma-international.org/ecma-262/6.0/#sec-month-number', + DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/6.0/#sec-definepropertyorthrow', + DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/6.0/#sec-deletepropertyorthrow', + EnumerableOwnNames: 'https://ecma-international.org/ecma-262/6.0/#sec-enumerableownnames', + FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-frompropertydescriptor', + Get: 'https://ecma-international.org/ecma-262/6.0/#sec-get-o-p', + GetIterator: 'https://ecma-international.org/ecma-262/6.0/#sec-getiterator', + GetMethod: 'https://ecma-international.org/ecma-262/6.0/#sec-getmethod', + GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/6.0/#sec-getownpropertykeys', + GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/6.0/#sec-getprototypefromconstructor', + GetSubstitution: 'https://ecma-international.org/ecma-262/6.0/#sec-getsubstitution', + GetV: 'https://ecma-international.org/ecma-262/6.0/#sec-getv', + HasOwnProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-hasownproperty', + HasProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-hasproperty', + HourFromTime: 'https://ecma-international.org/ecma-262/6.0/#sec-hours-minutes-second-and-milliseconds', + InLeapYear: 'https://ecma-international.org/ecma-262/6.0/#sec-year-number', + InstanceofOperator: 'https://ecma-international.org/ecma-262/6.0/#sec-instanceofoperator', + Invoke: 'https://ecma-international.org/ecma-262/6.0/#sec-invoke', + IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-isaccessordescriptor', + IsArray: 'https://ecma-international.org/ecma-262/6.0/#sec-isarray', + IsCallable: 'https://ecma-international.org/ecma-262/6.0/#sec-iscallable', + IsConcatSpreadable: 'https://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable', + IsConstructor: 'https://ecma-international.org/ecma-262/6.0/#sec-isconstructor', + IsDataDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-isdatadescriptor', + IsExtensible: 'https://ecma-international.org/ecma-262/6.0/#sec-isextensible-o', + IsGenericDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-isgenericdescriptor', + IsInteger: 'https://ecma-international.org/ecma-262/6.0/#sec-isinteger', + IsPromise: 'https://ecma-international.org/ecma-262/6.0/#sec-ispromise', + IsPropertyKey: 'https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey', + IsRegExp: 'https://ecma-international.org/ecma-262/6.0/#sec-isregexp', + IteratorClose: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose', + IteratorComplete: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete', + IteratorNext: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratornext', + IteratorStep: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep', + IteratorValue: 'https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue', + MakeDate: 'https://ecma-international.org/ecma-262/6.0/#sec-makedate', + MakeDay: 'https://ecma-international.org/ecma-262/6.0/#sec-makeday', + MakeTime: 'https://ecma-international.org/ecma-262/6.0/#sec-maketime', + MinFromTime: 'https://ecma-international.org/ecma-262/6.0/#sec-hours-minutes-second-and-milliseconds', + modulo: 'https://ecma-international.org/ecma-262/6.0/#sec-algorithm-conventions', + MonthFromTime: 'https://ecma-international.org/ecma-262/6.0/#sec-month-number', + msFromTime: 'https://ecma-international.org/ecma-262/6.0/#sec-hours-minutes-second-and-milliseconds', + NormalCompletion: 'https://ecma-international.org/ecma-262/6.0/#sec-normalcompletion', + ObjectCreate: 'https://ecma-international.org/ecma-262/6.0/#sec-objectcreate', + OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-ordinarydefineownproperty', + OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-ordinarygetownproperty', + OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasinstance', + OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/6.0/#sec-ordinaryhasproperty', + RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/6.0/#sec-regexpbuiltinexec', + RegExpExec: 'https://ecma-international.org/ecma-262/6.0/#sec-regexpexec', + RequireObjectCoercible: 'https://ecma-international.org/ecma-262/6.0/#sec-requireobjectcoercible', + SameValue: 'https://ecma-international.org/ecma-262/6.0/#sec-samevalue', + SameValueZero: 'https://ecma-international.org/ecma-262/6.0/#sec-samevaluezero', + SecFromTime: 'https://ecma-international.org/ecma-262/6.0/#sec-hours-minutes-second-and-milliseconds', + Set: 'https://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw', + SetFunctionName: 'https://ecma-international.org/ecma-262/6.0/#sec-setfunctionname', + SetIntegrityLevel: 'https://ecma-international.org/ecma-262/6.0/#sec-setintegritylevel', + SpeciesConstructor: 'https://ecma-international.org/ecma-262/6.0/#sec-speciesconstructor', + SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/6.0/#sec-symboldescriptivestring', + TestIntegrityLevel: 'https://ecma-international.org/ecma-262/6.0/#sec-testintegritylevel', + thisBooleanValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-boolean-prototype-object', + thisNumberValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-number-prototype-object', + thisStringValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-string-prototype-object', + thisTimeValue: 'https://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-date-prototype-object', + TimeClip: 'https://ecma-international.org/ecma-262/6.0/#sec-timeclip', + TimeFromYear: 'https://ecma-international.org/ecma-262/6.0/#sec-year-number', + TimeWithinDay: 'https://ecma-international.org/ecma-262/6.0/#sec-day-number-and-time-within-day', + ToBoolean: 'https://ecma-international.org/ecma-262/6.0/#sec-toboolean', + ToDateString: 'https://ecma-international.org/ecma-262/6.0/#sec-todatestring', + ToInt16: 'https://ecma-international.org/ecma-262/6.0/#sec-toint16', + ToInt32: 'https://ecma-international.org/ecma-262/6.0/#sec-toint32', + ToInt8: 'https://ecma-international.org/ecma-262/6.0/#sec-toint8', + ToInteger: 'https://ecma-international.org/ecma-262/6.0/#sec-tointeger', + ToLength: 'https://ecma-international.org/ecma-262/6.0/#sec-tolength', + ToNumber: 'https://ecma-international.org/ecma-262/6.0/#sec-tonumber', + ToObject: 'https://ecma-international.org/ecma-262/6.0/#sec-toobject', + ToPrimitive: 'https://ecma-international.org/ecma-262/6.0/#sec-toprimitive', + ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-topropertydescriptor', + ToPropertyKey: 'https://ecma-international.org/ecma-262/6.0/#sec-topropertykey', + ToString: 'https://ecma-international.org/ecma-262/6.0/#sec-tostring', + ToUint16: 'https://ecma-international.org/ecma-262/6.0/#sec-touint16', + ToUint32: 'https://ecma-international.org/ecma-262/6.0/#sec-touint32', + ToUint8: 'https://ecma-international.org/ecma-262/6.0/#sec-touint8', + ToUint8Clamp: 'https://ecma-international.org/ecma-262/6.0/#sec-touint8clamp', + Type: 'https://ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types', + ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-validateandapplypropertydescriptor', + WeekDay: 'https://ecma-international.org/ecma-262/6.0/#sec-week-day', + YearFromTime: 'https://ecma-international.org/ecma-262/6.0/#sec-year-number' +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/operations/2016.js b/tic-tac-toe-app/node_modules/es-abstract/operations/2016.js new file mode 100644 index 0000000..6a58b9c --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/operations/2016.js @@ -0,0 +1,276 @@ +'use strict'; + +module.exports = { + IsPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op + + abs: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions', + 'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/7.0/#sec-abstract-equality-comparison', + 'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/7.0/#sec-abstract-relational-comparison', + AddRestrictedFunctionProperties: 'https://ecma-international.org/ecma-262/7.0/#sec-addrestrictedfunctionproperties', + AdvanceStringIndex: 'https://ecma-international.org/ecma-262/7.0/#sec-advancestringindex', + AllocateArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-allocatearraybuffer', + AllocateTypedArray: 'https://ecma-international.org/ecma-262/7.0/#sec-allocatetypedarray', + AllocateTypedArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-allocatetypedarraybuffer', + ArrayCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-arraycreate', + ArraySetLength: 'https://ecma-international.org/ecma-262/7.0/#sec-arraysetlength', + ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-arrayspeciescreate', + BlockDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-blockdeclarationinstantiation', + BoundFunctionCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-boundfunctioncreate', + Call: 'https://ecma-international.org/ecma-262/7.0/#sec-call', + Canonicalize: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-canonicalize-ch', + CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/7.0/#sec-canonicalnumericindexstring', + CharacterRange: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-characterrange-abstract-operation', + CharacterRangeOrUnion: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation', + CharacterSetMatcher: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation', + CloneArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-clonearraybuffer', + CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-completepropertydescriptor', + Completion: 'https://ecma-international.org/ecma-262/7.0/#sec-completion-record-specification-type', + Construct: 'https://ecma-international.org/ecma-262/7.0/#sec-construct', + CopyDataBlockBytes: 'https://ecma-international.org/ecma-262/7.0/#sec-copydatablockbytes', + CreateArrayFromList: 'https://ecma-international.org/ecma-262/7.0/#sec-createarrayfromlist', + CreateArrayIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createarrayiterator', + CreateBuiltinFunction: 'https://ecma-international.org/ecma-262/7.0/#sec-createbuiltinfunction', + CreateByteDataBlock: 'https://ecma-international.org/ecma-262/7.0/#sec-createbytedatablock', + CreateDataProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-createdataproperty', + CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/7.0/#sec-createdatapropertyorthrow', + CreateDynamicFunction: 'https://ecma-international.org/ecma-262/7.0/#sec-createdynamicfunction', + CreateHTML: 'https://ecma-international.org/ecma-262/7.0/#sec-createhtml', + CreateIntrinsics: 'https://ecma-international.org/ecma-262/7.0/#sec-createintrinsics', + CreateIterResultObject: 'https://ecma-international.org/ecma-262/7.0/#sec-createiterresultobject', + CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/7.0/#sec-createlistfromarraylike', + CreateListIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createlistiterator', + CreateMapIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createmapiterator', + CreateMappedArgumentsObject: 'https://ecma-international.org/ecma-262/7.0/#sec-createmappedargumentsobject', + CreateMethodProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-createmethodproperty', + CreatePerIterationEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-createperiterationenvironment', + CreateRealm: 'https://ecma-international.org/ecma-262/7.0/#sec-createrealm', + CreateResolvingFunctions: 'https://ecma-international.org/ecma-262/7.0/#sec-createresolvingfunctions', + CreateSetIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createsetiterator', + CreateStringIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-createstringiterator', + CreateUnmappedArgumentsObject: 'https://ecma-international.org/ecma-262/7.0/#sec-createunmappedargumentsobject', + DateFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-date-number', + Day: 'https://ecma-international.org/ecma-262/7.0/#sec-day-number-and-time-within-day', + DayFromYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number', + DaysInYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number', + DayWithinYear: 'https://ecma-international.org/ecma-262/7.0/#sec-month-number', + Decode: 'https://ecma-international.org/ecma-262/7.0/#sec-decode', + DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/7.0/#sec-definepropertyorthrow', + DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/7.0/#sec-deletepropertyorthrow', + DetachArrayBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-detacharraybuffer', + Encode: 'https://ecma-international.org/ecma-262/7.0/#sec-encode', + EnqueueJob: 'https://ecma-international.org/ecma-262/7.0/#sec-enqueuejob', + EnumerableOwnNames: 'https://ecma-international.org/ecma-262/7.0/#sec-enumerableownnames', + EnumerateObjectProperties: 'https://ecma-international.org/ecma-262/7.0/#sec-enumerate-object-properties', + EscapeRegExpPattern: 'https://ecma-international.org/ecma-262/7.0/#sec-escaperegexppattern', + EvalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-evaldeclarationinstantiation', + EvaluateCall: 'https://ecma-international.org/ecma-262/7.0/#sec-evaluatecall', + EvaluateDirectCall: 'https://ecma-international.org/ecma-262/7.0/#sec-evaluatedirectcall', + EvaluateNew: 'https://ecma-international.org/ecma-262/7.0/#sec-evaluatenew', + floor: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions', + ForBodyEvaluation: 'https://ecma-international.org/ecma-262/7.0/#sec-forbodyevaluation', + 'ForIn/OfBodyEvaluation': 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset', + 'ForIn/OfHeadEvaluation': 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind', + FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-frompropertydescriptor', + FulfillPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-fulfillpromise', + FunctionAllocate: 'https://ecma-international.org/ecma-262/7.0/#sec-functionallocate', + FunctionCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-functioncreate', + FunctionDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-functiondeclarationinstantiation', + FunctionInitialize: 'https://ecma-international.org/ecma-262/7.0/#sec-functioninitialize', + GeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorfunctioncreate', + GeneratorResume: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorresume', + GeneratorResumeAbrupt: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorresumeabrupt', + GeneratorStart: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorstart', + GeneratorValidate: 'https://ecma-international.org/ecma-262/7.0/#sec-generatorvalidate', + GeneratorYield: 'https://ecma-international.org/ecma-262/7.0/#sec-generatoryield', + Get: 'https://ecma-international.org/ecma-262/7.0/#sec-get-o-p', + GetActiveScriptOrModule: 'https://ecma-international.org/ecma-262/7.0/#sec-getactivescriptormodule', + GetFunctionRealm: 'https://ecma-international.org/ecma-262/7.0/#sec-getfunctionrealm', + GetGlobalObject: 'https://ecma-international.org/ecma-262/7.0/#sec-getglobalobject', + GetIdentifierReference: 'https://ecma-international.org/ecma-262/7.0/#sec-getidentifierreference', + GetIterator: 'https://ecma-international.org/ecma-262/7.0/#sec-getiterator', + GetMethod: 'https://ecma-international.org/ecma-262/7.0/#sec-getmethod', + GetModuleNamespace: 'https://ecma-international.org/ecma-262/7.0/#sec-getmodulenamespace', + GetNewTarget: 'https://ecma-international.org/ecma-262/7.0/#sec-getnewtarget', + GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/7.0/#sec-getownpropertykeys', + GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-getprototypefromconstructor', + GetSubstitution: 'https://ecma-international.org/ecma-262/7.0/#sec-getsubstitution', + GetSuperConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-getsuperconstructor', + GetTemplateObject: 'https://ecma-international.org/ecma-262/7.0/#sec-gettemplateobject', + GetThisEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-getthisenvironment', + GetThisValue: 'https://ecma-international.org/ecma-262/7.0/#sec-getthisvalue', + GetV: 'https://ecma-international.org/ecma-262/7.0/#sec-getv', + GetValue: 'https://ecma-international.org/ecma-262/7.0/#sec-getvalue', + GetValueFromBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-getvaluefrombuffer', + GetViewValue: 'https://ecma-international.org/ecma-262/7.0/#sec-getviewvalue', + GlobalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/7.0/#sec-globaldeclarationinstantiation', + HasOwnProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-hasownproperty', + HasProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-hasproperty', + HostPromiseRejectionTracker: 'https://ecma-international.org/ecma-262/7.0/#sec-host-promise-rejection-tracker', + HostReportErrors: 'https://ecma-international.org/ecma-262/7.0/#sec-host-report-errors', + HostResolveImportedModule: 'https://ecma-international.org/ecma-262/7.0/#sec-hostresolveimportedmodule', + HourFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds', + IfAbruptRejectPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-ifabruptrejectpromise', + ImportedLocalNames: 'https://ecma-international.org/ecma-262/7.0/#sec-importedlocalnames', + InitializeBoundName: 'https://ecma-international.org/ecma-262/7.0/#sec-initializeboundname', + InitializeHostDefinedRealm: 'https://ecma-international.org/ecma-262/7.0/#sec-initializehostdefinedrealm', + InitializeReferencedBinding: 'https://ecma-international.org/ecma-262/7.0/#sec-initializereferencedbinding', + InLeapYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number', + InstanceofOperator: 'https://ecma-international.org/ecma-262/7.0/#sec-instanceofoperator', + IntegerIndexedElementGet: 'https://ecma-international.org/ecma-262/7.0/#sec-integerindexedelementget', + IntegerIndexedElementSet: 'https://ecma-international.org/ecma-262/7.0/#sec-integerindexedelementset', + IntegerIndexedObjectCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-integerindexedobjectcreate', + InternalizeJSONProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-internalizejsonproperty', + Invoke: 'https://ecma-international.org/ecma-262/7.0/#sec-invoke', + IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-isaccessordescriptor', + IsAnonymousFunctionDefinition: 'https://ecma-international.org/ecma-262/7.0/#sec-isanonymousfunctiondefinition', + IsArray: 'https://ecma-international.org/ecma-262/7.0/#sec-isarray', + IsCallable: 'https://ecma-international.org/ecma-262/7.0/#sec-iscallable', + IsCompatiblePropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-iscompatiblepropertydescriptor', + IsConcatSpreadable: 'https://ecma-international.org/ecma-262/7.0/#sec-isconcatspreadable', + IsConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-isconstructor', + IsDataDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-isdatadescriptor', + IsDetachedBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-isdetachedbuffer', + IsExtensible: 'https://ecma-international.org/ecma-262/7.0/#sec-isextensible-o', + IsGenericDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-isgenericdescriptor', + IsInTailPosition: 'https://ecma-international.org/ecma-262/7.0/#sec-isintailposition', + IsInteger: 'https://ecma-international.org/ecma-262/7.0/#sec-isinteger', + IsLabelledFunction: 'https://ecma-international.org/ecma-262/7.0/#sec-islabelledfunction', + IsPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-ispromise', + IsPropertyKey: 'https://ecma-international.org/ecma-262/7.0/#sec-ispropertykey', + IsRegExp: 'https://ecma-international.org/ecma-262/7.0/#sec-isregexp', + IsWordChar: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-iswordchar-abstract-operation', + IterableToArrayLike: 'https://ecma-international.org/ecma-262/7.0/#sec-iterabletoarraylike', + IteratorClose: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorclose', + IteratorComplete: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorcomplete', + IteratorNext: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratornext', + IteratorStep: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorstep', + IteratorValue: 'https://ecma-international.org/ecma-262/7.0/#sec-iteratorvalue', + LocalTime: 'https://ecma-international.org/ecma-262/7.0/#sec-localtime', + LoopContinues: 'https://ecma-international.org/ecma-262/7.0/#sec-loopcontinues', + MakeArgGetter: 'https://ecma-international.org/ecma-262/7.0/#sec-makearggetter', + MakeArgSetter: 'https://ecma-international.org/ecma-262/7.0/#sec-makeargsetter', + MakeClassConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-makeclassconstructor', + MakeConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-makeconstructor', + MakeDate: 'https://ecma-international.org/ecma-262/7.0/#sec-makedate', + MakeDay: 'https://ecma-international.org/ecma-262/7.0/#sec-makeday', + MakeMethod: 'https://ecma-international.org/ecma-262/7.0/#sec-makemethod', + MakeSuperPropertyReference: 'https://ecma-international.org/ecma-262/7.0/#sec-makesuperpropertyreference', + MakeTime: 'https://ecma-international.org/ecma-262/7.0/#sec-maketime', + max: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions', + min: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions', + MinFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds', + ModuleNamespaceCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-modulenamespacecreate', + modulo: 'https://ecma-international.org/ecma-262/7.0/#sec-algorithm-conventions', + MonthFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-month-number', + msFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds', + NewDeclarativeEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newdeclarativeenvironment', + NewFunctionEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newfunctionenvironment', + NewGlobalEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newglobalenvironment', + NewModuleEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newmoduleenvironment', + NewObjectEnvironment: 'https://ecma-international.org/ecma-262/7.0/#sec-newobjectenvironment', + NewPromiseCapability: 'https://ecma-international.org/ecma-262/7.0/#sec-newpromisecapability', + NextJob: 'https://ecma-international.org/ecma-262/7.0/#sec-nextjob-result', + NormalCompletion: 'https://ecma-international.org/ecma-262/7.0/#sec-normalcompletion', + ObjectCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-objectcreate', + ObjectDefineProperties: 'https://ecma-international.org/ecma-262/7.0/#sec-objectdefineproperties', + OrdinaryCallBindThis: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarycallbindthis', + OrdinaryCallEvaluateBody: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarycallevaluatebody', + OrdinaryCreateFromConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarycreatefromconstructor', + OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarydefineownproperty', + OrdinaryDelete: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarydelete', + OrdinaryGet: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryget', + OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetownproperty', + OrdinaryGetPrototypeOf: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarygetprototypeof', + OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryhasinstance', + OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryhasproperty', + OrdinaryIsExtensible: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryisextensible', + OrdinaryOwnPropertyKeys: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryownpropertykeys', + OrdinaryPreventExtensions: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarypreventextensions', + OrdinarySet: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinaryset', + OrdinarySetPrototypeOf: 'https://ecma-international.org/ecma-262/7.0/#sec-ordinarysetprototypeof', + ParseModule: 'https://ecma-international.org/ecma-262/7.0/#sec-parsemodule', + ParseScript: 'https://ecma-international.org/ecma-262/7.0/#sec-parse-script', + PerformEval: 'https://ecma-international.org/ecma-262/7.0/#sec-performeval', + PerformPromiseAll: 'https://ecma-international.org/ecma-262/7.0/#sec-performpromiseall', + PerformPromiseRace: 'https://ecma-international.org/ecma-262/7.0/#sec-performpromiserace', + PerformPromiseThen: 'https://ecma-international.org/ecma-262/7.0/#sec-performpromisethen', + PrepareForOrdinaryCall: 'https://ecma-international.org/ecma-262/7.0/#sec-prepareforordinarycall', + PrepareForTailCall: 'https://ecma-international.org/ecma-262/7.0/#sec-preparefortailcall', + PromiseReactionJob: 'https://ecma-international.org/ecma-262/7.0/#sec-promisereactionjob', + PromiseResolveThenableJob: 'https://ecma-international.org/ecma-262/7.0/#sec-promiseresolvethenablejob', + ProxyCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-proxycreate', + PutValue: 'https://ecma-international.org/ecma-262/7.0/#sec-putvalue', + QuoteJSONString: 'https://ecma-international.org/ecma-262/7.0/#sec-quotejsonstring', + RegExpAlloc: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpalloc', + RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpbuiltinexec', + RegExpCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpcreate', + RegExpExec: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpexec', + RegExpInitialize: 'https://ecma-international.org/ecma-262/7.0/#sec-regexpinitialize', + RejectPromise: 'https://ecma-international.org/ecma-262/7.0/#sec-rejectpromise', + RepeatMatcher: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-repeatmatcher-abstract-operation', + RequireObjectCoercible: 'https://ecma-international.org/ecma-262/7.0/#sec-requireobjectcoercible', + ResolveBinding: 'https://ecma-international.org/ecma-262/7.0/#sec-resolvebinding', + ResolveThisBinding: 'https://ecma-international.org/ecma-262/7.0/#sec-resolvethisbinding', + ReturnIfAbrupt: 'https://ecma-international.org/ecma-262/7.0/#sec-returnifabrupt', + SameValue: 'https://ecma-international.org/ecma-262/7.0/#sec-samevalue', + SameValueNonNumber: 'https://ecma-international.org/ecma-262/7.0/#sec-samevaluenonnumber', + SameValueZero: 'https://ecma-international.org/ecma-262/7.0/#sec-samevaluezero', + ScriptEvaluation: 'https://ecma-international.org/ecma-262/7.0/#sec-runtime-semantics-scriptevaluation', + ScriptEvaluationJob: 'https://ecma-international.org/ecma-262/7.0/#sec-scriptevaluationjob', + SecFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-hours-minutes-second-and-milliseconds', + SerializeJSONArray: 'https://ecma-international.org/ecma-262/7.0/#sec-serializejsonarray', + SerializeJSONObject: 'https://ecma-international.org/ecma-262/7.0/#sec-serializejsonobject', + SerializeJSONProperty: 'https://ecma-international.org/ecma-262/7.0/#sec-serializejsonproperty', + Set: 'https://ecma-international.org/ecma-262/7.0/#sec-set-o-p-v-throw', + SetDefaultGlobalBindings: 'https://ecma-international.org/ecma-262/7.0/#sec-setdefaultglobalbindings', + SetFunctionName: 'https://ecma-international.org/ecma-262/7.0/#sec-setfunctionname', + SetIntegrityLevel: 'https://ecma-international.org/ecma-262/7.0/#sec-setintegritylevel', + SetRealmGlobalObject: 'https://ecma-international.org/ecma-262/7.0/#sec-setrealmglobalobject', + SetValueInBuffer: 'https://ecma-international.org/ecma-262/7.0/#sec-setvalueinbuffer', + SetViewValue: 'https://ecma-international.org/ecma-262/7.0/#sec-setviewvalue', + SortCompare: 'https://ecma-international.org/ecma-262/7.0/#sec-sortcompare', + SpeciesConstructor: 'https://ecma-international.org/ecma-262/7.0/#sec-speciesconstructor', + SplitMatch: 'https://ecma-international.org/ecma-262/7.0/#sec-splitmatch', + 'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/7.0/#sec-strict-equality-comparison', + StringCreate: 'https://ecma-international.org/ecma-262/7.0/#sec-stringcreate', + SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/7.0/#sec-symboldescriptivestring', + TestIntegrityLevel: 'https://ecma-international.org/ecma-262/7.0/#sec-testintegritylevel', + thisBooleanValue: 'https://ecma-international.org/ecma-262/7.0/#sec-thisbooleanvalue', + thisNumberValue: 'https://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-number-prototype-object', + thisStringValue: 'https://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-string-prototype-object', + thisTimeValue: 'https://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-date-prototype-object', + TimeClip: 'https://ecma-international.org/ecma-262/7.0/#sec-timeclip', + TimeFromYear: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number', + TimeWithinDay: 'https://ecma-international.org/ecma-262/7.0/#sec-day-number-and-time-within-day', + ToBoolean: 'https://ecma-international.org/ecma-262/7.0/#sec-toboolean', + ToDateString: 'https://ecma-international.org/ecma-262/7.0/#sec-todatestring', + ToInt16: 'https://ecma-international.org/ecma-262/7.0/#sec-toint16', + ToInt32: 'https://ecma-international.org/ecma-262/7.0/#sec-toint32', + ToInt8: 'https://ecma-international.org/ecma-262/7.0/#sec-toint8', + ToInteger: 'https://ecma-international.org/ecma-262/7.0/#sec-tointeger', + ToLength: 'https://ecma-international.org/ecma-262/7.0/#sec-tolength', + ToNumber: 'https://ecma-international.org/ecma-262/7.0/#sec-tonumber', + ToObject: 'https://ecma-international.org/ecma-262/7.0/#sec-toobject', + TopLevelModuleEvaluationJob: 'https://ecma-international.org/ecma-262/7.0/#sec-toplevelmoduleevaluationjob', + ToPrimitive: 'https://ecma-international.org/ecma-262/7.0/#sec-toprimitive', + ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-topropertydescriptor', + ToPropertyKey: 'https://ecma-international.org/ecma-262/7.0/#sec-topropertykey', + ToString: 'https://ecma-international.org/ecma-262/7.0/#sec-tostring', + 'ToString Applied to the Number Type': 'https://ecma-international.org/ecma-262/7.0/#sec-tostring-applied-to-the-number-type', + ToUint16: 'https://ecma-international.org/ecma-262/7.0/#sec-touint16', + ToUint32: 'https://ecma-international.org/ecma-262/7.0/#sec-touint32', + ToUint8: 'https://ecma-international.org/ecma-262/7.0/#sec-touint8', + ToUint8Clamp: 'https://ecma-international.org/ecma-262/7.0/#sec-touint8clamp', + TriggerPromiseReactions: 'https://ecma-international.org/ecma-262/7.0/#sec-triggerpromisereactions', + Type: 'https://ecma-international.org/ecma-262/7.0/#sec-ecmascript-data-types-and-values', + TypedArrayCreate: 'https://ecma-international.org/ecma-262/7.0/#typedarray-create', + TypedArraySpeciesCreate: 'https://ecma-international.org/ecma-262/7.0/#typedarray-species-create', + UpdateEmpty: 'https://ecma-international.org/ecma-262/7.0/#sec-updateempty', + UTC: 'https://ecma-international.org/ecma-262/7.0/#sec-utc-t', + UTF16Decode: 'https://ecma-international.org/ecma-262/7.0/#sec-utf16decode', + UTF16Encoding: 'https://ecma-international.org/ecma-262/7.0/#sec-utf16encoding', + ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/7.0/#sec-validateandapplypropertydescriptor', + ValidateTypedArray: 'https://ecma-international.org/ecma-262/7.0/#sec-validatetypedarray', + WeekDay: 'https://ecma-international.org/ecma-262/7.0/#sec-week-day', + YearFromTime: 'https://ecma-international.org/ecma-262/7.0/#sec-year-number' +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/operations/2017.js b/tic-tac-toe-app/node_modules/es-abstract/operations/2017.js new file mode 100644 index 0000000..896fcee --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/operations/2017.js @@ -0,0 +1,324 @@ +'use strict'; + +module.exports = { + IsPropertyDescriptor: 'https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type', // not actually an abstract op + + abs: 'https://ecma-international.org/ecma-262/8.0/#eqn-abs', + 'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/8.0/#sec-abstract-equality-comparison', + 'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/8.0/#sec-abstract-relational-comparison', + AddRestrictedFunctionProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-addrestrictedfunctionproperties', + AddWaiter: 'https://ecma-international.org/ecma-262/8.0/#sec-addwaiter', + AdvanceStringIndex: 'https://ecma-international.org/ecma-262/8.0/#sec-advancestringindex', + 'agent-order': 'https://ecma-international.org/ecma-262/8.0/#sec-agent-order', + AgentCanSuspend: 'https://ecma-international.org/ecma-262/8.0/#sec-agentcansuspend', + AgentSignifier: 'https://ecma-international.org/ecma-262/8.0/#sec-agentsignifier', + AllocateArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatearraybuffer', + AllocateSharedArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatesharedarraybuffer', + AllocateTypedArray: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatetypedarray', + AllocateTypedArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-allocatetypedarraybuffer', + ArrayCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-arraycreate', + ArraySetLength: 'https://ecma-international.org/ecma-262/8.0/#sec-arraysetlength', + ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-arrayspeciescreate', + AsyncFunctionAwait: 'https://ecma-international.org/ecma-262/8.0/#sec-async-functions-abstract-operations-async-function-await', + AsyncFunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-async-functions-abstract-operations-async-function-create', + AsyncFunctionStart: 'https://ecma-international.org/ecma-262/8.0/#sec-async-functions-abstract-operations-async-function-start', + AtomicLoad: 'https://ecma-international.org/ecma-262/8.0/#sec-atomicload', + AtomicReadModifyWrite: 'https://ecma-international.org/ecma-262/8.0/#sec-atomicreadmodifywrite', + BlockDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-blockdeclarationinstantiation', + BoundFunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-boundfunctioncreate', + Call: 'https://ecma-international.org/ecma-262/8.0/#sec-call', + Canonicalize: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-canonicalize-ch', + CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/8.0/#sec-canonicalnumericindexstring', + CharacterRange: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-characterrange-abstract-operation', + CharacterRangeOrUnion: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation', + CharacterSetMatcher: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation', + CloneArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-clonearraybuffer', + CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-completepropertydescriptor', + Completion: 'https://ecma-international.org/ecma-262/8.0/#sec-completion-record-specification-type', + ComposeWriteEventBytes: 'https://ecma-international.org/ecma-262/8.0/#sec-composewriteeventbytes', + Construct: 'https://ecma-international.org/ecma-262/8.0/#sec-construct', + CopyDataBlockBytes: 'https://ecma-international.org/ecma-262/8.0/#sec-copydatablockbytes', + CreateArrayFromList: 'https://ecma-international.org/ecma-262/8.0/#sec-createarrayfromlist', + CreateArrayIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createarrayiterator', + CreateBuiltinFunction: 'https://ecma-international.org/ecma-262/8.0/#sec-createbuiltinfunction', + CreateByteDataBlock: 'https://ecma-international.org/ecma-262/8.0/#sec-createbytedatablock', + CreateDataProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-createdataproperty', + CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/8.0/#sec-createdatapropertyorthrow', + CreateDynamicFunction: 'https://ecma-international.org/ecma-262/8.0/#sec-createdynamicfunction', + CreateHTML: 'https://ecma-international.org/ecma-262/8.0/#sec-createhtml', + CreateIntrinsics: 'https://ecma-international.org/ecma-262/8.0/#sec-createintrinsics', + CreateIterResultObject: 'https://ecma-international.org/ecma-262/8.0/#sec-createiterresultobject', + CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/8.0/#sec-createlistfromarraylike', + CreateListIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createlistiterator', + CreateMapIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createmapiterator', + CreateMappedArgumentsObject: 'https://ecma-international.org/ecma-262/8.0/#sec-createmappedargumentsobject', + CreateMethodProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-createmethodproperty', + CreatePerIterationEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-createperiterationenvironment', + CreateRealm: 'https://ecma-international.org/ecma-262/8.0/#sec-createrealm', + CreateResolvingFunctions: 'https://ecma-international.org/ecma-262/8.0/#sec-createresolvingfunctions', + CreateSetIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createsetiterator', + CreateSharedByteDataBlock: 'https://ecma-international.org/ecma-262/8.0/#sec-createsharedbytedatablock', + CreateStringIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-createstringiterator', + CreateUnmappedArgumentsObject: 'https://ecma-international.org/ecma-262/8.0/#sec-createunmappedargumentsobject', + DateFromTime: 'https://ecma-international.org/ecma-262/8.0/#sec-date-number', + Day: 'https://ecma-international.org/ecma-262/8.0/#eqn-Day', + DayFromYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-DaysFromYear', + DaysInYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-DaysInYear', + DayWithinYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-DayWithinYear', + Decode: 'https://ecma-international.org/ecma-262/8.0/#sec-decode', + DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/8.0/#sec-definepropertyorthrow', + DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/8.0/#sec-deletepropertyorthrow', + DetachArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-detacharraybuffer', + Encode: 'https://ecma-international.org/ecma-262/8.0/#sec-encode', + EnqueueJob: 'https://ecma-international.org/ecma-262/8.0/#sec-enqueuejob', + EnterCriticalSection: 'https://ecma-international.org/ecma-262/8.0/#sec-entercriticalsection', + EnumerableOwnProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-enumerableownproperties', + EnumerateObjectProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-enumerate-object-properties', + EscapeRegExpPattern: 'https://ecma-international.org/ecma-262/8.0/#sec-escaperegexppattern', + EvalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-evaldeclarationinstantiation', + EvaluateCall: 'https://ecma-international.org/ecma-262/8.0/#sec-evaluatecall', + EvaluateDirectCall: 'https://ecma-international.org/ecma-262/8.0/#sec-evaluatedirectcall', + EvaluateNew: 'https://ecma-international.org/ecma-262/8.0/#sec-evaluatenew', + EventSet: 'https://ecma-international.org/ecma-262/8.0/#sec-event-set', + floor: 'https://ecma-international.org/ecma-262/8.0/#eqn-floor', + ForBodyEvaluation: 'https://ecma-international.org/ecma-262/8.0/#sec-forbodyevaluation', + 'ForIn/OfBodyEvaluation': 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset', + 'ForIn/OfHeadEvaluation': 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind', + FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-frompropertydescriptor', + FulfillPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-fulfillpromise', + FunctionAllocate: 'https://ecma-international.org/ecma-262/8.0/#sec-functionallocate', + FunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-functioncreate', + FunctionDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-functiondeclarationinstantiation', + FunctionInitialize: 'https://ecma-international.org/ecma-262/8.0/#sec-functioninitialize', + GeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorfunctioncreate', + GeneratorResume: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorresume', + GeneratorResumeAbrupt: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorresumeabrupt', + GeneratorStart: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorstart', + GeneratorValidate: 'https://ecma-international.org/ecma-262/8.0/#sec-generatorvalidate', + GeneratorYield: 'https://ecma-international.org/ecma-262/8.0/#sec-generatoryield', + Get: 'https://ecma-international.org/ecma-262/8.0/#sec-get-o-p', + GetActiveScriptOrModule: 'https://ecma-international.org/ecma-262/8.0/#sec-getactivescriptormodule', + GetBase: 'https://ecma-international.org/ecma-262/8.0/#ao-getbase', + GetFunctionRealm: 'https://ecma-international.org/ecma-262/8.0/#sec-getfunctionrealm', + GetGlobalObject: 'https://ecma-international.org/ecma-262/8.0/#sec-getglobalobject', + GetIdentifierReference: 'https://ecma-international.org/ecma-262/8.0/#sec-getidentifierreference', + GetIterator: 'https://ecma-international.org/ecma-262/8.0/#sec-getiterator', + GetMethod: 'https://ecma-international.org/ecma-262/8.0/#sec-getmethod', + GetModifySetValueInBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-getmodifysetvalueinbuffer', + GetModuleNamespace: 'https://ecma-international.org/ecma-262/8.0/#sec-getmodulenamespace', + GetNewTarget: 'https://ecma-international.org/ecma-262/8.0/#sec-getnewtarget', + GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/8.0/#sec-getownpropertykeys', + GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-getprototypefromconstructor', + GetReferencedName: 'https://ecma-international.org/ecma-262/8.0/#ao-getreferencedname', + GetSubstitution: 'https://ecma-international.org/ecma-262/8.0/#sec-getsubstitution', + GetSuperConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-getsuperconstructor', + GetTemplateObject: 'https://ecma-international.org/ecma-262/8.0/#sec-gettemplateobject', + GetThisEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-getthisenvironment', + GetThisValue: 'https://ecma-international.org/ecma-262/8.0/#sec-getthisvalue', + GetV: 'https://ecma-international.org/ecma-262/8.0/#sec-getv', + GetValue: 'https://ecma-international.org/ecma-262/8.0/#sec-getvalue', + GetValueFromBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-getvaluefrombuffer', + GetViewValue: 'https://ecma-international.org/ecma-262/8.0/#sec-getviewvalue', + GetWaiterList: 'https://ecma-international.org/ecma-262/8.0/#sec-getwaiterlist', + GlobalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/8.0/#sec-globaldeclarationinstantiation', + 'happens-before': 'https://ecma-international.org/ecma-262/8.0/#sec-happens-before', + HasOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-hasownproperty', + HasPrimitiveBase: 'https://ecma-international.org/ecma-262/8.0/#ao-hasprimitivebase', + HasProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-hasproperty', + 'host-synchronizes-with': 'https://ecma-international.org/ecma-262/8.0/#sec-host-synchronizes-with', + HostEnsureCanCompileStrings: 'https://ecma-international.org/ecma-262/8.0/#sec-hostensurecancompilestrings', + HostEventSet: 'https://ecma-international.org/ecma-262/8.0/#sec-hosteventset', + HostPromiseRejectionTracker: 'https://ecma-international.org/ecma-262/8.0/#sec-host-promise-rejection-tracker', + HostReportErrors: 'https://ecma-international.org/ecma-262/8.0/#sec-host-report-errors', + HostResolveImportedModule: 'https://ecma-international.org/ecma-262/8.0/#sec-hostresolveimportedmodule', + HourFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-HourFromTime', + IfAbruptRejectPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-ifabruptrejectpromise', + ImportedLocalNames: 'https://ecma-international.org/ecma-262/8.0/#sec-importedlocalnames', + InitializeBoundName: 'https://ecma-international.org/ecma-262/8.0/#sec-initializeboundname', + InitializeHostDefinedRealm: 'https://ecma-international.org/ecma-262/8.0/#sec-initializehostdefinedrealm', + InitializeReferencedBinding: 'https://ecma-international.org/ecma-262/8.0/#sec-initializereferencedbinding', + InLeapYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-InLeapYear', + InstanceofOperator: 'https://ecma-international.org/ecma-262/8.0/#sec-instanceofoperator', + IntegerIndexedElementGet: 'https://ecma-international.org/ecma-262/8.0/#sec-integerindexedelementget', + IntegerIndexedElementSet: 'https://ecma-international.org/ecma-262/8.0/#sec-integerindexedelementset', + IntegerIndexedObjectCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-integerindexedobjectcreate', + InternalizeJSONProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-internalizejsonproperty', + Invoke: 'https://ecma-international.org/ecma-262/8.0/#sec-invoke', + IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-isaccessordescriptor', + IsAnonymousFunctionDefinition: 'https://ecma-international.org/ecma-262/8.0/#sec-isanonymousfunctiondefinition', + IsArray: 'https://ecma-international.org/ecma-262/8.0/#sec-isarray', + IsCallable: 'https://ecma-international.org/ecma-262/8.0/#sec-iscallable', + IsCompatiblePropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-iscompatiblepropertydescriptor', + IsConcatSpreadable: 'https://ecma-international.org/ecma-262/8.0/#sec-isconcatspreadable', + IsConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-isconstructor', + IsDataDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-isdatadescriptor', + IsDetachedBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-isdetachedbuffer', + IsExtensible: 'https://ecma-international.org/ecma-262/8.0/#sec-isextensible-o', + IsGenericDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-isgenericdescriptor', + IsInTailPosition: 'https://ecma-international.org/ecma-262/8.0/#sec-isintailposition', + IsInteger: 'https://ecma-international.org/ecma-262/8.0/#sec-isinteger', + IsLabelledFunction: 'https://ecma-international.org/ecma-262/8.0/#sec-islabelledfunction', + IsPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-ispromise', + IsPropertyKey: 'https://ecma-international.org/ecma-262/8.0/#sec-ispropertykey', + IsPropertyReference: 'https://ecma-international.org/ecma-262/8.0/#ao-ispropertyreference', + IsRegExp: 'https://ecma-international.org/ecma-262/8.0/#sec-isregexp', + IsSharedArrayBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-issharedarraybuffer', + IsStrictReference: 'https://ecma-international.org/ecma-262/8.0/#ao-isstrictreference', + IsSuperReference: 'https://ecma-international.org/ecma-262/8.0/#ao-issuperreference', + IsUnresolvableReference: 'https://ecma-international.org/ecma-262/8.0/#ao-isunresolvablereference', + IsWordChar: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-iswordchar-abstract-operation', + IterableToList: 'https://ecma-international.org/ecma-262/8.0/#sec-iterabletolist', + IteratorClose: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorclose', + IteratorComplete: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorcomplete', + IteratorNext: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratornext', + IteratorStep: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorstep', + IteratorValue: 'https://ecma-international.org/ecma-262/8.0/#sec-iteratorvalue', + LeaveCriticalSection: 'https://ecma-international.org/ecma-262/8.0/#sec-leavecriticalsection', + LocalTime: 'https://ecma-international.org/ecma-262/8.0/#sec-localtime', + LoopContinues: 'https://ecma-international.org/ecma-262/8.0/#sec-loopcontinues', + MakeArgGetter: 'https://ecma-international.org/ecma-262/8.0/#sec-makearggetter', + MakeArgSetter: 'https://ecma-international.org/ecma-262/8.0/#sec-makeargsetter', + MakeClassConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-makeclassconstructor', + MakeConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-makeconstructor', + MakeDate: 'https://ecma-international.org/ecma-262/8.0/#sec-makedate', + MakeDay: 'https://ecma-international.org/ecma-262/8.0/#sec-makeday', + MakeMethod: 'https://ecma-international.org/ecma-262/8.0/#sec-makemethod', + MakeSuperPropertyReference: 'https://ecma-international.org/ecma-262/8.0/#sec-makesuperpropertyreference', + MakeTime: 'https://ecma-international.org/ecma-262/8.0/#sec-maketime', + max: 'https://ecma-international.org/ecma-262/8.0/#eqn-max', + 'memory-order': 'https://ecma-international.org/ecma-262/8.0/#sec-memory-order', + min: 'https://ecma-international.org/ecma-262/8.0/#eqn-min', + MinFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-MinFromTime', + ModuleNamespaceCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-modulenamespacecreate', + modulo: 'https://ecma-international.org/ecma-262/8.0/#eqn-modulo', + MonthFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-MonthFromTime', + msFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-msFromTime', + NewDeclarativeEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newdeclarativeenvironment', + NewFunctionEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newfunctionenvironment', + NewGlobalEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newglobalenvironment', + NewModuleEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newmoduleenvironment', + NewObjectEnvironment: 'https://ecma-international.org/ecma-262/8.0/#sec-newobjectenvironment', + NewPromiseCapability: 'https://ecma-international.org/ecma-262/8.0/#sec-newpromisecapability', + NormalCompletion: 'https://ecma-international.org/ecma-262/8.0/#sec-normalcompletion', + NumberToRawBytes: 'https://ecma-international.org/ecma-262/8.0/#sec-numbertorawbytes', + ObjectCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-objectcreate', + ObjectDefineProperties: 'https://ecma-international.org/ecma-262/8.0/#sec-objectdefineproperties', + OrdinaryCallBindThis: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarycallbindthis', + OrdinaryCallEvaluateBody: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarycallevaluatebody', + OrdinaryCreateFromConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarycreatefromconstructor', + OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarydefineownproperty', + OrdinaryDelete: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarydelete', + OrdinaryGet: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryget', + OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarygetownproperty', + OrdinaryGetPrototypeOf: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarygetprototypeof', + OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryhasinstance', + OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryhasproperty', + OrdinaryIsExtensible: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryisextensible', + OrdinaryOwnPropertyKeys: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryownpropertykeys', + OrdinaryPreventExtensions: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarypreventextensions', + OrdinarySet: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinaryset', + OrdinarySetPrototypeOf: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarysetprototypeof', + OrdinaryToPrimitive: 'https://ecma-international.org/ecma-262/8.0/#sec-ordinarytoprimitive', + ParseModule: 'https://ecma-international.org/ecma-262/8.0/#sec-parsemodule', + ParseScript: 'https://ecma-international.org/ecma-262/8.0/#sec-parse-script', + PerformEval: 'https://ecma-international.org/ecma-262/8.0/#sec-performeval', + PerformPromiseAll: 'https://ecma-international.org/ecma-262/8.0/#sec-performpromiseall', + PerformPromiseRace: 'https://ecma-international.org/ecma-262/8.0/#sec-performpromiserace', + PerformPromiseThen: 'https://ecma-international.org/ecma-262/8.0/#sec-performpromisethen', + PrepareForOrdinaryCall: 'https://ecma-international.org/ecma-262/8.0/#sec-prepareforordinarycall', + PrepareForTailCall: 'https://ecma-international.org/ecma-262/8.0/#sec-preparefortailcall', + PromiseReactionJob: 'https://ecma-international.org/ecma-262/8.0/#sec-promisereactionjob', + PromiseResolveThenableJob: 'https://ecma-international.org/ecma-262/8.0/#sec-promiseresolvethenablejob', + ProxyCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-proxycreate', + PutValue: 'https://ecma-international.org/ecma-262/8.0/#sec-putvalue', + QuoteJSONString: 'https://ecma-international.org/ecma-262/8.0/#sec-quotejsonstring', + RawBytesToNumber: 'https://ecma-international.org/ecma-262/8.0/#sec-rawbytestonumber', + 'reads-bytes-from': 'https://ecma-international.org/ecma-262/8.0/#sec-reads-bytes-from', + 'reads-from': 'https://ecma-international.org/ecma-262/8.0/#sec-reads-from', + RegExpAlloc: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpalloc', + RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpbuiltinexec', + RegExpCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpcreate', + RegExpExec: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpexec', + RegExpInitialize: 'https://ecma-international.org/ecma-262/8.0/#sec-regexpinitialize', + RejectPromise: 'https://ecma-international.org/ecma-262/8.0/#sec-rejectpromise', + RemoveWaiter: 'https://ecma-international.org/ecma-262/8.0/#sec-removewaiter', + RemoveWaiters: 'https://ecma-international.org/ecma-262/8.0/#sec-removewaiters', + RepeatMatcher: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-repeatmatcher-abstract-operation', + RequireObjectCoercible: 'https://ecma-international.org/ecma-262/8.0/#sec-requireobjectcoercible', + ResolveBinding: 'https://ecma-international.org/ecma-262/8.0/#sec-resolvebinding', + ResolveThisBinding: 'https://ecma-international.org/ecma-262/8.0/#sec-resolvethisbinding', + ReturnIfAbrupt: 'https://ecma-international.org/ecma-262/8.0/#sec-returnifabrupt', + RunJobs: 'https://ecma-international.org/ecma-262/8.0/#sec-runjobs', + SameValue: 'https://ecma-international.org/ecma-262/8.0/#sec-samevalue', + SameValueNonNumber: 'https://ecma-international.org/ecma-262/8.0/#sec-samevaluenonnumber', + SameValueZero: 'https://ecma-international.org/ecma-262/8.0/#sec-samevaluezero', + ScriptEvaluation: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-scriptevaluation', + ScriptEvaluationJob: 'https://ecma-international.org/ecma-262/8.0/#sec-scriptevaluationjob', + SecFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-SecFromTime', + SerializeJSONArray: 'https://ecma-international.org/ecma-262/8.0/#sec-serializejsonarray', + SerializeJSONObject: 'https://ecma-international.org/ecma-262/8.0/#sec-serializejsonobject', + SerializeJSONProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-serializejsonproperty', + Set: 'https://ecma-international.org/ecma-262/8.0/#sec-set-o-p-v-throw', + SetDefaultGlobalBindings: 'https://ecma-international.org/ecma-262/8.0/#sec-setdefaultglobalbindings', + SetFunctionName: 'https://ecma-international.org/ecma-262/8.0/#sec-setfunctionname', + SetImmutablePrototype: 'https://ecma-international.org/ecma-262/8.0/#sec-set-immutable-prototype', + SetIntegrityLevel: 'https://ecma-international.org/ecma-262/8.0/#sec-setintegritylevel', + SetRealmGlobalObject: 'https://ecma-international.org/ecma-262/8.0/#sec-setrealmglobalobject', + SetValueInBuffer: 'https://ecma-international.org/ecma-262/8.0/#sec-setvalueinbuffer', + SetViewValue: 'https://ecma-international.org/ecma-262/8.0/#sec-setviewvalue', + SharedDataBlockEventSet: 'https://ecma-international.org/ecma-262/8.0/#sec-sharedatablockeventset', + SortCompare: 'https://ecma-international.org/ecma-262/8.0/#sec-sortcompare', + SpeciesConstructor: 'https://ecma-international.org/ecma-262/8.0/#sec-speciesconstructor', + SplitMatch: 'https://ecma-international.org/ecma-262/8.0/#sec-splitmatch', + 'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/8.0/#sec-strict-equality-comparison', + StringCreate: 'https://ecma-international.org/ecma-262/8.0/#sec-stringcreate', + StringGetOwnProperty: 'https://ecma-international.org/ecma-262/8.0/#sec-stringgetownproperty', + Suspend: 'https://ecma-international.org/ecma-262/8.0/#sec-suspend', + SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/8.0/#sec-symboldescriptivestring', + 'synchronizes-with': 'https://ecma-international.org/ecma-262/8.0/#sec-synchronizes-with', + TestIntegrityLevel: 'https://ecma-international.org/ecma-262/8.0/#sec-testintegritylevel', + thisBooleanValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thisbooleanvalue', + thisNumberValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thisnumbervalue', + thisStringValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thisstringvalue', + thisTimeValue: 'https://ecma-international.org/ecma-262/8.0/#sec-thistimevalue', + TimeClip: 'https://ecma-international.org/ecma-262/8.0/#sec-timeclip', + TimeFromYear: 'https://ecma-international.org/ecma-262/8.0/#eqn-TimeFromYear', + TimeWithinDay: 'https://ecma-international.org/ecma-262/8.0/#eqn-TimeWithinDay', + ToBoolean: 'https://ecma-international.org/ecma-262/8.0/#sec-toboolean', + ToDateString: 'https://ecma-international.org/ecma-262/8.0/#sec-todatestring', + ToIndex: 'https://ecma-international.org/ecma-262/8.0/#sec-toindex', + ToInt16: 'https://ecma-international.org/ecma-262/8.0/#sec-toint16', + ToInt32: 'https://ecma-international.org/ecma-262/8.0/#sec-toint32', + ToInt8: 'https://ecma-international.org/ecma-262/8.0/#sec-toint8', + ToInteger: 'https://ecma-international.org/ecma-262/8.0/#sec-tointeger', + ToLength: 'https://ecma-international.org/ecma-262/8.0/#sec-tolength', + ToNumber: 'https://ecma-international.org/ecma-262/8.0/#sec-tonumber', + ToObject: 'https://ecma-international.org/ecma-262/8.0/#sec-toobject', + TopLevelModuleEvaluationJob: 'https://ecma-international.org/ecma-262/8.0/#sec-toplevelmoduleevaluationjob', + ToPrimitive: 'https://ecma-international.org/ecma-262/8.0/#sec-toprimitive', + ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-topropertydescriptor', + ToPropertyKey: 'https://ecma-international.org/ecma-262/8.0/#sec-topropertykey', + ToString: 'https://ecma-international.org/ecma-262/8.0/#sec-tostring', + 'ToString Applied to the Number Type': 'https://ecma-international.org/ecma-262/8.0/#sec-tostring-applied-to-the-number-type', + ToUint16: 'https://ecma-international.org/ecma-262/8.0/#sec-touint16', + ToUint32: 'https://ecma-international.org/ecma-262/8.0/#sec-touint32', + ToUint8: 'https://ecma-international.org/ecma-262/8.0/#sec-touint8', + ToUint8Clamp: 'https://ecma-international.org/ecma-262/8.0/#sec-touint8clamp', + TriggerPromiseReactions: 'https://ecma-international.org/ecma-262/8.0/#sec-triggerpromisereactions', + Type: 'https://ecma-international.org/ecma-262/8.0/#sec-ecmascript-data-types-and-values', + TypedArrayCreate: 'https://ecma-international.org/ecma-262/8.0/#typedarray-create', + TypedArraySpeciesCreate: 'https://ecma-international.org/ecma-262/8.0/#typedarray-species-create', + UpdateEmpty: 'https://ecma-international.org/ecma-262/8.0/#sec-updateempty', + UTC: 'https://ecma-international.org/ecma-262/8.0/#sec-utc-t', + UTF16Decode: 'https://ecma-international.org/ecma-262/8.0/#sec-utf16decode', + UTF16Encoding: 'https://ecma-international.org/ecma-262/8.0/#sec-utf16encoding', + ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/8.0/#sec-validateandapplypropertydescriptor', + ValidateAtomicAccess: 'https://ecma-international.org/ecma-262/8.0/#sec-validateatomicaccess', + ValidateSharedIntegerTypedArray: 'https://ecma-international.org/ecma-262/8.0/#sec-validatesharedintegertypedarray', + ValidateTypedArray: 'https://ecma-international.org/ecma-262/8.0/#sec-validatetypedarray', + ValueOfReadEvent: 'https://ecma-international.org/ecma-262/8.0/#sec-valueofreadevent', + WakeWaiter: 'https://ecma-international.org/ecma-262/8.0/#sec-wakewaiter', + WeekDay: 'https://ecma-international.org/ecma-262/8.0/#sec-week-day', + WordCharacters: 'https://ecma-international.org/ecma-262/8.0/#sec-runtime-semantics-wordcharacters-abstract-operation', + YearFromTime: 'https://ecma-international.org/ecma-262/8.0/#eqn-YearFromTime' +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/operations/2018.js b/tic-tac-toe-app/node_modules/es-abstract/operations/2018.js new file mode 100644 index 0000000..c93b561 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/operations/2018.js @@ -0,0 +1,350 @@ +'use strict'; + +module.exports = { + abs: 'https://ecma-international.org/ecma-262/9.0/#eqn-abs', + 'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/9.0/#sec-abstract-equality-comparison', + 'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/9.0/#sec-abstract-relational-comparison', + AddRestrictedFunctionProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-addrestrictedfunctionproperties', + AddWaiter: 'https://ecma-international.org/ecma-262/9.0/#sec-addwaiter', + AdvanceStringIndex: 'https://ecma-international.org/ecma-262/9.0/#sec-advancestringindex', + 'agent-order': 'https://ecma-international.org/ecma-262/9.0/#sec-agent-order', + AgentCanSuspend: 'https://ecma-international.org/ecma-262/9.0/#sec-agentcansuspend', + AgentSignifier: 'https://ecma-international.org/ecma-262/9.0/#sec-agentsignifier', + AllocateArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatearraybuffer', + AllocateSharedArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatesharedarraybuffer', + AllocateTypedArray: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatetypedarray', + AllocateTypedArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-allocatetypedarraybuffer', + ArrayCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-arraycreate', + ArraySetLength: 'https://ecma-international.org/ecma-262/9.0/#sec-arraysetlength', + ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-arrayspeciescreate', + AsyncFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-async-functions-abstract-operations-async-function-create', + AsyncFunctionStart: 'https://ecma-international.org/ecma-262/9.0/#sec-async-functions-abstract-operations-async-function-start', + AsyncGeneratorEnqueue: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorenqueue', + AsyncGeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorfunctioncreate', + AsyncGeneratorReject: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorreject', + AsyncGeneratorResolve: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorresolve', + AsyncGeneratorResumeNext: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorresumenext', + AsyncGeneratorStart: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratorstart', + AsyncGeneratorYield: 'https://ecma-international.org/ecma-262/9.0/#sec-asyncgeneratoryield', + AsyncIteratorClose: 'https://ecma-international.org/ecma-262/9.0/#sec-asynciteratorclose', + AtomicLoad: 'https://ecma-international.org/ecma-262/9.0/#sec-atomicload', + AtomicReadModifyWrite: 'https://ecma-international.org/ecma-262/9.0/#sec-atomicreadmodifywrite', + Await: 'https://ecma-international.org/ecma-262/9.0/#await', + BackreferenceMatcher: 'https://ecma-international.org/ecma-262/9.0/#sec-backreference-matcher', + BlockDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-blockdeclarationinstantiation', + BoundFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-boundfunctioncreate', + Call: 'https://ecma-international.org/ecma-262/9.0/#sec-call', + Canonicalize: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-canonicalize-ch', + CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/9.0/#sec-canonicalnumericindexstring', + CaseClauseIsSelected: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-caseclauseisselected', + CharacterRange: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-characterrange-abstract-operation', + CharacterRangeOrUnion: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation', + CharacterSetMatcher: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation', + CloneArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-clonearraybuffer', + CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-completepropertydescriptor', + Completion: 'https://ecma-international.org/ecma-262/9.0/#sec-completion-record-specification-type', + ComposeWriteEventBytes: 'https://ecma-international.org/ecma-262/9.0/#sec-composewriteeventbytes', + Construct: 'https://ecma-international.org/ecma-262/9.0/#sec-construct', + CopyDataBlockBytes: 'https://ecma-international.org/ecma-262/9.0/#sec-copydatablockbytes', + CopyDataProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-copydataproperties', + CreateArrayFromList: 'https://ecma-international.org/ecma-262/9.0/#sec-createarrayfromlist', + CreateArrayIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createarrayiterator', + CreateAsyncFromSyncIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createasyncfromsynciterator', + CreateBuiltinFunction: 'https://ecma-international.org/ecma-262/9.0/#sec-createbuiltinfunction', + CreateByteDataBlock: 'https://ecma-international.org/ecma-262/9.0/#sec-createbytedatablock', + CreateDataProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-createdataproperty', + CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/9.0/#sec-createdatapropertyorthrow', + CreateDynamicFunction: 'https://ecma-international.org/ecma-262/9.0/#sec-createdynamicfunction', + CreateHTML: 'https://ecma-international.org/ecma-262/9.0/#sec-createhtml', + CreateIntrinsics: 'https://ecma-international.org/ecma-262/9.0/#sec-createintrinsics', + CreateIterResultObject: 'https://ecma-international.org/ecma-262/9.0/#sec-createiterresultobject', + CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/9.0/#sec-createlistfromarraylike', + CreateListIteratorRecord: 'https://ecma-international.org/ecma-262/9.0/#sec-createlistiteratorRecord', + CreateMapIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createmapiterator', + CreateMappedArgumentsObject: 'https://ecma-international.org/ecma-262/9.0/#sec-createmappedargumentsobject', + CreateMethodProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-createmethodproperty', + CreatePerIterationEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-createperiterationenvironment', + CreateRealm: 'https://ecma-international.org/ecma-262/9.0/#sec-createrealm', + CreateResolvingFunctions: 'https://ecma-international.org/ecma-262/9.0/#sec-createresolvingfunctions', + CreateSetIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createsetiterator', + CreateSharedByteDataBlock: 'https://ecma-international.org/ecma-262/9.0/#sec-createsharedbytedatablock', + CreateStringIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-createstringiterator', + CreateUnmappedArgumentsObject: 'https://ecma-international.org/ecma-262/9.0/#sec-createunmappedargumentsobject', + DateFromTime: 'https://ecma-international.org/ecma-262/9.0/#sec-date-number', + DateString: 'https://ecma-international.org/ecma-262/9.0/#sec-datestring', + Day: 'https://ecma-international.org/ecma-262/9.0/#eqn-Day', + DayFromYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-DaysFromYear', + DaysInYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-DaysInYear', + DayWithinYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-DayWithinYear', + Decode: 'https://ecma-international.org/ecma-262/9.0/#sec-decode', + DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/9.0/#sec-definepropertyorthrow', + DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/9.0/#sec-deletepropertyorthrow', + DetachArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-detacharraybuffer', + Encode: 'https://ecma-international.org/ecma-262/9.0/#sec-encode', + EnqueueJob: 'https://ecma-international.org/ecma-262/9.0/#sec-enqueuejob', + EnterCriticalSection: 'https://ecma-international.org/ecma-262/9.0/#sec-entercriticalsection', + EnumerableOwnPropertyNames: 'https://ecma-international.org/ecma-262/9.0/#sec-enumerableownpropertynames', + EnumerateObjectProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-enumerate-object-properties', + EscapeRegExpPattern: 'https://ecma-international.org/ecma-262/9.0/#sec-escaperegexppattern', + EvalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-evaldeclarationinstantiation', + EvaluateCall: 'https://ecma-international.org/ecma-262/9.0/#sec-evaluatecall', + EvaluateNew: 'https://ecma-international.org/ecma-262/9.0/#sec-evaluatenew', + EventSet: 'https://ecma-international.org/ecma-262/9.0/#sec-event-set', + floor: 'https://ecma-international.org/ecma-262/9.0/#eqn-floor', + ForBodyEvaluation: 'https://ecma-international.org/ecma-262/9.0/#sec-forbodyevaluation', + 'ForIn/OfBodyEvaluation': 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset', + 'ForIn/OfHeadEvaluation': 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind', + FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-frompropertydescriptor', + FulfillPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-fulfillpromise', + FunctionAllocate: 'https://ecma-international.org/ecma-262/9.0/#sec-functionallocate', + FunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-functioncreate', + FunctionDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-functiondeclarationinstantiation', + FunctionInitialize: 'https://ecma-international.org/ecma-262/9.0/#sec-functioninitialize', + GeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorfunctioncreate', + GeneratorResume: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorresume', + GeneratorResumeAbrupt: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorresumeabrupt', + GeneratorStart: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorstart', + GeneratorValidate: 'https://ecma-international.org/ecma-262/9.0/#sec-generatorvalidate', + GeneratorYield: 'https://ecma-international.org/ecma-262/9.0/#sec-generatoryield', + Get: 'https://ecma-international.org/ecma-262/9.0/#sec-get-o-p', + GetActiveScriptOrModule: 'https://ecma-international.org/ecma-262/9.0/#sec-getactivescriptormodule', + GetBase: 'https://ecma-international.org/ecma-262/9.0/#sec-getbase', + GetFunctionRealm: 'https://ecma-international.org/ecma-262/9.0/#sec-getfunctionrealm', + GetGeneratorKind: 'https://ecma-international.org/ecma-262/9.0/#sec-getgeneratorkind', + GetGlobalObject: 'https://ecma-international.org/ecma-262/9.0/#sec-getglobalobject', + GetIdentifierReference: 'https://ecma-international.org/ecma-262/9.0/#sec-getidentifierreference', + GetIterator: 'https://ecma-international.org/ecma-262/9.0/#sec-getiterator', + GetMethod: 'https://ecma-international.org/ecma-262/9.0/#sec-getmethod', + GetModifySetValueInBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-getmodifysetvalueinbuffer', + GetModuleNamespace: 'https://ecma-international.org/ecma-262/9.0/#sec-getmodulenamespace', + GetNewTarget: 'https://ecma-international.org/ecma-262/9.0/#sec-getnewtarget', + GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/9.0/#sec-getownpropertykeys', + GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-getprototypefromconstructor', + GetReferencedName: 'https://ecma-international.org/ecma-262/9.0/#sec-getreferencedname', + GetSubstitution: 'https://ecma-international.org/ecma-262/9.0/#sec-getsubstitution', + GetSuperConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-getsuperconstructor', + GetTemplateObject: 'https://ecma-international.org/ecma-262/9.0/#sec-gettemplateobject', + GetThisEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-getthisenvironment', + GetThisValue: 'https://ecma-international.org/ecma-262/9.0/#sec-getthisvalue', + GetV: 'https://ecma-international.org/ecma-262/9.0/#sec-getv', + GetValue: 'https://ecma-international.org/ecma-262/9.0/#sec-getvalue', + GetValueFromBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-getvaluefrombuffer', + GetViewValue: 'https://ecma-international.org/ecma-262/9.0/#sec-getviewvalue', + GetWaiterList: 'https://ecma-international.org/ecma-262/9.0/#sec-getwaiterlist', + GlobalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-globaldeclarationinstantiation', + 'happens-before': 'https://ecma-international.org/ecma-262/9.0/#sec-happens-before', + HasOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-hasownproperty', + HasPrimitiveBase: 'https://ecma-international.org/ecma-262/9.0/#sec-hasprimitivebase', + HasProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-hasproperty', + 'host-synchronizes-with': 'https://ecma-international.org/ecma-262/9.0/#sec-host-synchronizes-with', + HostEnsureCanCompileStrings: 'https://ecma-international.org/ecma-262/9.0/#sec-hostensurecancompilestrings', + HostEventSet: 'https://ecma-international.org/ecma-262/9.0/#sec-hosteventset', + HostPromiseRejectionTracker: 'https://ecma-international.org/ecma-262/9.0/#sec-host-promise-rejection-tracker', + HostReportErrors: 'https://ecma-international.org/ecma-262/9.0/#sec-host-report-errors', + HostResolveImportedModule: 'https://ecma-international.org/ecma-262/9.0/#sec-hostresolveimportedmodule', + HourFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-HourFromTime', + IfAbruptRejectPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-ifabruptrejectpromise', + ImportedLocalNames: 'https://ecma-international.org/ecma-262/9.0/#sec-importedlocalnames', + InitializeBoundName: 'https://ecma-international.org/ecma-262/9.0/#sec-initializeboundname', + InitializeHostDefinedRealm: 'https://ecma-international.org/ecma-262/9.0/#sec-initializehostdefinedrealm', + InitializeReferencedBinding: 'https://ecma-international.org/ecma-262/9.0/#sec-initializereferencedbinding', + InLeapYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-InLeapYear', + InnerModuleEvaluation: 'https://ecma-international.org/ecma-262/9.0/#sec-innermoduleevaluation', + InnerModuleInstantiation: 'https://ecma-international.org/ecma-262/9.0/#sec-innermoduleinstantiation', + InstanceofOperator: 'https://ecma-international.org/ecma-262/9.0/#sec-instanceofoperator', + IntegerIndexedElementGet: 'https://ecma-international.org/ecma-262/9.0/#sec-integerindexedelementget', + IntegerIndexedElementSet: 'https://ecma-international.org/ecma-262/9.0/#sec-integerindexedelementset', + IntegerIndexedObjectCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-integerindexedobjectcreate', + InternalizeJSONProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-internalizejsonproperty', + Invoke: 'https://ecma-international.org/ecma-262/9.0/#sec-invoke', + IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-isaccessordescriptor', + IsAnonymousFunctionDefinition: 'https://ecma-international.org/ecma-262/9.0/#sec-isanonymousfunctiondefinition', + IsArray: 'https://ecma-international.org/ecma-262/9.0/#sec-isarray', + IsCallable: 'https://ecma-international.org/ecma-262/9.0/#sec-iscallable', + IsCompatiblePropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-iscompatiblepropertydescriptor', + IsConcatSpreadable: 'https://ecma-international.org/ecma-262/9.0/#sec-isconcatspreadable', + IsConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-isconstructor', + IsDataDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-isdatadescriptor', + IsDetachedBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-isdetachedbuffer', + IsExtensible: 'https://ecma-international.org/ecma-262/9.0/#sec-isextensible-o', + IsGenericDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-isgenericdescriptor', + IsInTailPosition: 'https://ecma-international.org/ecma-262/9.0/#sec-isintailposition', + IsInteger: 'https://ecma-international.org/ecma-262/9.0/#sec-isinteger', + IsLabelledFunction: 'https://ecma-international.org/ecma-262/9.0/#sec-islabelledfunction', + IsPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-ispromise', + IsPropertyKey: 'https://ecma-international.org/ecma-262/9.0/#sec-ispropertykey', + IsPropertyReference: 'https://ecma-international.org/ecma-262/9.0/#sec-ispropertyreference', + IsRegExp: 'https://ecma-international.org/ecma-262/9.0/#sec-isregexp', + IsSharedArrayBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-issharedarraybuffer', + IsStrictReference: 'https://ecma-international.org/ecma-262/9.0/#sec-isstrictreference', + IsStringPrefix: 'https://ecma-international.org/ecma-262/9.0/#sec-isstringprefix', + IsSuperReference: 'https://ecma-international.org/ecma-262/9.0/#sec-issuperreference', + IsUnresolvableReference: 'https://ecma-international.org/ecma-262/9.0/#sec-isunresolvablereference', + IsWordChar: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-iswordchar-abstract-operation', + IterableToList: 'https://ecma-international.org/ecma-262/9.0/#sec-iterabletolist', + IteratorClose: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorclose', + IteratorComplete: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorcomplete', + IteratorNext: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratornext', + IteratorStep: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorstep', + IteratorValue: 'https://ecma-international.org/ecma-262/9.0/#sec-iteratorvalue', + LeaveCriticalSection: 'https://ecma-international.org/ecma-262/9.0/#sec-leavecriticalsection', + LocalTime: 'https://ecma-international.org/ecma-262/9.0/#sec-localtime', + LoopContinues: 'https://ecma-international.org/ecma-262/9.0/#sec-loopcontinues', + MakeArgGetter: 'https://ecma-international.org/ecma-262/9.0/#sec-makearggetter', + MakeArgSetter: 'https://ecma-international.org/ecma-262/9.0/#sec-makeargsetter', + MakeClassConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-makeclassconstructor', + MakeConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-makeconstructor', + MakeDate: 'https://ecma-international.org/ecma-262/9.0/#sec-makedate', + MakeDay: 'https://ecma-international.org/ecma-262/9.0/#sec-makeday', + MakeMethod: 'https://ecma-international.org/ecma-262/9.0/#sec-makemethod', + MakeSuperPropertyReference: 'https://ecma-international.org/ecma-262/9.0/#sec-makesuperpropertyreference', + MakeTime: 'https://ecma-international.org/ecma-262/9.0/#sec-maketime', + max: 'https://ecma-international.org/ecma-262/9.0/#eqn-max', + 'memory-order': 'https://ecma-international.org/ecma-262/9.0/#sec-memory-order', + min: 'https://ecma-international.org/ecma-262/9.0/#eqn-min', + MinFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-MinFromTime', + ModuleDeclarationEnvironmentSetup: 'https://ecma-international.org/ecma-262/9.0/#sec-moduledeclarationenvironmentsetup', + ModuleExecution: 'https://ecma-international.org/ecma-262/9.0/#sec-moduleexecution', + ModuleNamespaceCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-modulenamespacecreate', + modulo: 'https://ecma-international.org/ecma-262/9.0/#eqn-modulo', + MonthFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-MonthFromTime', + msFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-msFromTime', + NewDeclarativeEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newdeclarativeenvironment', + NewFunctionEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newfunctionenvironment', + NewGlobalEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newglobalenvironment', + NewModuleEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newmoduleenvironment', + NewObjectEnvironment: 'https://ecma-international.org/ecma-262/9.0/#sec-newobjectenvironment', + NewPromiseCapability: 'https://ecma-international.org/ecma-262/9.0/#sec-newpromisecapability', + NormalCompletion: 'https://ecma-international.org/ecma-262/9.0/#sec-normalcompletion', + NumberToRawBytes: 'https://ecma-international.org/ecma-262/9.0/#sec-numbertorawbytes', + NumberToString: 'https://ecma-international.org/ecma-262/9.0/#sec-tostring-applied-to-the-number-type', + ObjectCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-objectcreate', + ObjectDefineProperties: 'https://ecma-international.org/ecma-262/9.0/#sec-objectdefineproperties', + OrdinaryCallBindThis: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarycallbindthis', + OrdinaryCallEvaluateBody: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarycallevaluatebody', + OrdinaryCreateFromConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarycreatefromconstructor', + OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarydefineownproperty', + OrdinaryDelete: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarydelete', + OrdinaryGet: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryget', + OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarygetownproperty', + OrdinaryGetPrototypeOf: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarygetprototypeof', + OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryhasinstance', + OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryhasproperty', + OrdinaryIsExtensible: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryisextensible', + OrdinaryOwnPropertyKeys: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryownpropertykeys', + OrdinaryPreventExtensions: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarypreventextensions', + OrdinarySet: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinaryset', + OrdinarySetPrototypeOf: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarysetprototypeof', + OrdinarySetWithOwnDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarysetwithowndescriptor', + OrdinaryToPrimitive: 'https://ecma-international.org/ecma-262/9.0/#sec-ordinarytoprimitive', + ParseModule: 'https://ecma-international.org/ecma-262/9.0/#sec-parsemodule', + ParseScript: 'https://ecma-international.org/ecma-262/9.0/#sec-parse-script', + PerformEval: 'https://ecma-international.org/ecma-262/9.0/#sec-performeval', + PerformPromiseAll: 'https://ecma-international.org/ecma-262/9.0/#sec-performpromiseall', + PerformPromiseRace: 'https://ecma-international.org/ecma-262/9.0/#sec-performpromiserace', + PerformPromiseThen: 'https://ecma-international.org/ecma-262/9.0/#sec-performpromisethen', + PrepareForOrdinaryCall: 'https://ecma-international.org/ecma-262/9.0/#sec-prepareforordinarycall', + PrepareForTailCall: 'https://ecma-international.org/ecma-262/9.0/#sec-preparefortailcall', + PromiseReactionJob: 'https://ecma-international.org/ecma-262/9.0/#sec-promisereactionjob', + PromiseResolve: 'https://ecma-international.org/ecma-262/9.0/#sec-promise-resolve', + PromiseResolveThenableJob: 'https://ecma-international.org/ecma-262/9.0/#sec-promiseresolvethenablejob', + ProxyCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-proxycreate', + PutValue: 'https://ecma-international.org/ecma-262/9.0/#sec-putvalue', + QuoteJSONString: 'https://ecma-international.org/ecma-262/9.0/#sec-quotejsonstring', + RawBytesToNumber: 'https://ecma-international.org/ecma-262/9.0/#sec-rawbytestonumber', + 'reads-bytes-from': 'https://ecma-international.org/ecma-262/9.0/#sec-reads-bytes-from', + 'reads-from': 'https://ecma-international.org/ecma-262/9.0/#sec-reads-from', + RegExpAlloc: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpalloc', + RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpbuiltinexec', + RegExpCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpcreate', + RegExpExec: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpexec', + RegExpInitialize: 'https://ecma-international.org/ecma-262/9.0/#sec-regexpinitialize', + RejectPromise: 'https://ecma-international.org/ecma-262/9.0/#sec-rejectpromise', + RemoveWaiter: 'https://ecma-international.org/ecma-262/9.0/#sec-removewaiter', + RemoveWaiters: 'https://ecma-international.org/ecma-262/9.0/#sec-removewaiters', + RepeatMatcher: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-repeatmatcher-abstract-operation', + RequireObjectCoercible: 'https://ecma-international.org/ecma-262/9.0/#sec-requireobjectcoercible', + ResolveBinding: 'https://ecma-international.org/ecma-262/9.0/#sec-resolvebinding', + ResolveThisBinding: 'https://ecma-international.org/ecma-262/9.0/#sec-resolvethisbinding', + ReturnIfAbrupt: 'https://ecma-international.org/ecma-262/9.0/#sec-returnifabrupt', + RunJobs: 'https://ecma-international.org/ecma-262/9.0/#sec-runjobs', + SameValue: 'https://ecma-international.org/ecma-262/9.0/#sec-samevalue', + SameValueNonNumber: 'https://ecma-international.org/ecma-262/9.0/#sec-samevaluenonnumber', + SameValueZero: 'https://ecma-international.org/ecma-262/9.0/#sec-samevaluezero', + ScriptEvaluation: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-scriptevaluation', + ScriptEvaluationJob: 'https://ecma-international.org/ecma-262/9.0/#sec-scriptevaluationjob', + SecFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-SecFromTime', + SerializeJSONArray: 'https://ecma-international.org/ecma-262/9.0/#sec-serializejsonarray', + SerializeJSONObject: 'https://ecma-international.org/ecma-262/9.0/#sec-serializejsonobject', + SerializeJSONProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-serializejsonproperty', + Set: 'https://ecma-international.org/ecma-262/9.0/#sec-set-o-p-v-throw', + SetDefaultGlobalBindings: 'https://ecma-international.org/ecma-262/9.0/#sec-setdefaultglobalbindings', + SetFunctionLength: 'https://ecma-international.org/ecma-262/9.0/#sec-setfunctionlength', + SetFunctionName: 'https://ecma-international.org/ecma-262/9.0/#sec-setfunctionname', + SetImmutablePrototype: 'https://ecma-international.org/ecma-262/9.0/#sec-set-immutable-prototype', + SetIntegrityLevel: 'https://ecma-international.org/ecma-262/9.0/#sec-setintegritylevel', + SetRealmGlobalObject: 'https://ecma-international.org/ecma-262/9.0/#sec-setrealmglobalobject', + SetValueInBuffer: 'https://ecma-international.org/ecma-262/9.0/#sec-setvalueinbuffer', + SetViewValue: 'https://ecma-international.org/ecma-262/9.0/#sec-setviewvalue', + SharedDataBlockEventSet: 'https://ecma-international.org/ecma-262/9.0/#sec-sharedatablockeventset', + SortCompare: 'https://ecma-international.org/ecma-262/9.0/#sec-sortcompare', + SpeciesConstructor: 'https://ecma-international.org/ecma-262/9.0/#sec-speciesconstructor', + SplitMatch: 'https://ecma-international.org/ecma-262/9.0/#sec-splitmatch', + 'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/9.0/#sec-strict-equality-comparison', + StringCreate: 'https://ecma-international.org/ecma-262/9.0/#sec-stringcreate', + StringGetOwnProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-stringgetownproperty', + Suspend: 'https://ecma-international.org/ecma-262/9.0/#sec-suspend', + SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/9.0/#sec-symboldescriptivestring', + 'synchronizes-with': 'https://ecma-international.org/ecma-262/9.0/#sec-synchronizes-with', + TestIntegrityLevel: 'https://ecma-international.org/ecma-262/9.0/#sec-testintegritylevel', + thisBooleanValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thisbooleanvalue', + thisNumberValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thisnumbervalue', + thisStringValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thisstringvalue', + thisSymbolValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thissymbolvalue', + thisTimeValue: 'https://ecma-international.org/ecma-262/9.0/#sec-thistimevalue', + ThrowCompletion: 'https://ecma-international.org/ecma-262/9.0/#sec-throwcompletion', + TimeClip: 'https://ecma-international.org/ecma-262/9.0/#sec-timeclip', + TimeFromYear: 'https://ecma-international.org/ecma-262/9.0/#eqn-TimeFromYear', + TimeString: 'https://ecma-international.org/ecma-262/9.0/#sec-timestring', + TimeWithinDay: 'https://ecma-international.org/ecma-262/9.0/#eqn-TimeWithinDay', + TimeZoneString: 'https://ecma-international.org/ecma-262/9.0/#sec-timezoneestring', + ToBoolean: 'https://ecma-international.org/ecma-262/9.0/#sec-toboolean', + ToDateString: 'https://ecma-international.org/ecma-262/9.0/#sec-todatestring', + ToIndex: 'https://ecma-international.org/ecma-262/9.0/#sec-toindex', + ToInt16: 'https://ecma-international.org/ecma-262/9.0/#sec-toint16', + ToInt32: 'https://ecma-international.org/ecma-262/9.0/#sec-toint32', + ToInt8: 'https://ecma-international.org/ecma-262/9.0/#sec-toint8', + ToInteger: 'https://ecma-international.org/ecma-262/9.0/#sec-tointeger', + ToLength: 'https://ecma-international.org/ecma-262/9.0/#sec-tolength', + ToNumber: 'https://ecma-international.org/ecma-262/9.0/#sec-tonumber', + ToObject: 'https://ecma-international.org/ecma-262/9.0/#sec-toobject', + TopLevelModuleEvaluationJob: 'https://ecma-international.org/ecma-262/9.0/#sec-toplevelmoduleevaluationjob', + ToPrimitive: 'https://ecma-international.org/ecma-262/9.0/#sec-toprimitive', + ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-topropertydescriptor', + ToPropertyKey: 'https://ecma-international.org/ecma-262/9.0/#sec-topropertykey', + ToString: 'https://ecma-international.org/ecma-262/9.0/#sec-tostring', + ToUint16: 'https://ecma-international.org/ecma-262/9.0/#sec-touint16', + ToUint32: 'https://ecma-international.org/ecma-262/9.0/#sec-touint32', + ToUint8: 'https://ecma-international.org/ecma-262/9.0/#sec-touint8', + ToUint8Clamp: 'https://ecma-international.org/ecma-262/9.0/#sec-touint8clamp', + TriggerPromiseReactions: 'https://ecma-international.org/ecma-262/9.0/#sec-triggerpromisereactions', + Type: 'https://ecma-international.org/ecma-262/9.0/#sec-ecmascript-data-types-and-values', + TypedArrayCreate: 'https://ecma-international.org/ecma-262/9.0/#typedarray-create', + TypedArraySpeciesCreate: 'https://ecma-international.org/ecma-262/9.0/#typedarray-species-create', + UnicodeEscape: 'https://ecma-international.org/ecma-262/9.0/#sec-unicodeescape', + UnicodeMatchProperty: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-unicodematchproperty-p', + UnicodeMatchPropertyValue: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v', + UpdateEmpty: 'https://ecma-international.org/ecma-262/9.0/#sec-updateempty', + UTC: 'https://ecma-international.org/ecma-262/9.0/#sec-utc-t', + UTF16Decode: 'https://ecma-international.org/ecma-262/9.0/#sec-utf16decode', + UTF16Encoding: 'https://ecma-international.org/ecma-262/9.0/#sec-utf16encoding', + ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/9.0/#sec-validateandapplypropertydescriptor', + ValidateAtomicAccess: 'https://ecma-international.org/ecma-262/9.0/#sec-validateatomicaccess', + ValidateSharedIntegerTypedArray: 'https://ecma-international.org/ecma-262/9.0/#sec-validatesharedintegertypedarray', + ValidateTypedArray: 'https://ecma-international.org/ecma-262/9.0/#sec-validatetypedarray', + ValueOfReadEvent: 'https://ecma-international.org/ecma-262/9.0/#sec-valueofreadevent', + WakeWaiter: 'https://ecma-international.org/ecma-262/9.0/#sec-wakewaiter', + WeekDay: 'https://ecma-international.org/ecma-262/9.0/#sec-week-day', + WordCharacters: 'https://ecma-international.org/ecma-262/9.0/#sec-runtime-semantics-wordcharacters-abstract-operation', + YearFromTime: 'https://ecma-international.org/ecma-262/9.0/#eqn-YearFromTime' +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/operations/2019.js b/tic-tac-toe-app/node_modules/es-abstract/operations/2019.js new file mode 100644 index 0000000..73f05e8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/operations/2019.js @@ -0,0 +1,355 @@ +'use strict'; + +module.exports = { + abs: 'https://ecma-international.org/ecma-262/10.0/#eqn-abs', + 'Abstract Equality Comparison': 'https://ecma-international.org/ecma-262/10.0/#sec-abstract-equality-comparison', + 'Abstract Relational Comparison': 'https://ecma-international.org/ecma-262/10.0/#sec-abstract-relational-comparison', + AddEntriesFromIterable: 'https://ecma-international.org/ecma-262/10.0/#sec-add-entries-from-iterable', + AddRestrictedFunctionProperties: 'https://ecma-international.org/ecma-262/10.0/#sec-addrestrictedfunctionproperties', + AddWaiter: 'https://ecma-international.org/ecma-262/10.0/#sec-addwaiter', + AdvanceStringIndex: 'https://ecma-international.org/ecma-262/10.0/#sec-advancestringindex', + 'agent-order': 'https://ecma-international.org/ecma-262/10.0/#sec-agent-order', + AgentCanSuspend: 'https://ecma-international.org/ecma-262/10.0/#sec-agentcansuspend', + AgentSignifier: 'https://ecma-international.org/ecma-262/10.0/#sec-agentsignifier', + AllocateArrayBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-allocatearraybuffer', + AllocateSharedArrayBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-allocatesharedarraybuffer', + AllocateTypedArray: 'https://ecma-international.org/ecma-262/10.0/#sec-allocatetypedarray', + AllocateTypedArrayBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-allocatetypedarraybuffer', + ArrayCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-arraycreate', + ArraySetLength: 'https://ecma-international.org/ecma-262/10.0/#sec-arraysetlength', + ArraySpeciesCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-arrayspeciescreate', + AsyncFromSyncIteratorContinuation: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncfromsynciteratorcontinuation', + AsyncFunctionCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-async-functions-abstract-operations-async-function-create', + AsyncFunctionStart: 'https://ecma-international.org/ecma-262/10.0/#sec-async-functions-abstract-operations-async-function-start', + AsyncGeneratorEnqueue: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncgeneratorenqueue', + AsyncGeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncgeneratorfunctioncreate', + AsyncGeneratorReject: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncgeneratorreject', + AsyncGeneratorResolve: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncgeneratorresolve', + AsyncGeneratorResumeNext: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncgeneratorresumenext', + AsyncGeneratorStart: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncgeneratorstart', + AsyncGeneratorYield: 'https://ecma-international.org/ecma-262/10.0/#sec-asyncgeneratoryield', + AsyncIteratorClose: 'https://ecma-international.org/ecma-262/10.0/#sec-asynciteratorclose', + AtomicLoad: 'https://ecma-international.org/ecma-262/10.0/#sec-atomicload', + AtomicReadModifyWrite: 'https://ecma-international.org/ecma-262/10.0/#sec-atomicreadmodifywrite', + Await: 'https://ecma-international.org/ecma-262/10.0/#await', + BackreferenceMatcher: 'https://ecma-international.org/ecma-262/10.0/#sec-backreference-matcher', + BlockDeclarationInstantiation: 'https://ecma-international.org/ecma-262/10.0/#sec-blockdeclarationinstantiation', + BoundFunctionCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-boundfunctioncreate', + Call: 'https://ecma-international.org/ecma-262/10.0/#sec-call', + Canonicalize: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-canonicalize-ch', + CanonicalNumericIndexString: 'https://ecma-international.org/ecma-262/10.0/#sec-canonicalnumericindexstring', + CaseClauseIsSelected: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-caseclauseisselected', + CharacterRange: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-characterrange-abstract-operation', + CharacterRangeOrUnion: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-characterrangeorunion-abstract-operation', + CharacterSetMatcher: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-charactersetmatcher-abstract-operation', + CloneArrayBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-clonearraybuffer', + CompletePropertyDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-completepropertydescriptor', + Completion: 'https://ecma-international.org/ecma-262/10.0/#sec-completion-record-specification-type', + ComposeWriteEventBytes: 'https://ecma-international.org/ecma-262/10.0/#sec-composewriteeventbytes', + Construct: 'https://ecma-international.org/ecma-262/10.0/#sec-construct', + CopyDataBlockBytes: 'https://ecma-international.org/ecma-262/10.0/#sec-copydatablockbytes', + CopyDataProperties: 'https://ecma-international.org/ecma-262/10.0/#sec-copydataproperties', + CreateArrayFromList: 'https://ecma-international.org/ecma-262/10.0/#sec-createarrayfromlist', + CreateArrayIterator: 'https://ecma-international.org/ecma-262/10.0/#sec-createarrayiterator', + CreateAsyncFromSyncIterator: 'https://ecma-international.org/ecma-262/10.0/#sec-createasyncfromsynciterator', + CreateBuiltinFunction: 'https://ecma-international.org/ecma-262/10.0/#sec-createbuiltinfunction', + CreateByteDataBlock: 'https://ecma-international.org/ecma-262/10.0/#sec-createbytedatablock', + CreateDataProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-createdataproperty', + CreateDataPropertyOrThrow: 'https://ecma-international.org/ecma-262/10.0/#sec-createdatapropertyorthrow', + CreateDynamicFunction: 'https://ecma-international.org/ecma-262/10.0/#sec-createdynamicfunction', + CreateHTML: 'https://ecma-international.org/ecma-262/10.0/#sec-createhtml', + CreateIntrinsics: 'https://ecma-international.org/ecma-262/10.0/#sec-createintrinsics', + CreateIterResultObject: 'https://ecma-international.org/ecma-262/10.0/#sec-createiterresultobject', + CreateListFromArrayLike: 'https://ecma-international.org/ecma-262/10.0/#sec-createlistfromarraylike', + CreateListIteratorRecord: 'https://ecma-international.org/ecma-262/10.0/#sec-createlistiteratorRecord', + CreateMapIterator: 'https://ecma-international.org/ecma-262/10.0/#sec-createmapiterator', + CreateMappedArgumentsObject: 'https://ecma-international.org/ecma-262/10.0/#sec-createmappedargumentsobject', + CreateMethodProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-createmethodproperty', + CreatePerIterationEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-createperiterationenvironment', + CreateRealm: 'https://ecma-international.org/ecma-262/10.0/#sec-createrealm', + CreateResolvingFunctions: 'https://ecma-international.org/ecma-262/10.0/#sec-createresolvingfunctions', + CreateSetIterator: 'https://ecma-international.org/ecma-262/10.0/#sec-createsetiterator', + CreateSharedByteDataBlock: 'https://ecma-international.org/ecma-262/10.0/#sec-createsharedbytedatablock', + CreateStringIterator: 'https://ecma-international.org/ecma-262/10.0/#sec-createstringiterator', + CreateUnmappedArgumentsObject: 'https://ecma-international.org/ecma-262/10.0/#sec-createunmappedargumentsobject', + DateFromTime: 'https://ecma-international.org/ecma-262/10.0/#sec-date-number', + DateString: 'https://ecma-international.org/ecma-262/10.0/#sec-datestring', + Day: 'https://ecma-international.org/ecma-262/10.0/#eqn-Day', + DayFromYear: 'https://ecma-international.org/ecma-262/10.0/#eqn-DaysFromYear', + DaysInYear: 'https://ecma-international.org/ecma-262/10.0/#eqn-DaysInYear', + DayWithinYear: 'https://ecma-international.org/ecma-262/10.0/#eqn-DayWithinYear', + Decode: 'https://ecma-international.org/ecma-262/10.0/#sec-decode', + DefinePropertyOrThrow: 'https://ecma-international.org/ecma-262/10.0/#sec-definepropertyorthrow', + DeletePropertyOrThrow: 'https://ecma-international.org/ecma-262/10.0/#sec-deletepropertyorthrow', + DetachArrayBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-detacharraybuffer', + Encode: 'https://ecma-international.org/ecma-262/10.0/#sec-encode', + EnqueueJob: 'https://ecma-international.org/ecma-262/10.0/#sec-enqueuejob', + EnterCriticalSection: 'https://ecma-international.org/ecma-262/10.0/#sec-entercriticalsection', + EnumerableOwnPropertyNames: 'https://ecma-international.org/ecma-262/10.0/#sec-enumerableownpropertynames', + EnumerateObjectProperties: 'https://ecma-international.org/ecma-262/10.0/#sec-enumerate-object-properties', + EscapeRegExpPattern: 'https://ecma-international.org/ecma-262/10.0/#sec-escaperegexppattern', + EvalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/10.0/#sec-evaldeclarationinstantiation', + EvaluateCall: 'https://ecma-international.org/ecma-262/10.0/#sec-evaluatecall', + EvaluateNew: 'https://ecma-international.org/ecma-262/10.0/#sec-evaluatenew', + EventSet: 'https://ecma-international.org/ecma-262/10.0/#sec-event-set', + ExecuteModule: 'https://ecma-international.org/ecma-262/10.0/#sec-source-text-module-record-execute-module', + FlattenIntoArray: 'https://ecma-international.org/ecma-262/10.0/#sec-flattenintoarray', + floor: 'https://ecma-international.org/ecma-262/10.0/#eqn-floor', + ForBodyEvaluation: 'https://ecma-international.org/ecma-262/10.0/#sec-forbodyevaluation', + 'ForIn/OfBodyEvaluation': 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-forin-div-ofbodyevaluation-lhs-stmt-iterator-lhskind-labelset', + 'ForIn/OfHeadEvaluation': 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-forin-div-ofheadevaluation-tdznames-expr-iterationkind', + FromPropertyDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-frompropertydescriptor', + FulfillPromise: 'https://ecma-international.org/ecma-262/10.0/#sec-fulfillpromise', + FunctionAllocate: 'https://ecma-international.org/ecma-262/10.0/#sec-functionallocate', + FunctionCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-functioncreate', + FunctionDeclarationInstantiation: 'https://ecma-international.org/ecma-262/10.0/#sec-functiondeclarationinstantiation', + FunctionInitialize: 'https://ecma-international.org/ecma-262/10.0/#sec-functioninitialize', + GeneratorFunctionCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-generatorfunctioncreate', + GeneratorResume: 'https://ecma-international.org/ecma-262/10.0/#sec-generatorresume', + GeneratorResumeAbrupt: 'https://ecma-international.org/ecma-262/10.0/#sec-generatorresumeabrupt', + GeneratorStart: 'https://ecma-international.org/ecma-262/10.0/#sec-generatorstart', + GeneratorValidate: 'https://ecma-international.org/ecma-262/10.0/#sec-generatorvalidate', + GeneratorYield: 'https://ecma-international.org/ecma-262/10.0/#sec-generatoryield', + Get: 'https://ecma-international.org/ecma-262/10.0/#sec-get-o-p', + GetActiveScriptOrModule: 'https://ecma-international.org/ecma-262/10.0/#sec-getactivescriptormodule', + GetBase: 'https://ecma-international.org/ecma-262/10.0/#sec-getbase', + GetFunctionRealm: 'https://ecma-international.org/ecma-262/10.0/#sec-getfunctionrealm', + GetGeneratorKind: 'https://ecma-international.org/ecma-262/10.0/#sec-getgeneratorkind', + GetGlobalObject: 'https://ecma-international.org/ecma-262/10.0/#sec-getglobalobject', + GetIdentifierReference: 'https://ecma-international.org/ecma-262/10.0/#sec-getidentifierreference', + GetIterator: 'https://ecma-international.org/ecma-262/10.0/#sec-getiterator', + GetMethod: 'https://ecma-international.org/ecma-262/10.0/#sec-getmethod', + GetModifySetValueInBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-getmodifysetvalueinbuffer', + GetModuleNamespace: 'https://ecma-international.org/ecma-262/10.0/#sec-getmodulenamespace', + GetNewTarget: 'https://ecma-international.org/ecma-262/10.0/#sec-getnewtarget', + GetOwnPropertyKeys: 'https://ecma-international.org/ecma-262/10.0/#sec-getownpropertykeys', + GetPrototypeFromConstructor: 'https://ecma-international.org/ecma-262/10.0/#sec-getprototypefromconstructor', + GetReferencedName: 'https://ecma-international.org/ecma-262/10.0/#sec-getreferencedname', + GetSubstitution: 'https://ecma-international.org/ecma-262/10.0/#sec-getsubstitution', + GetSuperConstructor: 'https://ecma-international.org/ecma-262/10.0/#sec-getsuperconstructor', + GetTemplateObject: 'https://ecma-international.org/ecma-262/10.0/#sec-gettemplateobject', + GetThisEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-getthisenvironment', + GetThisValue: 'https://ecma-international.org/ecma-262/10.0/#sec-getthisvalue', + GetV: 'https://ecma-international.org/ecma-262/10.0/#sec-getv', + GetValue: 'https://ecma-international.org/ecma-262/10.0/#sec-getvalue', + GetValueFromBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-getvaluefrombuffer', + GetViewValue: 'https://ecma-international.org/ecma-262/10.0/#sec-getviewvalue', + GetWaiterList: 'https://ecma-international.org/ecma-262/10.0/#sec-getwaiterlist', + GlobalDeclarationInstantiation: 'https://ecma-international.org/ecma-262/10.0/#sec-globaldeclarationinstantiation', + 'happens-before': 'https://ecma-international.org/ecma-262/10.0/#sec-happens-before', + HasOwnProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-hasownproperty', + HasPrimitiveBase: 'https://ecma-international.org/ecma-262/10.0/#sec-hasprimitivebase', + HasProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-hasproperty', + 'host-synchronizes-with': 'https://ecma-international.org/ecma-262/10.0/#sec-host-synchronizes-with', + HostEnsureCanCompileStrings: 'https://ecma-international.org/ecma-262/10.0/#sec-hostensurecancompilestrings', + HostEventSet: 'https://ecma-international.org/ecma-262/10.0/#sec-hosteventset', + HostPromiseRejectionTracker: 'https://ecma-international.org/ecma-262/10.0/#sec-host-promise-rejection-tracker', + HostReportErrors: 'https://ecma-international.org/ecma-262/10.0/#sec-host-report-errors', + HostResolveImportedModule: 'https://ecma-international.org/ecma-262/10.0/#sec-hostresolveimportedmodule', + HourFromTime: 'https://ecma-international.org/ecma-262/10.0/#eqn-HourFromTime', + IfAbruptRejectPromise: 'https://ecma-international.org/ecma-262/10.0/#sec-ifabruptrejectpromise', + ImportedLocalNames: 'https://ecma-international.org/ecma-262/10.0/#sec-importedlocalnames', + InitializeBoundName: 'https://ecma-international.org/ecma-262/10.0/#sec-initializeboundname', + InitializeEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-source-text-module-record-initialize-environment', + InitializeHostDefinedRealm: 'https://ecma-international.org/ecma-262/10.0/#sec-initializehostdefinedrealm', + InitializeReferencedBinding: 'https://ecma-international.org/ecma-262/10.0/#sec-initializereferencedbinding', + InLeapYear: 'https://ecma-international.org/ecma-262/10.0/#eqn-InLeapYear', + InnerModuleEvaluation: 'https://ecma-international.org/ecma-262/10.0/#sec-innermoduleevaluation', + InnerModuleInstantiation: 'https://ecma-international.org/ecma-262/10.0/#sec-innermoduleinstantiation', + InstanceofOperator: 'https://ecma-international.org/ecma-262/10.0/#sec-instanceofoperator', + IntegerIndexedElementGet: 'https://ecma-international.org/ecma-262/10.0/#sec-integerindexedelementget', + IntegerIndexedElementSet: 'https://ecma-international.org/ecma-262/10.0/#sec-integerindexedelementset', + IntegerIndexedObjectCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-integerindexedobjectcreate', + InternalizeJSONProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-internalizejsonproperty', + Invoke: 'https://ecma-international.org/ecma-262/10.0/#sec-invoke', + IsAccessorDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-isaccessordescriptor', + IsAnonymousFunctionDefinition: 'https://ecma-international.org/ecma-262/10.0/#sec-isanonymousfunctiondefinition', + IsArray: 'https://ecma-international.org/ecma-262/10.0/#sec-isarray', + IsCallable: 'https://ecma-international.org/ecma-262/10.0/#sec-iscallable', + IsCompatiblePropertyDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-iscompatiblepropertydescriptor', + IsConcatSpreadable: 'https://ecma-international.org/ecma-262/10.0/#sec-isconcatspreadable', + IsConstructor: 'https://ecma-international.org/ecma-262/10.0/#sec-isconstructor', + IsDataDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-isdatadescriptor', + IsDetachedBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-isdetachedbuffer', + IsExtensible: 'https://ecma-international.org/ecma-262/10.0/#sec-isextensible-o', + IsGenericDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-isgenericdescriptor', + IsInTailPosition: 'https://ecma-international.org/ecma-262/10.0/#sec-isintailposition', + IsInteger: 'https://ecma-international.org/ecma-262/10.0/#sec-isinteger', + IsLabelledFunction: 'https://ecma-international.org/ecma-262/10.0/#sec-islabelledfunction', + IsPromise: 'https://ecma-international.org/ecma-262/10.0/#sec-ispromise', + IsPropertyKey: 'https://ecma-international.org/ecma-262/10.0/#sec-ispropertykey', + IsPropertyReference: 'https://ecma-international.org/ecma-262/10.0/#sec-ispropertyreference', + IsRegExp: 'https://ecma-international.org/ecma-262/10.0/#sec-isregexp', + IsSharedArrayBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-issharedarraybuffer', + IsStrictReference: 'https://ecma-international.org/ecma-262/10.0/#sec-isstrictreference', + IsStringPrefix: 'https://ecma-international.org/ecma-262/10.0/#sec-isstringprefix', + IsSuperReference: 'https://ecma-international.org/ecma-262/10.0/#sec-issuperreference', + IsUnresolvableReference: 'https://ecma-international.org/ecma-262/10.0/#sec-isunresolvablereference', + IsWordChar: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-iswordchar-abstract-operation', + IterableToList: 'https://ecma-international.org/ecma-262/10.0/#sec-iterabletolist', + IteratorClose: 'https://ecma-international.org/ecma-262/10.0/#sec-iteratorclose', + IteratorComplete: 'https://ecma-international.org/ecma-262/10.0/#sec-iteratorcomplete', + IteratorNext: 'https://ecma-international.org/ecma-262/10.0/#sec-iteratornext', + IteratorStep: 'https://ecma-international.org/ecma-262/10.0/#sec-iteratorstep', + IteratorValue: 'https://ecma-international.org/ecma-262/10.0/#sec-iteratorvalue', + LeaveCriticalSection: 'https://ecma-international.org/ecma-262/10.0/#sec-leavecriticalsection', + LocalTime: 'https://ecma-international.org/ecma-262/10.0/#sec-localtime', + LoopContinues: 'https://ecma-international.org/ecma-262/10.0/#sec-loopcontinues', + MakeArgGetter: 'https://ecma-international.org/ecma-262/10.0/#sec-makearggetter', + MakeArgSetter: 'https://ecma-international.org/ecma-262/10.0/#sec-makeargsetter', + MakeClassConstructor: 'https://ecma-international.org/ecma-262/10.0/#sec-makeclassconstructor', + MakeConstructor: 'https://ecma-international.org/ecma-262/10.0/#sec-makeconstructor', + MakeDate: 'https://ecma-international.org/ecma-262/10.0/#sec-makedate', + MakeDay: 'https://ecma-international.org/ecma-262/10.0/#sec-makeday', + MakeMethod: 'https://ecma-international.org/ecma-262/10.0/#sec-makemethod', + MakeSuperPropertyReference: 'https://ecma-international.org/ecma-262/10.0/#sec-makesuperpropertyreference', + MakeTime: 'https://ecma-international.org/ecma-262/10.0/#sec-maketime', + max: 'https://ecma-international.org/ecma-262/10.0/#eqn-max', + 'memory-order': 'https://ecma-international.org/ecma-262/10.0/#sec-memory-order', + min: 'https://ecma-international.org/ecma-262/10.0/#eqn-min', + MinFromTime: 'https://ecma-international.org/ecma-262/10.0/#eqn-MinFromTime', + ModuleNamespaceCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-modulenamespacecreate', + modulo: 'https://ecma-international.org/ecma-262/10.0/#eqn-modulo', + MonthFromTime: 'https://ecma-international.org/ecma-262/10.0/#eqn-MonthFromTime', + msFromTime: 'https://ecma-international.org/ecma-262/10.0/#eqn-msFromTime', + NewDeclarativeEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-newdeclarativeenvironment', + NewFunctionEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-newfunctionenvironment', + NewGlobalEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-newglobalenvironment', + NewModuleEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-newmoduleenvironment', + NewObjectEnvironment: 'https://ecma-international.org/ecma-262/10.0/#sec-newobjectenvironment', + NewPromiseCapability: 'https://ecma-international.org/ecma-262/10.0/#sec-newpromisecapability', + NormalCompletion: 'https://ecma-international.org/ecma-262/10.0/#sec-normalcompletion', + NotifyWaiter: 'https://ecma-international.org/ecma-262/10.0/#sec-notifywaiter', + NumberToRawBytes: 'https://ecma-international.org/ecma-262/10.0/#sec-numbertorawbytes', + NumberToString: 'https://ecma-international.org/ecma-262/10.0/#sec-tostring-applied-to-the-number-type', + ObjectCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-objectcreate', + ObjectDefineProperties: 'https://ecma-international.org/ecma-262/10.0/#sec-objectdefineproperties', + OrdinaryCallBindThis: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarycallbindthis', + OrdinaryCallEvaluateBody: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarycallevaluatebody', + OrdinaryCreateFromConstructor: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarycreatefromconstructor', + OrdinaryDefineOwnProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarydefineownproperty', + OrdinaryDelete: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarydelete', + OrdinaryGet: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinaryget', + OrdinaryGetOwnProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarygetownproperty', + OrdinaryGetPrototypeOf: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarygetprototypeof', + OrdinaryHasInstance: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinaryhasinstance', + OrdinaryHasProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinaryhasproperty', + OrdinaryIsExtensible: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinaryisextensible', + OrdinaryOwnPropertyKeys: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinaryownpropertykeys', + OrdinaryPreventExtensions: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarypreventextensions', + OrdinarySet: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinaryset', + OrdinarySetPrototypeOf: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarysetprototypeof', + OrdinarySetWithOwnDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarysetwithowndescriptor', + OrdinaryToPrimitive: 'https://ecma-international.org/ecma-262/10.0/#sec-ordinarytoprimitive', + ParseModule: 'https://ecma-international.org/ecma-262/10.0/#sec-parsemodule', + ParseScript: 'https://ecma-international.org/ecma-262/10.0/#sec-parse-script', + PerformEval: 'https://ecma-international.org/ecma-262/10.0/#sec-performeval', + PerformPromiseAll: 'https://ecma-international.org/ecma-262/10.0/#sec-performpromiseall', + PerformPromiseRace: 'https://ecma-international.org/ecma-262/10.0/#sec-performpromiserace', + PerformPromiseThen: 'https://ecma-international.org/ecma-262/10.0/#sec-performpromisethen', + PrepareForOrdinaryCall: 'https://ecma-international.org/ecma-262/10.0/#sec-prepareforordinarycall', + PrepareForTailCall: 'https://ecma-international.org/ecma-262/10.0/#sec-preparefortailcall', + PromiseReactionJob: 'https://ecma-international.org/ecma-262/10.0/#sec-promisereactionjob', + PromiseResolve: 'https://ecma-international.org/ecma-262/10.0/#sec-promise-resolve', + PromiseResolveThenableJob: 'https://ecma-international.org/ecma-262/10.0/#sec-promiseresolvethenablejob', + ProxyCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-proxycreate', + PutValue: 'https://ecma-international.org/ecma-262/10.0/#sec-putvalue', + QuoteJSONString: 'https://ecma-international.org/ecma-262/10.0/#sec-quotejsonstring', + RawBytesToNumber: 'https://ecma-international.org/ecma-262/10.0/#sec-rawbytestonumber', + 'reads-bytes-from': 'https://ecma-international.org/ecma-262/10.0/#sec-reads-bytes-from', + 'reads-from': 'https://ecma-international.org/ecma-262/10.0/#sec-reads-from', + RegExpAlloc: 'https://ecma-international.org/ecma-262/10.0/#sec-regexpalloc', + RegExpBuiltinExec: 'https://ecma-international.org/ecma-262/10.0/#sec-regexpbuiltinexec', + RegExpCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-regexpcreate', + RegExpExec: 'https://ecma-international.org/ecma-262/10.0/#sec-regexpexec', + RegExpInitialize: 'https://ecma-international.org/ecma-262/10.0/#sec-regexpinitialize', + RejectPromise: 'https://ecma-international.org/ecma-262/10.0/#sec-rejectpromise', + RemoveWaiter: 'https://ecma-international.org/ecma-262/10.0/#sec-removewaiter', + RemoveWaiters: 'https://ecma-international.org/ecma-262/10.0/#sec-removewaiters', + RepeatMatcher: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-repeatmatcher-abstract-operation', + RequireObjectCoercible: 'https://ecma-international.org/ecma-262/10.0/#sec-requireobjectcoercible', + ResolveBinding: 'https://ecma-international.org/ecma-262/10.0/#sec-resolvebinding', + ResolveThisBinding: 'https://ecma-international.org/ecma-262/10.0/#sec-resolvethisbinding', + ReturnIfAbrupt: 'https://ecma-international.org/ecma-262/10.0/#sec-returnifabrupt', + RunJobs: 'https://ecma-international.org/ecma-262/10.0/#sec-runjobs', + SameValue: 'https://ecma-international.org/ecma-262/10.0/#sec-samevalue', + SameValueNonNumber: 'https://ecma-international.org/ecma-262/10.0/#sec-samevaluenonnumber', + SameValueZero: 'https://ecma-international.org/ecma-262/10.0/#sec-samevaluezero', + ScriptEvaluation: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-scriptevaluation', + ScriptEvaluationJob: 'https://ecma-international.org/ecma-262/10.0/#sec-scriptevaluationjob', + SecFromTime: 'https://ecma-international.org/ecma-262/10.0/#eqn-SecFromTime', + SerializeJSONArray: 'https://ecma-international.org/ecma-262/10.0/#sec-serializejsonarray', + SerializeJSONObject: 'https://ecma-international.org/ecma-262/10.0/#sec-serializejsonobject', + SerializeJSONProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-serializejsonproperty', + Set: 'https://ecma-international.org/ecma-262/10.0/#sec-set-o-p-v-throw', + SetDefaultGlobalBindings: 'https://ecma-international.org/ecma-262/10.0/#sec-setdefaultglobalbindings', + SetFunctionLength: 'https://ecma-international.org/ecma-262/10.0/#sec-setfunctionlength', + SetFunctionName: 'https://ecma-international.org/ecma-262/10.0/#sec-setfunctionname', + SetImmutablePrototype: 'https://ecma-international.org/ecma-262/10.0/#sec-set-immutable-prototype', + SetIntegrityLevel: 'https://ecma-international.org/ecma-262/10.0/#sec-setintegritylevel', + SetRealmGlobalObject: 'https://ecma-international.org/ecma-262/10.0/#sec-setrealmglobalobject', + SetValueInBuffer: 'https://ecma-international.org/ecma-262/10.0/#sec-setvalueinbuffer', + SetViewValue: 'https://ecma-international.org/ecma-262/10.0/#sec-setviewvalue', + SharedDataBlockEventSet: 'https://ecma-international.org/ecma-262/10.0/#sec-sharedatablockeventset', + SortCompare: 'https://ecma-international.org/ecma-262/10.0/#sec-sortcompare', + SpeciesConstructor: 'https://ecma-international.org/ecma-262/10.0/#sec-speciesconstructor', + SplitMatch: 'https://ecma-international.org/ecma-262/10.0/#sec-splitmatch', + 'Strict Equality Comparison': 'https://ecma-international.org/ecma-262/10.0/#sec-strict-equality-comparison', + StringCreate: 'https://ecma-international.org/ecma-262/10.0/#sec-stringcreate', + StringGetOwnProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-stringgetownproperty', + Suspend: 'https://ecma-international.org/ecma-262/10.0/#sec-suspend', + SymbolDescriptiveString: 'https://ecma-international.org/ecma-262/10.0/#sec-symboldescriptivestring', + SynchronizeEventSet: 'https://ecma-international.org/ecma-262/10.0/#sec-synchronizeeventset', + 'synchronizes-with': 'https://ecma-international.org/ecma-262/10.0/#sec-synchronizes-with', + TestIntegrityLevel: 'https://ecma-international.org/ecma-262/10.0/#sec-testintegritylevel', + thisBooleanValue: 'https://ecma-international.org/ecma-262/10.0/#sec-thisbooleanvalue', + thisNumberValue: 'https://ecma-international.org/ecma-262/10.0/#sec-thisnumbervalue', + thisStringValue: 'https://ecma-international.org/ecma-262/10.0/#sec-thisstringvalue', + thisSymbolValue: 'https://ecma-international.org/ecma-262/10.0/#sec-thissymbolvalue', + thisTimeValue: 'https://ecma-international.org/ecma-262/10.0/#sec-thistimevalue', + ThrowCompletion: 'https://ecma-international.org/ecma-262/10.0/#sec-throwcompletion', + TimeClip: 'https://ecma-international.org/ecma-262/10.0/#sec-timeclip', + TimeFromYear: 'https://ecma-international.org/ecma-262/10.0/#eqn-TimeFromYear', + TimeString: 'https://ecma-international.org/ecma-262/10.0/#sec-timestring', + TimeWithinDay: 'https://ecma-international.org/ecma-262/10.0/#eqn-TimeWithinDay', + TimeZoneString: 'https://ecma-international.org/ecma-262/10.0/#sec-timezoneestring', + ToBoolean: 'https://ecma-international.org/ecma-262/10.0/#sec-toboolean', + ToDateString: 'https://ecma-international.org/ecma-262/10.0/#sec-todatestring', + ToIndex: 'https://ecma-international.org/ecma-262/10.0/#sec-toindex', + ToInt16: 'https://ecma-international.org/ecma-262/10.0/#sec-toint16', + ToInt32: 'https://ecma-international.org/ecma-262/10.0/#sec-toint32', + ToInt8: 'https://ecma-international.org/ecma-262/10.0/#sec-toint8', + ToInteger: 'https://ecma-international.org/ecma-262/10.0/#sec-tointeger', + ToLength: 'https://ecma-international.org/ecma-262/10.0/#sec-tolength', + ToNumber: 'https://ecma-international.org/ecma-262/10.0/#sec-tonumber', + ToObject: 'https://ecma-international.org/ecma-262/10.0/#sec-toobject', + TopLevelModuleEvaluationJob: 'https://ecma-international.org/ecma-262/10.0/#sec-toplevelmoduleevaluationjob', + ToPrimitive: 'https://ecma-international.org/ecma-262/10.0/#sec-toprimitive', + ToPropertyDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-topropertydescriptor', + ToPropertyKey: 'https://ecma-international.org/ecma-262/10.0/#sec-topropertykey', + ToString: 'https://ecma-international.org/ecma-262/10.0/#sec-tostring', + ToUint16: 'https://ecma-international.org/ecma-262/10.0/#sec-touint16', + ToUint32: 'https://ecma-international.org/ecma-262/10.0/#sec-touint32', + ToUint8: 'https://ecma-international.org/ecma-262/10.0/#sec-touint8', + ToUint8Clamp: 'https://ecma-international.org/ecma-262/10.0/#sec-touint8clamp', + TriggerPromiseReactions: 'https://ecma-international.org/ecma-262/10.0/#sec-triggerpromisereactions', + TrimString: 'https://ecma-international.org/ecma-262/10.0/#sec-trimstring', + Type: 'https://ecma-international.org/ecma-262/10.0/#sec-ecmascript-data-types-and-values', + TypedArrayCreate: 'https://ecma-international.org/ecma-262/10.0/#typedarray-create', + TypedArraySpeciesCreate: 'https://ecma-international.org/ecma-262/10.0/#typedarray-species-create', + UnicodeEscape: 'https://ecma-international.org/ecma-262/10.0/#sec-unicodeescape', + UnicodeMatchProperty: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-unicodematchproperty-p', + UnicodeMatchPropertyValue: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-unicodematchpropertyvalue-p-v', + UpdateEmpty: 'https://ecma-international.org/ecma-262/10.0/#sec-updateempty', + UTC: 'https://ecma-international.org/ecma-262/10.0/#sec-utc-t', + UTF16Decode: 'https://ecma-international.org/ecma-262/10.0/#sec-utf16decode', + UTF16Encoding: 'https://ecma-international.org/ecma-262/10.0/#sec-utf16encoding', + ValidateAndApplyPropertyDescriptor: 'https://ecma-international.org/ecma-262/10.0/#sec-validateandapplypropertydescriptor', + ValidateAtomicAccess: 'https://ecma-international.org/ecma-262/10.0/#sec-validateatomicaccess', + ValidateSharedIntegerTypedArray: 'https://ecma-international.org/ecma-262/10.0/#sec-validatesharedintegertypedarray', + ValidateTypedArray: 'https://ecma-international.org/ecma-262/10.0/#sec-validatetypedarray', + ValueOfReadEvent: 'https://ecma-international.org/ecma-262/10.0/#sec-valueofreadevent', + WeekDay: 'https://ecma-international.org/ecma-262/10.0/#sec-week-day', + WordCharacters: 'https://ecma-international.org/ecma-262/10.0/#sec-runtime-semantics-wordcharacters-abstract-operation', + YearFromTime: 'https://ecma-international.org/ecma-262/10.0/#eqn-YearFromTime' +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/package.json b/tic-tac-toe-app/node_modules/es-abstract/package.json new file mode 100644 index 0000000..4cca483 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/package.json @@ -0,0 +1,150 @@ +{ + "_from": "es-abstract@^1.17.0-next.1", + "_id": "es-abstract@1.17.5", + "_inBundle": false, + "_integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "_location": "/es-abstract", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "es-abstract@^1.17.0-next.1", + "name": "es-abstract", + "escapedName": "es-abstract", + "rawSpec": "^1.17.0-next.1", + "saveSpec": null, + "fetchSpec": "^1.17.0-next.1" + }, + "_requiredBy": [ + "/array-includes", + "/array.prototype.flat", + "/internal-slot", + "/object.entries", + "/object.fromentries", + "/object.values", + "/regexp.prototype.flags", + "/side-channel", + "/string.prototype.matchall", + "/string.prototype.trimend", + "/string.prototype.trimleft", + "/string.prototype.trimright", + "/string.prototype.trimstart" + ], + "_resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "_shasum": "d8c9d1d66c8981fb9200e2251d799eee92774ae9", + "_spec": "es-abstract@^1.17.0-next.1", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/object.entries", + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "bugs": { + "url": "https://github.com/ljharb/es-abstract/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "deprecated": false, + "description": "ECMAScript spec abstract operations.", + "devDependencies": { + "@ljharb/eslint-config": "^16.0.0", + "array.prototype.indexof": "^1.0.0", + "cheerio": "^1.0.0-rc.3", + "diff": "^4.0.2", + "eclint": "^2.8.1", + "eslint": "^6.8.0", + "foreach": "^2.0.5", + "functions-have-names": "^1.2.1", + "has-strict-mode": "^1.0.0", + "in-publish": "^2.0.0", + "make-arrow-function": "^1.2.0", + "nyc": "^10.3.2", + "object-is": "^1.0.2", + "object.fromentries": "^2.0.2", + "safe-publish-latest": "^1.1.4", + "tape": "^5.0.0-next.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "greenkeeper": { + "//": "nyc is ignored because it requires node 4+, and we support older than that", + "ignore": [ + "nyc" + ] + }, + "homepage": "https://github.com/ljharb/es-abstract#readme", + "keywords": [ + "ECMAScript", + "ES", + "abstract", + "operation", + "abstract operation", + "JavaScript", + "ES5", + "ES6", + "ES7" + ], + "license": "MIT", + "main": "index.js", + "name": "es-abstract", + "repository": { + "type": "git", + "url": "git://github.com/ljharb/es-abstract.git" + }, + "scripts": { + "coverage": "nyc npm run tests-only >/dev/null", + "eccheck": "eclint check *.js **/*.js > /dev/null", + "lint": "eslint .", + "postcoverage": "nyc report", + "postspackle": "git ls-files | xargs git check-attr spackled | grep -v 'unspecified$' | cut -d: -f1 | xargs git add", + "posttest": "npx aud --production", + "prepublish": "safe-publish-latest && (not-in-publish || npm run spackle)", + "prespackle": "git ls-files | xargs git check-attr spackled | grep -v 'unspecified$' | cut -d: -f1 | xargs rm || true", + "pretest": "npm run lint", + "spackle": "node operations/spackle 1", + "test": "npm run tests-only", + "tests-only": "node test" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "version": "1.17.5" +} diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/GetIntrinsic.js b/tic-tac-toe-app/node_modules/es-abstract/test/GetIntrinsic.js new file mode 100644 index 0000000..a3e69a7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/GetIntrinsic.js @@ -0,0 +1,94 @@ +'use strict'; + +var GetIntrinsic = require('../GetIntrinsic'); + +var test = require('tape'); +var forEach = require('foreach'); +var debug = require('object-inspect'); + +var v = require('./helpers/values'); + +test('export', function (t) { + t.equal(typeof GetIntrinsic, 'function', 'it is a function'); + t.equal(GetIntrinsic.length, 2, 'function has length of 2'); + + t.end(); +}); + +test('throws', function (t) { + t['throws']( + function () { GetIntrinsic('not an intrinsic'); }, + SyntaxError, + 'nonexistent intrinsic throws a syntax error' + ); + + t['throws']( + function () { GetIntrinsic(''); }, + TypeError, + 'empty string intrinsic throws a type error' + ); + + t['throws']( + function () { GetIntrinsic('.'); }, + SyntaxError, + '"just a dot" intrinsic throws a syntax error' + ); + + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { GetIntrinsic(nonString); }, + TypeError, + debug(nonString) + ' is not a String' + ); + }); + + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { GetIntrinsic('%', nonBoolean); }, + TypeError, + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + forEach([ + 'toString', + 'propertyIsEnumerable', + 'hasOwnProperty' + ], function (objectProtoMember) { + t['throws']( + function () { GetIntrinsic(objectProtoMember); }, + SyntaxError, + debug(objectProtoMember) + ' is not an intrinsic' + ); + }); + + t.end(); +}); + +test('base intrinsics', function (t) { + t.equal(GetIntrinsic('%Object%'), Object, '%Object% yields Object'); + t.equal(GetIntrinsic('Object'), Object, 'Object yields Object'); + t.equal(GetIntrinsic('%Array%'), Array, '%Array% yields Array'); + t.equal(GetIntrinsic('Array'), Array, 'Array yields Array'); + + t.end(); +}); + +test('dotted paths', function (t) { + t.equal(GetIntrinsic('%Object.prototype.toString%'), Object.prototype.toString, '%Object.prototype.toString% yields Object.prototype.toString'); + t.equal(GetIntrinsic('Object.prototype.toString'), Object.prototype.toString, 'Object.prototype.toString yields Object.prototype.toString'); + t.equal(GetIntrinsic('%Array.prototype.push%'), Array.prototype.push, '%Array.prototype.push% yields Array.prototype.push'); + t.equal(GetIntrinsic('Array.prototype.push'), Array.prototype.push, 'Array.prototype.push yields Array.prototype.push'); + + t.end(); +}); + +test('accessors', { skip: !Object.getOwnPropertyDescriptor || typeof Map !== 'function' }, function (t) { + var actual = Object.getOwnPropertyDescriptor(Map.prototype, 'size'); + t.ok(actual, 'Map.prototype.size has a descriptor'); + t.equal(typeof actual.get, 'function', 'Map.prototype.size has a getter function'); + t.equal(GetIntrinsic('%Map.prototype.size%'), actual.get, '%Map.prototype.size% yields the getter for it'); + t.equal(GetIntrinsic('Map.prototype.size'), actual.get, 'Map.prototype.size yields the getter for it'); + + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/diffOps.js b/tic-tac-toe-app/node_modules/es-abstract/test/diffOps.js new file mode 100644 index 0000000..602098d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/diffOps.js @@ -0,0 +1,27 @@ +'use strict'; + +var keys = require('object-keys'); +var forEach = require('foreach'); +var indexOf = require('array.prototype.indexof'); + +module.exports = function diffOperations(actual, expected, expectedMissing) { + var actualKeys = keys(actual); + var expectedKeys = keys(expected); + + var extra = []; + var missing = []; + forEach(actualKeys, function (op) { + if (!(op in expected)) { + extra.push(op); + } else if (indexOf(expectedMissing, op) !== -1) { + extra.push(op); + } + }); + forEach(expectedKeys, function (op) { + if (typeof actual[op] !== 'function' && indexOf(expectedMissing, op) === -1) { + missing.push(op); + } + }); + + return { missing: missing, extra: extra }; +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es2015.js b/tic-tac-toe-app/node_modules/es-abstract/test/es2015.js new file mode 100644 index 0000000..6db4d6d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es2015.js @@ -0,0 +1,11 @@ +'use strict'; + +var ES = require('../').ES2015; + +var ops = require('../operations/2015'); + +var expectedMissing = ['Construct', 'CreateArrayFromList', 'CreateListIterator', 'NormalCompletion', 'RegExpBuiltinExec']; + +require('./tests').es2015(ES, ops, expectedMissing); + +require('./helpers/runManifestTest')(require('tape'), ES, 2015); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es2016.js b/tic-tac-toe-app/node_modules/es-abstract/test/es2016.js new file mode 100644 index 0000000..27115f7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es2016.js @@ -0,0 +1,11 @@ +'use strict'; + +var ES = require('../').ES2016; + +var ops = require('../operations/2016'); + +var expectedMissing = ['AddRestrictedFunctionProperties', 'AllocateArrayBuffer', 'AllocateTypedArray', 'AllocateTypedArrayBuffer', 'BlockDeclarationInstantiation', 'BoundFunctionCreate', 'Canonicalize', 'CharacterRange', 'CharacterRangeOrUnion', 'CharacterSetMatcher', 'CloneArrayBuffer', 'Completion', 'Construct', 'CopyDataBlockBytes', 'CreateArrayFromList', 'CreateArrayIterator', 'CreateBuiltinFunction', 'CreateByteDataBlock', 'CreateDynamicFunction', 'CreateIntrinsics', 'CreateListIterator', 'CreateMapIterator', 'CreateMappedArgumentsObject', 'CreatePerIterationEnvironment', 'CreateRealm', 'CreateResolvingFunctions', 'CreateSetIterator', 'CreateStringIterator', 'CreateUnmappedArgumentsObject', 'Decode', 'DetachArrayBuffer', 'Encode', 'EnqueueJob', 'EnumerateObjectProperties', 'EscapeRegExpPattern', 'EvalDeclarationInstantiation', 'EvaluateCall', 'EvaluateDirectCall', 'EvaluateNew', 'ForBodyEvaluation', 'ForIn/OfBodyEvaluation', 'ForIn/OfHeadEvaluation', 'FulfillPromise', 'FunctionAllocate', 'FunctionCreate', 'FunctionDeclarationInstantiation', 'FunctionInitialize', 'GeneratorFunctionCreate', 'GeneratorResume', 'GeneratorResumeAbrupt', 'GeneratorStart', 'GeneratorValidate', 'GeneratorYield', 'GetActiveScriptOrModule', 'GetFunctionRealm', 'GetGlobalObject', 'GetIdentifierReference', 'GetModuleNamespace', 'GetNewTarget', 'GetSuperConstructor', 'GetTemplateObject', 'GetThisEnvironment', 'GetThisValue', 'GetValue', 'GetValueFromBuffer', 'GetViewValue', 'GlobalDeclarationInstantiation', 'HostPromiseRejectionTracker', 'HostReportErrors', 'HostResolveImportedModule', 'IfAbruptRejectPromise', 'ImportedLocalNames', 'InitializeBoundName', 'InitializeHostDefinedRealm', 'InitializeReferencedBinding', 'IntegerIndexedElementGet', 'IntegerIndexedElementSet', 'IntegerIndexedObjectCreate', 'InternalizeJSONProperty', 'IsAnonymousFunctionDefinition', 'IsCompatiblePropertyDescriptor', 'IsDetachedBuffer', 'IsInTailPosition', 'IsLabelledFunction', 'IsWordChar', 'LocalTime', 'LoopContinues', 'MakeArgGetter', 'MakeArgSetter', 'MakeClassConstructor', 'MakeConstructor', 'MakeMethod', 'MakeSuperPropertyReference', 'ModuleNamespaceCreate', 'NewDeclarativeEnvironment', 'NewFunctionEnvironment', 'NewGlobalEnvironment', 'NewModuleEnvironment', 'NewObjectEnvironment', 'NewPromiseCapability', 'NextJob', 'NormalCompletion', 'ObjectDefineProperties', 'OrdinaryCallBindThis', 'OrdinaryCallEvaluateBody', 'OrdinaryCreateFromConstructor', 'OrdinaryDelete', 'OrdinaryGet', 'OrdinaryIsExtensible', 'OrdinaryOwnPropertyKeys', 'OrdinaryPreventExtensions', 'OrdinarySet', 'ParseModule', 'ParseScript', 'PerformEval', 'PerformPromiseAll', 'PerformPromiseRace', 'PerformPromiseThen', 'PrepareForOrdinaryCall', 'PrepareForTailCall', 'PromiseReactionJob', 'PromiseResolveThenableJob', 'ProxyCreate', 'PutValue', 'QuoteJSONString', 'RegExpAlloc', 'RegExpBuiltinExec', 'RegExpCreate', 'RegExpInitialize', 'RejectPromise', 'RepeatMatcher', 'ResolveBinding', 'ResolveThisBinding', 'ReturnIfAbrupt', 'ScriptEvaluation', 'ScriptEvaluationJob', 'SerializeJSONArray', 'SerializeJSONObject', 'SerializeJSONProperty', 'SetDefaultGlobalBindings', 'SetRealmGlobalObject', 'SetValueInBuffer', 'SetViewValue', 'SortCompare', 'SplitMatch', 'StringCreate', 'ToString Applied to the Number Type', 'TopLevelModuleEvaluationJob', 'TriggerPromiseReactions', 'TypedArrayCreate', 'TypedArraySpeciesCreate', 'UTC', 'UTF16Decode', 'UTF16Encoding', 'UpdateEmpty', 'ValidateTypedArray', 'abs', 'floor', 'max', 'min']; + +require('./tests').es2016(ES, ops, expectedMissing); + +require('./helpers/runManifestTest')(require('tape'), ES, 2016); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es2017.js b/tic-tac-toe-app/node_modules/es-abstract/test/es2017.js new file mode 100644 index 0000000..cabff70 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es2017.js @@ -0,0 +1,11 @@ +'use strict'; + +var ES = require('../').ES2017; + +var ops = require('../operations/2017'); + +var expectedMissing = ['AddRestrictedFunctionProperties', 'AddWaiter', 'AgentCanSuspend', 'AgentSignifier', 'AllocateArrayBuffer', 'AllocateSharedArrayBuffer', 'AllocateTypedArray', 'AllocateTypedArrayBuffer', 'AsyncFunctionAwait', 'AsyncFunctionCreate', 'AsyncFunctionStart', 'AtomicLoad', 'AtomicReadModifyWrite', 'BlockDeclarationInstantiation', 'BoundFunctionCreate', 'Canonicalize', 'CharacterRange', 'CharacterRangeOrUnion', 'CharacterSetMatcher', 'CloneArrayBuffer', 'Completion', 'ComposeWriteEventBytes', 'Construct', 'CopyDataBlockBytes', 'CreateArrayFromList', 'CreateArrayIterator', 'CreateBuiltinFunction', 'CreateByteDataBlock', 'CreateDynamicFunction', 'CreateIntrinsics', 'CreateListIterator', 'CreateMapIterator', 'CreateMappedArgumentsObject', 'CreatePerIterationEnvironment', 'CreateRealm', 'CreateResolvingFunctions', 'CreateSetIterator', 'CreateSharedByteDataBlock', 'CreateStringIterator', 'CreateUnmappedArgumentsObject', 'Decode', 'DetachArrayBuffer', 'Encode', 'EnqueueJob', 'EnterCriticalSection', 'EnumerateObjectProperties', 'EscapeRegExpPattern', 'EvalDeclarationInstantiation', 'EvaluateCall', 'EvaluateDirectCall', 'EvaluateNew', 'EventSet', 'ForBodyEvaluation', 'ForIn/OfBodyEvaluation', 'ForIn/OfHeadEvaluation', 'FulfillPromise', 'FunctionAllocate', 'FunctionCreate', 'FunctionDeclarationInstantiation', 'FunctionInitialize', 'GeneratorFunctionCreate', 'GeneratorResume', 'GeneratorResumeAbrupt', 'GeneratorStart', 'GeneratorValidate', 'GeneratorYield', 'GetActiveScriptOrModule', 'GetBase', 'GetFunctionRealm', 'GetGlobalObject', 'GetIdentifierReference', 'GetModifySetValueInBuffer', 'GetModuleNamespace', 'GetNewTarget', 'GetReferencedName', 'GetSuperConstructor', 'GetTemplateObject', 'GetThisEnvironment', 'GetThisValue', 'GetValue', 'GetValueFromBuffer', 'GetViewValue', 'GetWaiterList', 'GlobalDeclarationInstantiation', 'HasPrimitiveBase', 'HostEnsureCanCompileStrings', 'HostEventSet', 'HostPromiseRejectionTracker', 'HostReportErrors', 'HostResolveImportedModule', 'IfAbruptRejectPromise', 'ImportedLocalNames', 'InitializeBoundName', 'InitializeHostDefinedRealm', 'InitializeReferencedBinding', 'IntegerIndexedElementGet', 'IntegerIndexedElementSet', 'IntegerIndexedObjectCreate', 'InternalizeJSONProperty', 'IsAnonymousFunctionDefinition', 'IsCompatiblePropertyDescriptor', 'IsDetachedBuffer', 'IsInTailPosition', 'IsLabelledFunction', 'IsPropertyReference', 'IsSharedArrayBuffer', 'IsStrictReference', 'IsSuperReference', 'IsUnresolvableReference', 'IsWordChar', 'LeaveCriticalSection', 'LocalTime', 'LoopContinues', 'MakeArgGetter', 'MakeArgSetter', 'MakeClassConstructor', 'MakeConstructor', 'MakeMethod', 'MakeSuperPropertyReference', 'ModuleNamespaceCreate', 'NewDeclarativeEnvironment', 'NewFunctionEnvironment', 'NewGlobalEnvironment', 'NewModuleEnvironment', 'NewObjectEnvironment', 'NewPromiseCapability', 'NormalCompletion', 'NumberToRawBytes', 'ObjectDefineProperties', 'OrdinaryCallBindThis', 'OrdinaryCallEvaluateBody', 'OrdinaryCreateFromConstructor', 'OrdinaryDelete', 'OrdinaryGet', 'OrdinaryIsExtensible', 'OrdinaryOwnPropertyKeys', 'OrdinaryPreventExtensions', 'OrdinarySet', 'OrdinaryToPrimitive', 'ParseModule', 'ParseScript', 'PerformEval', 'PerformPromiseAll', 'PerformPromiseRace', 'PerformPromiseThen', 'PrepareForOrdinaryCall', 'PrepareForTailCall', 'PromiseReactionJob', 'PromiseResolveThenableJob', 'ProxyCreate', 'PutValue', 'QuoteJSONString', 'RawBytesToNumber', 'RegExpAlloc', 'RegExpBuiltinExec', 'RegExpCreate', 'RegExpInitialize', 'RejectPromise', 'RemoveWaiter', 'RemoveWaiters', 'RepeatMatcher', 'ResolveBinding', 'ResolveThisBinding', 'ReturnIfAbrupt', 'RunJobs', 'ScriptEvaluation', 'ScriptEvaluationJob', 'SerializeJSONArray', 'SerializeJSONObject', 'SerializeJSONProperty', 'SetDefaultGlobalBindings', 'SetImmutablePrototype', 'SetRealmGlobalObject', 'SetValueInBuffer', 'SetViewValue', 'SharedDataBlockEventSet', 'SortCompare', 'SplitMatch', 'StringCreate', 'StringGetOwnProperty', 'Suspend', 'ToString Applied to the Number Type', 'TopLevelModuleEvaluationJob', 'TriggerPromiseReactions', 'TypedArrayCreate', 'TypedArraySpeciesCreate', 'UTC', 'UTF16Decode', 'UTF16Encoding', 'UpdateEmpty', 'ValidateAtomicAccess', 'ValidateSharedIntegerTypedArray', 'ValidateTypedArray', 'ValueOfReadEvent', 'WakeWaiter', 'WordCharacters', 'abs', 'agent-order', 'floor', 'happens-before', 'host-synchronizes-with', 'max', 'memory-order', 'min', 'reads-bytes-from', 'reads-from', 'synchronizes-with']; + +require('./tests').es2017(ES, ops, expectedMissing); + +require('./helpers/runManifestTest')(require('tape'), ES, 2017); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es2018.js b/tic-tac-toe-app/node_modules/es-abstract/test/es2018.js new file mode 100644 index 0000000..df18627 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es2018.js @@ -0,0 +1,11 @@ +'use strict'; + +var ES = require('../').ES2018; + +var ops = require('../operations/2018'); + +var expectedMissing = ['abs', 'AddRestrictedFunctionProperties', 'AddWaiter', 'agent-order', 'AgentCanSuspend', 'AgentSignifier', 'AllocateArrayBuffer', 'AllocateSharedArrayBuffer', 'AllocateTypedArray', 'AllocateTypedArrayBuffer', 'AsyncFunctionStart', 'AsyncGeneratorEnqueue', 'AsyncGeneratorReject', 'AsyncGeneratorResolve', 'AsyncGeneratorResumeNext', 'AsyncGeneratorStart', 'AsyncGeneratorYield', 'AtomicLoad', 'AtomicReadModifyWrite', 'Await', 'BlockDeclarationInstantiation', 'BoundFunctionCreate', 'Canonicalize', 'CaseClauseIsSelected', 'CharacterRange', 'CharacterRangeOrUnion', 'CharacterSetMatcher', 'CloneArrayBuffer', 'Completion', 'ComposeWriteEventBytes', 'CopyDataBlockBytes', 'CreateArrayIterator', 'CreateAsyncFromSyncIterator', 'CreateBuiltinFunction', 'CreateByteDataBlock', 'CreateDynamicFunction', 'CreateIntrinsics', 'CreateMapIterator', 'CreateMappedArgumentsObject', 'CreatePerIterationEnvironment', 'CreateRealm', 'CreateResolvingFunctions', 'CreateSetIterator', 'CreateSharedByteDataBlock', 'CreateStringIterator', 'CreateUnmappedArgumentsObject', 'Decode', 'DetachArrayBuffer', 'Encode', 'EnqueueJob', 'EnterCriticalSection', 'EnumerateObjectProperties', 'EscapeRegExpPattern', 'EvalDeclarationInstantiation', 'EvaluateCall', 'EvaluateNew', 'EventSet', 'floor', 'ForBodyEvaluation', 'ForIn/OfBodyEvaluation', 'ForIn/OfHeadEvaluation', 'FulfillPromise', 'FunctionAllocate', 'FunctionCreate', 'FunctionDeclarationInstantiation', 'FunctionInitialize', 'GeneratorFunctionCreate', 'GeneratorResume', 'GeneratorResumeAbrupt', 'GeneratorStart', 'GeneratorValidate', 'GeneratorYield', 'GetActiveScriptOrModule', 'GetBase', 'GetFunctionRealm', 'GetGeneratorKind', 'GetGlobalObject', 'GetIdentifierReference', 'GetModifySetValueInBuffer', 'GetModuleNamespace', 'GetNewTarget', 'GetReferencedName', 'GetSuperConstructor', 'GetTemplateObject', 'GetThisEnvironment', 'GetThisValue', 'GetValue', 'GetValueFromBuffer', 'GetViewValue', 'GetWaiterList', 'GlobalDeclarationInstantiation', 'happens-before', 'HasPrimitiveBase', 'host-synchronizes-with', 'HostEnsureCanCompileStrings', 'HostEventSet', 'HostPromiseRejectionTracker', 'HostReportErrors', 'HostResolveImportedModule', 'IfAbruptRejectPromise', 'ImportedLocalNames', 'InitializeBoundName', 'InitializeHostDefinedRealm', 'InitializeReferencedBinding', 'InnerModuleEvaluation', 'InnerModuleInstantiation', 'IntegerIndexedElementGet', 'IntegerIndexedElementSet', 'IntegerIndexedObjectCreate', 'InternalizeJSONProperty', 'IsAnonymousFunctionDefinition', 'IsCompatiblePropertyDescriptor', 'IsDetachedBuffer', 'IsInTailPosition', 'IsLabelledFunction', 'IsPropertyReference', 'IsSharedArrayBuffer', 'IsStrictReference', 'IsSuperReference', 'IsUnresolvableReference', 'IsWordChar', 'LeaveCriticalSection', 'LocalTime', 'LoopContinues', 'MakeArgGetter', 'MakeArgSetter', 'MakeClassConstructor', 'MakeConstructor', 'MakeMethod', 'MakeSuperPropertyReference', 'max', 'memory-order', 'min', 'ModuleDeclarationEnvironmentSetup', 'ModuleExecution', 'ModuleNamespaceCreate', 'NewDeclarativeEnvironment', 'NewFunctionEnvironment', 'NewGlobalEnvironment', 'NewModuleEnvironment', 'NewObjectEnvironment', 'NewPromiseCapability', 'NumberToRawBytes', 'ObjectDefineProperties', 'OrdinaryCallBindThis', 'OrdinaryCallEvaluateBody', 'OrdinaryCreateFromConstructor', 'OrdinaryDelete', 'OrdinaryGet', 'OrdinaryIsExtensible', 'OrdinaryOwnPropertyKeys', 'OrdinaryPreventExtensions', 'OrdinaryToPrimitive', 'ParseModule', 'ParseScript', 'PerformEval', 'PerformPromiseAll', 'PerformPromiseRace', 'PerformPromiseThen', 'PrepareForOrdinaryCall', 'PrepareForTailCall', 'PromiseReactionJob', 'PromiseResolveThenableJob', 'ProxyCreate', 'PutValue', 'QuoteJSONString', 'RawBytesToNumber', 'reads-bytes-from', 'reads-from', 'RegExpAlloc', 'RegExpCreate', 'RegExpInitialize', 'RejectPromise', 'RemoveWaiter', 'RemoveWaiters', 'RepeatMatcher', 'ResolveBinding', 'ResolveThisBinding', 'ReturnIfAbrupt', 'RunJobs', 'ScriptEvaluation', 'ScriptEvaluationJob', 'SerializeJSONArray', 'SerializeJSONObject', 'SerializeJSONProperty', 'SetDefaultGlobalBindings', 'SetImmutablePrototype', 'SetRealmGlobalObject', 'SetValueInBuffer', 'SetViewValue', 'SharedDataBlockEventSet', 'SortCompare', 'SplitMatch', 'StringCreate', 'StringGetOwnProperty', 'Suspend', 'synchronizes-with', 'TimeZoneString', 'TopLevelModuleEvaluationJob', 'TriggerPromiseReactions', 'TypedArrayCreate', 'TypedArraySpeciesCreate', 'UnicodeEscape', 'UpdateEmpty', 'UTC', 'UTF16Decode', 'UTF16Encoding', 'ValidateAtomicAccess', 'ValidateSharedIntegerTypedArray', 'ValidateTypedArray', 'ValueOfReadEvent', 'WakeWaiter', 'WordCharacters', 'AsyncFunctionCreate', 'AsyncGeneratorFunctionCreate', 'AsyncIteratorClose', 'BackreferenceMatcher', 'Construct', 'CreateArrayFromList', 'CreateListIteratorRecord', 'NormalCompletion', 'OrdinarySet', 'OrdinarySetWithOwnDescriptor', 'RegExpBuiltinExec', 'SetFunctionLength', 'ThrowCompletion', 'UnicodeMatchProperty', 'UnicodeMatchPropertyValue']; + +require('./tests').es2018(ES, ops, expectedMissing); + +require('./helpers/runManifestTest')(require('tape'), ES, 2018); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es2019.js b/tic-tac-toe-app/node_modules/es-abstract/test/es2019.js new file mode 100644 index 0000000..c0486a0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es2019.js @@ -0,0 +1,11 @@ +'use strict'; + +var ES = require('../').ES2019; + +var ops = require('../operations/2019'); + +var expectedMissing = ['abs', 'AddRestrictedFunctionProperties', 'AddWaiter', 'agent-order', 'AgentCanSuspend', 'AgentSignifier', 'AllocateArrayBuffer', 'AllocateSharedArrayBuffer', 'AllocateTypedArray', 'AllocateTypedArrayBuffer', 'AsyncFunctionStart', 'AsyncGeneratorEnqueue', 'AsyncGeneratorReject', 'AsyncGeneratorResolve', 'AsyncGeneratorResumeNext', 'AsyncGeneratorStart', 'AsyncGeneratorYield', 'AtomicLoad', 'AtomicReadModifyWrite', 'Await', 'BlockDeclarationInstantiation', 'BoundFunctionCreate', 'Canonicalize', 'CaseClauseIsSelected', 'CharacterRange', 'CharacterRangeOrUnion', 'CharacterSetMatcher', 'CloneArrayBuffer', 'Completion', 'ComposeWriteEventBytes', 'CopyDataBlockBytes', 'CreateArrayIterator', 'CreateAsyncFromSyncIterator', 'CreateBuiltinFunction', 'CreateByteDataBlock', 'CreateDynamicFunction', 'CreateIntrinsics', 'CreateMapIterator', 'CreateMappedArgumentsObject', 'CreatePerIterationEnvironment', 'CreateRealm', 'CreateResolvingFunctions', 'CreateSetIterator', 'CreateSharedByteDataBlock', 'CreateStringIterator', 'CreateUnmappedArgumentsObject', 'Decode', 'DetachArrayBuffer', 'Encode', 'EnqueueJob', 'EnterCriticalSection', 'EnumerateObjectProperties', 'EscapeRegExpPattern', 'EvalDeclarationInstantiation', 'EvaluateCall', 'EvaluateNew', 'EventSet', 'floor', 'ForBodyEvaluation', 'ForIn/OfBodyEvaluation', 'ForIn/OfHeadEvaluation', 'FulfillPromise', 'FunctionAllocate', 'FunctionCreate', 'FunctionDeclarationInstantiation', 'FunctionInitialize', 'GeneratorFunctionCreate', 'GeneratorResume', 'GeneratorResumeAbrupt', 'GeneratorStart', 'GeneratorValidate', 'GeneratorYield', 'GetActiveScriptOrModule', 'GetBase', 'GetFunctionRealm', 'GetGeneratorKind', 'GetGlobalObject', 'GetIdentifierReference', 'GetModifySetValueInBuffer', 'GetModuleNamespace', 'GetNewTarget', 'GetReferencedName', 'GetSuperConstructor', 'GetTemplateObject', 'GetThisEnvironment', 'GetThisValue', 'GetValue', 'GetValueFromBuffer', 'GetViewValue', 'GetWaiterList', 'GlobalDeclarationInstantiation', 'happens-before', 'HasPrimitiveBase', 'host-synchronizes-with', 'HostEnsureCanCompileStrings', 'HostEventSet', 'HostPromiseRejectionTracker', 'HostReportErrors', 'HostResolveImportedModule', 'IfAbruptRejectPromise', 'ImportedLocalNames', 'InitializeBoundName', 'InitializeHostDefinedRealm', 'InitializeReferencedBinding', 'InnerModuleEvaluation', 'InnerModuleInstantiation', 'IntegerIndexedElementGet', 'IntegerIndexedElementSet', 'IntegerIndexedObjectCreate', 'InternalizeJSONProperty', 'IsAnonymousFunctionDefinition', 'IsCompatiblePropertyDescriptor', 'IsDetachedBuffer', 'IsInTailPosition', 'IsLabelledFunction', 'IsPropertyReference', 'IsSharedArrayBuffer', 'IsStrictReference', 'IsSuperReference', 'IsUnresolvableReference', 'IsWordChar', 'LeaveCriticalSection', 'LocalTime', 'LoopContinues', 'MakeArgGetter', 'MakeArgSetter', 'MakeClassConstructor', 'MakeConstructor', 'MakeMethod', 'MakeSuperPropertyReference', 'max', 'memory-order', 'min', 'ModuleDeclarationEnvironmentSetup', 'ModuleExecution', 'ModuleNamespaceCreate', 'NewDeclarativeEnvironment', 'NewFunctionEnvironment', 'NewGlobalEnvironment', 'NewModuleEnvironment', 'NewObjectEnvironment', 'NewPromiseCapability', 'NumberToRawBytes', 'ObjectDefineProperties', 'OrdinaryCallBindThis', 'OrdinaryCallEvaluateBody', 'OrdinaryCreateFromConstructor', 'OrdinaryDelete', 'OrdinaryGet', 'OrdinaryIsExtensible', 'OrdinaryOwnPropertyKeys', 'OrdinaryPreventExtensions', 'OrdinaryToPrimitive', 'ParseModule', 'ParseScript', 'PerformEval', 'PerformPromiseAll', 'PerformPromiseRace', 'PerformPromiseThen', 'PrepareForOrdinaryCall', 'PrepareForTailCall', 'PromiseReactionJob', 'PromiseResolveThenableJob', 'ProxyCreate', 'PutValue', 'QuoteJSONString', 'RawBytesToNumber', 'reads-bytes-from', 'reads-from', 'RegExpAlloc', 'RegExpCreate', 'RegExpInitialize', 'RejectPromise', 'RemoveWaiter', 'RemoveWaiters', 'RepeatMatcher', 'ResolveBinding', 'ResolveThisBinding', 'ReturnIfAbrupt', 'RunJobs', 'ScriptEvaluation', 'ScriptEvaluationJob', 'SerializeJSONArray', 'SerializeJSONObject', 'SerializeJSONProperty', 'SetDefaultGlobalBindings', 'SetImmutablePrototype', 'SetRealmGlobalObject', 'SetValueInBuffer', 'SetViewValue', 'SharedDataBlockEventSet', 'SortCompare', 'SplitMatch', 'StringCreate', 'StringGetOwnProperty', 'Suspend', 'synchronizes-with', 'TimeZoneString', 'TopLevelModuleEvaluationJob', 'TriggerPromiseReactions', 'TypedArrayCreate', 'TypedArraySpeciesCreate', 'UnicodeEscape', 'UpdateEmpty', 'UTC', 'UTF16Decode', 'UTF16Encoding', 'ValidateAtomicAccess', 'ValidateSharedIntegerTypedArray', 'ValidateTypedArray', 'ValueOfReadEvent', 'WakeWaiter', 'WordCharacters', 'AsyncFunctionCreate', 'AsyncGeneratorFunctionCreate', 'AsyncIteratorClose', 'BackreferenceMatcher', 'Construct', 'CreateArrayFromList', 'CreateListIteratorRecord', 'NormalCompletion', 'OrdinarySet', 'OrdinarySetWithOwnDescriptor', 'RegExpBuiltinExec', 'SetFunctionLength', 'ThrowCompletion', 'UnicodeMatchProperty', 'UnicodeMatchPropertyValue', 'AsyncFromSyncIteratorContinuation', 'ExecuteModule', 'InitializeEnvironment', 'NotifyWaiter', 'SynchronizeEventSet']; + +require('./tests').es2019(ES, ops, expectedMissing); + +require('./helpers/runManifestTest')(require('tape'), ES, 2019); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es5.js b/tic-tac-toe-app/node_modules/es-abstract/test/es5.js new file mode 100644 index 0000000..b4fb7f3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es5.js @@ -0,0 +1,784 @@ +'use strict'; + +var ES = require('../').ES5; +var test = require('tape'); + +var forEach = require('foreach'); +var is = require('object-is'); +var debug = require('object-inspect'); + +var v = require('./helpers/values'); + +require('./helpers/runManifestTest')(test, ES, 5); + +test('ToPrimitive', function (t) { + t.test('primitives', function (st) { + var testPrimitive = function (primitive) { + st.ok(is(ES.ToPrimitive(primitive), primitive), debug(primitive) + ' is returned correctly'); + }; + forEach(v.primitives, testPrimitive); + st.end(); + }); + + t.test('objects', function (st) { + st.equal(ES.ToPrimitive(v.coercibleObject), v.coercibleObject.valueOf(), 'coercibleObject coerces to valueOf'); + st.equal(ES.ToPrimitive(v.coercibleObject, Number), v.coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf'); + st.equal(ES.ToPrimitive(v.coercibleObject, String), v.coercibleObject.toString(), 'coercibleObject with hint String coerces to toString'); + st.equal(ES.ToPrimitive(v.coercibleFnObject), v.coercibleFnObject.toString(), 'coercibleFnObject coerces to toString'); + st.equal(ES.ToPrimitive(v.toStringOnlyObject), v.toStringOnlyObject.toString(), 'toStringOnlyObject returns toString'); + st.equal(ES.ToPrimitive(v.valueOfOnlyObject), v.valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf'); + st.equal(ES.ToPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString'); + st.equal(ES.ToPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString'); + st.equal(ES.ToPrimitive({}, Number), '[object Object]', '{} with hint Number coerces to Object#toString'); + st['throws'](function () { return ES.ToPrimitive(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws a TypeError'); + st['throws'](function () { return ES.ToPrimitive(v.uncoercibleFnObject); }, TypeError, 'uncoercibleFnObject throws a TypeError'); + st.end(); + }); + + t.end(); +}); + +test('ToBoolean', function (t) { + t.equal(false, ES.ToBoolean(undefined), 'undefined coerces to false'); + t.equal(false, ES.ToBoolean(null), 'null coerces to false'); + t.equal(false, ES.ToBoolean(false), 'false returns false'); + t.equal(true, ES.ToBoolean(true), 'true returns true'); + forEach([0, -0, NaN], function (falsyNumber) { + t.equal(false, ES.ToBoolean(falsyNumber), 'falsy number ' + falsyNumber + ' coerces to false'); + }); + forEach([Infinity, 42, 1, -Infinity], function (truthyNumber) { + t.equal(true, ES.ToBoolean(truthyNumber), 'truthy number ' + truthyNumber + ' coerces to true'); + }); + t.equal(false, ES.ToBoolean(''), 'empty string coerces to false'); + t.equal(true, ES.ToBoolean('foo'), 'nonempty string coerces to true'); + forEach(v.objects, function (obj) { + t.equal(true, ES.ToBoolean(obj), 'object coerces to true'); + }); + t.equal(true, ES.ToBoolean(v.uncoercibleObject), 'uncoercibleObject coerces to true'); + t.end(); +}); + +test('ToNumber', function (t) { + t.ok(is(NaN, ES.ToNumber(undefined)), 'undefined coerces to NaN'); + t.ok(is(ES.ToNumber(null), 0), 'null coerces to +0'); + t.ok(is(ES.ToNumber(false), 0), 'false coerces to +0'); + t.equal(1, ES.ToNumber(true), 'true coerces to 1'); + t.ok(is(NaN, ES.ToNumber(NaN)), 'NaN returns itself'); + forEach([0, -0, 42, Infinity, -Infinity], function (num) { + t.equal(num, ES.ToNumber(num), num + ' returns itself'); + }); + forEach(['foo', '0', '4a', '2.0', 'Infinity', '-Infinity'], function (numString) { + t.ok(is(+numString, ES.ToNumber(numString)), '"' + numString + '" coerces to ' + Number(numString)); + }); + forEach(v.objects, function (object) { + t.ok(is(ES.ToNumber(object), ES.ToNumber(ES.ToPrimitive(object))), 'object ' + object + ' coerces to same as ToPrimitive of object does'); + }); + t['throws'](function () { return ES.ToNumber(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.end(); +}); + +test('ToInteger', function (t) { + t.ok(is(0, ES.ToInteger(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity, 42], function (num) { + t.ok(is(num, ES.ToInteger(num)), num + ' returns itself'); + t.ok(is(-num, ES.ToInteger(-num)), '-' + num + ' returns itself'); + }); + t.equal(3, ES.ToInteger(Math.PI), 'pi returns 3'); + t['throws'](function () { return ES.ToInteger(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.end(); +}); + +test('ToInt32', function (t) { + t.ok(is(0, ES.ToInt32(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToInt32(num)), num + ' returns +0'); + t.ok(is(0, ES.ToInt32(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToInt32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToInt32(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToInt32(0x100000000 - 1), -1), '2^32 - 1 returns -1'); + t.ok(is(ES.ToInt32(0x80000000), -0x80000000), '2^31 returns -2^31'); + t.ok(is(ES.ToInt32(0x80000000 - 1), 0x80000000 - 1), '2^31 - 1 returns 2^31 - 1'); + forEach([0, Infinity, NaN, 0x100000000, 0x80000000, 0x10000, 0x42], function (num) { + t.ok(is(ES.ToInt32(num), ES.ToInt32(ES.ToUint32(num))), 'ToInt32(x) === ToInt32(ToUint32(x)) for 0x' + num.toString(16)); + t.ok(is(ES.ToInt32(-num), ES.ToInt32(ES.ToUint32(-num))), 'ToInt32(x) === ToInt32(ToUint32(x)) for -0x' + num.toString(16)); + }); + t.end(); +}); + +test('ToUint32', function (t) { + t.ok(is(0, ES.ToUint32(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToUint32(num)), num + ' returns +0'); + t.ok(is(0, ES.ToUint32(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToUint32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToUint32(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToUint32(0x100000000 - 1), 0x100000000 - 1), '2^32 - 1 returns 2^32 - 1'); + t.ok(is(ES.ToUint32(0x80000000), 0x80000000), '2^31 returns 2^31'); + t.ok(is(ES.ToUint32(0x80000000 - 1), 0x80000000 - 1), '2^31 - 1 returns 2^31 - 1'); + forEach([0, Infinity, NaN, 0x100000000, 0x80000000, 0x10000, 0x42], function (num) { + t.ok(is(ES.ToUint32(num), ES.ToUint32(ES.ToInt32(num))), 'ToUint32(x) === ToUint32(ToInt32(x)) for 0x' + num.toString(16)); + t.ok(is(ES.ToUint32(-num), ES.ToUint32(ES.ToInt32(-num))), 'ToUint32(x) === ToUint32(ToInt32(x)) for -0x' + num.toString(16)); + }); + t.end(); +}); + +test('ToUint16', function (t) { + t.ok(is(0, ES.ToUint16(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToUint16(num)), num + ' returns +0'); + t.ok(is(0, ES.ToUint16(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToUint16(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToUint16(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToUint16(0x100000000 - 1), 0x10000 - 1), '2^32 - 1 returns 2^16 - 1'); + t.ok(is(ES.ToUint16(0x80000000), 0), '2^31 returns +0'); + t.ok(is(ES.ToUint16(0x80000000 - 1), 0x10000 - 1), '2^31 - 1 returns 2^16 - 1'); + t.ok(is(ES.ToUint16(0x10000), 0), '2^16 returns +0'); + t.ok(is(ES.ToUint16(0x10000 - 1), 0x10000 - 1), '2^16 - 1 returns 2^16 - 1'); + t.end(); +}); + +test('ToString', function (t) { + t['throws'](function () { return ES.ToString(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.end(); +}); + +test('ToObject', function (t) { + t['throws'](function () { return ES.ToObject(undefined); }, TypeError, 'undefined throws'); + t['throws'](function () { return ES.ToObject(null); }, TypeError, 'null throws'); + forEach(v.numbers, function (number) { + var obj = ES.ToObject(number); + t.equal(typeof obj, 'object', 'number ' + number + ' coerces to object'); + t.equal(true, obj instanceof Number, 'object of ' + number + ' is Number object'); + t.ok(is(obj.valueOf(), number), 'object of ' + number + ' coerces to ' + number); + }); + t.end(); +}); + +test('CheckObjectCoercible', function (t) { + t['throws'](function () { return ES.CheckObjectCoercible(undefined); }, TypeError, 'undefined throws'); + t['throws'](function () { return ES.CheckObjectCoercible(null); }, TypeError, 'null throws'); + var checkCoercible = function (value) { + t.doesNotThrow(function () { return ES.CheckObjectCoercible(value); }, debug(value) + ' does not throw'); + }; + forEach(v.objects.concat(v.nonNullPrimitives), checkCoercible); + t.end(); +}); + +test('IsCallable', function (t) { + t.equal(true, ES.IsCallable(function () {}), 'function is callable'); + var nonCallables = [/a/g, {}, Object.prototype, NaN].concat(v.primitives); + forEach(nonCallables, function (nonCallable) { + t.equal(false, ES.IsCallable(nonCallable), debug(nonCallable) + ' is not callable'); + }); + t.end(); +}); + +test('SameValue', function (t) { + t.equal(true, ES.SameValue(NaN, NaN), 'NaN is SameValue as NaN'); + t.equal(false, ES.SameValue(0, -0), '+0 is not SameValue as -0'); + forEach(v.objects.concat(v.primitives), function (val) { + t.equal(val === val, ES.SameValue(val, val), debug(val) + ' is SameValue to itself'); + }); + t.end(); +}); + +test('Type', function (t) { + t.equal(ES.Type(), 'Undefined', 'Type() is Undefined'); + t.equal(ES.Type(undefined), 'Undefined', 'Type(undefined) is Undefined'); + t.equal(ES.Type(null), 'Null', 'Type(null) is Null'); + t.equal(ES.Type(true), 'Boolean', 'Type(true) is Boolean'); + t.equal(ES.Type(false), 'Boolean', 'Type(false) is Boolean'); + t.equal(ES.Type(0), 'Number', 'Type(0) is Number'); + t.equal(ES.Type(NaN), 'Number', 'Type(NaN) is Number'); + t.equal(ES.Type('abc'), 'String', 'Type("abc") is String'); + t.equal(ES.Type(function () {}), 'Object', 'Type(function () {}) is Object'); + t.equal(ES.Type({}), 'Object', 'Type({}) is Object'); + t.end(); +}); + +test('IsPropertyDescriptor', function (t) { + forEach(v.primitives, function (primitive) { + t.equal(ES.IsPropertyDescriptor(primitive), false, debug(primitive) + ' is not a Property Descriptor'); + }); + + t.equal(ES.IsPropertyDescriptor({ invalid: true }), false, 'invalid keys not allowed on a Property Descriptor'); + + t.equal(ES.IsPropertyDescriptor({}), true, 'empty object is an incomplete Property Descriptor'); + + t.equal(ES.IsPropertyDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is a Property Descriptor'); + t.equal(ES.IsPropertyDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is a Property Descriptor'); + t.equal(ES.IsPropertyDescriptor(v.dataDescriptor()), true, 'data descriptor is a Property Descriptor'); + t.equal(ES.IsPropertyDescriptor(v.genericDescriptor()), true, 'generic descriptor is a Property Descriptor'); + + t['throws']( + function () { ES.IsPropertyDescriptor(v.bothDescriptor()); }, + TypeError, + 'a Property Descriptor can not be both a Data and an Accessor Descriptor' + ); + + t['throws']( + function () { ES.IsPropertyDescriptor(v.bothDescriptorWritable()); }, + TypeError, + 'a Property Descriptor can not be both a Data and an Accessor Descriptor' + ); + + t.end(); +}); + +test('IsAccessorDescriptor', function (t) { + forEach(v.nonNullPrimitives.concat(null), function (primitive) { + t['throws'](function () { ES.IsAccessorDescriptor(primitive); }, TypeError, debug(primitive) + ' is not a Property Descriptor'); + }); + + t.equal(ES.IsAccessorDescriptor(), false, 'no value is not an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(undefined), false, 'undefined value is not an Accessor Descriptor'); + + t.equal(ES.IsAccessorDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(v.dataDescriptor()), false, 'data descriptor is not an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(v.genericDescriptor()), false, 'generic descriptor is not an Accessor Descriptor'); + + t.end(); +}); + +test('IsDataDescriptor', function (t) { + forEach(v.nonNullPrimitives.concat(null), function (primitive) { + t['throws'](function () { ES.IsDataDescriptor(primitive); }, TypeError, debug(primitive) + ' is not a Property Descriptor'); + }); + + t.equal(ES.IsDataDescriptor(), false, 'no value is not a Data Descriptor'); + t.equal(ES.IsDataDescriptor(undefined), false, 'undefined value is not a Data Descriptor'); + + t.equal(ES.IsDataDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a Data Descriptor'); + t.equal(ES.IsDataDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a Data Descriptor'); + t.equal(ES.IsDataDescriptor(v.dataDescriptor()), true, 'data descriptor is a Data Descriptor'); + t.equal(ES.IsDataDescriptor(v.genericDescriptor()), false, 'generic descriptor is not a Data Descriptor'); + + t.end(); +}); + +test('IsGenericDescriptor', function (t) { + forEach(v.nonNullPrimitives.concat(null), function (primitive) { + t['throws']( + function () { ES.IsGenericDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + t.equal(ES.IsGenericDescriptor(), false, 'no value is not a Data Descriptor'); + t.equal(ES.IsGenericDescriptor(undefined), false, 'undefined value is not a Data Descriptor'); + + t.equal(ES.IsGenericDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a generic Descriptor'); + t.equal(ES.IsGenericDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a generic Descriptor'); + t.equal(ES.IsGenericDescriptor(v.dataDescriptor()), false, 'data descriptor is not a generic Descriptor'); + + t.equal(ES.IsGenericDescriptor(v.genericDescriptor()), true, 'generic descriptor is a generic Descriptor'); + + t.end(); +}); + +test('FromPropertyDescriptor', function (t) { + t.equal(ES.FromPropertyDescriptor(), undefined, 'no value begets undefined'); + t.equal(ES.FromPropertyDescriptor(undefined), undefined, 'undefined value begets undefined'); + + forEach(v.nonNullPrimitives.concat(null), function (primitive) { + t['throws']( + function () { ES.FromPropertyDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + var accessor = v.accessorDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(accessor), { + get: accessor['[[Get]]'], + set: accessor['[[Set]]'], + enumerable: !!accessor['[[Enumerable]]'], + configurable: !!accessor['[[Configurable]]'] + }); + + var mutator = v.mutatorDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(mutator), { + get: mutator['[[Get]]'], + set: mutator['[[Set]]'], + enumerable: !!mutator['[[Enumerable]]'], + configurable: !!mutator['[[Configurable]]'] + }); + var data = v.dataDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(data), { + value: data['[[Value]]'], + writable: data['[[Writable]]'], + enumerable: !!data['[[Enumerable]]'], + configurable: !!data['[[Configurable]]'] + }); + + t['throws']( + function () { ES.FromPropertyDescriptor(v.genericDescriptor()); }, + TypeError, + 'a complete Property Descriptor is required' + ); + + t.end(); +}); + +test('ToPropertyDescriptor', function (t) { + forEach(v.nonNullPrimitives.concat(null), function (primitive) { + t['throws']( + function () { ES.ToPropertyDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + + var accessor = v.accessorDescriptor(); + t.deepEqual(ES.ToPropertyDescriptor({ + get: accessor['[[Get]]'], + enumerable: !!accessor['[[Enumerable]]'], + configurable: !!accessor['[[Configurable]]'] + }), accessor); + + var mutator = v.mutatorDescriptor(); + t.deepEqual(ES.ToPropertyDescriptor({ + set: mutator['[[Set]]'], + enumerable: !!mutator['[[Enumerable]]'], + configurable: !!mutator['[[Configurable]]'] + }), mutator); + + var data = v.descriptors.nonConfigurable(v.dataDescriptor()); + t.deepEqual(ES.ToPropertyDescriptor({ + value: data['[[Value]]'], + writable: data['[[Writable]]'], + configurable: !!data['[[Configurable]]'] + }), data); + + var both = v.bothDescriptor(); + t['throws']( + function () { + ES.ToPropertyDescriptor({ get: both['[[Get]]'], value: both['[[Value]]'] }); + }, + TypeError, + 'data and accessor descriptors are mutually exclusive' + ); + + t['throws']( + function () { ES.ToPropertyDescriptor({ get: 'not callable' }); }, + TypeError, + '"get" must be undefined or callable' + ); + + t['throws']( + function () { ES.ToPropertyDescriptor({ set: 'not callable' }); }, + TypeError, + '"set" must be undefined or callable' + ); + + t.end(); +}); + +test('Abstract Equality Comparison', function (t) { + t.test('same types use ===', function (st) { + forEach(v.primitives.concat(v.objects), function (value) { + st.equal(ES['Abstract Equality Comparison'](value, value), value === value, debug(value) + ' is abstractly equal to itself'); + }); + st.end(); + }); + + t.test('different types coerce', function (st) { + var pairs = [ + [null, undefined], + [3, '3'], + [true, '3'], + [true, 3], + [false, 0], + [false, '0'], + [3, [3]], + ['3', [3]], + [true, [1]], + [false, [0]], + [String(v.coercibleObject), v.coercibleObject], + [Number(String(v.coercibleObject)), v.coercibleObject], + [Number(v.coercibleObject), v.coercibleObject], + [String(Number(v.coercibleObject)), v.coercibleObject] + ]; + forEach(pairs, function (pair) { + var a = pair[0]; + var b = pair[1]; + // eslint-disable-next-line eqeqeq + st.equal(ES['Abstract Equality Comparison'](a, b), a == b, debug(a) + ' == ' + debug(b)); + // eslint-disable-next-line eqeqeq + st.equal(ES['Abstract Equality Comparison'](b, a), b == a, debug(b) + ' == ' + debug(a)); + }); + st.end(); + }); + + t.end(); +}); + +test('Strict Equality Comparison', function (t) { + t.test('same types use ===', function (st) { + forEach(v.primitives.concat(v.objects), function (value) { + st.equal(ES['Strict Equality Comparison'](value, value), value === value, debug(value) + ' is strictly equal to itself'); + }); + st.end(); + }); + + t.test('different types are not ===', function (st) { + var pairs = [ + [null, undefined], + [3, '3'], + [true, '3'], + [true, 3], + [false, 0], + [false, '0'], + [3, [3]], + ['3', [3]], + [true, [1]], + [false, [0]], + [String(v.coercibleObject), v.coercibleObject], + [Number(String(v.coercibleObject)), v.coercibleObject], + [Number(v.coercibleObject), v.coercibleObject], + [String(Number(v.coercibleObject)), v.coercibleObject] + ]; + forEach(pairs, function (pair) { + var a = pair[0]; + var b = pair[1]; + st.equal(ES['Strict Equality Comparison'](a, b), a === b, debug(a) + ' === ' + debug(b)); + st.equal(ES['Strict Equality Comparison'](b, a), b === a, debug(b) + ' === ' + debug(a)); + }); + st.end(); + }); + + t.end(); +}); + +test('Abstract Relational Comparison', function (t) { + t.test('at least one operand is NaN', function (st) { + st.equal(ES['Abstract Relational Comparison'](NaN, {}, true), undefined, 'LeftFirst: first is NaN, returns undefined'); + st.equal(ES['Abstract Relational Comparison']({}, NaN, true), undefined, 'LeftFirst: second is NaN, returns undefined'); + st.equal(ES['Abstract Relational Comparison'](NaN, {}, false), undefined, '!LeftFirst: first is NaN, returns undefined'); + st.equal(ES['Abstract Relational Comparison']({}, NaN, false), undefined, '!LeftFirst: second is NaN, returns undefined'); + st.end(); + }); + + t.equal(ES['Abstract Relational Comparison'](3, 4, true), true, 'LeftFirst: 3 is less than 4'); + t.equal(ES['Abstract Relational Comparison'](4, 3, true), false, 'LeftFirst: 3 is not less than 4'); + t.equal(ES['Abstract Relational Comparison'](3, 4, false), true, '!LeftFirst: 3 is less than 4'); + t.equal(ES['Abstract Relational Comparison'](4, 3, false), false, '!LeftFirst: 3 is not less than 4'); + + t.equal(ES['Abstract Relational Comparison']('3', '4', true), true, 'LeftFirst: "3" is less than "4"'); + t.equal(ES['Abstract Relational Comparison']('4', '3', true), false, 'LeftFirst: "3" is not less than "4"'); + t.equal(ES['Abstract Relational Comparison']('3', '4', false), true, '!LeftFirst: "3" is less than "4"'); + t.equal(ES['Abstract Relational Comparison']('4', '3', false), false, '!LeftFirst: "3" is not less than "4"'); + + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, true), true, 'LeftFirst: coercible object is less than 42'); + t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, true), false, 'LeftFirst: 42 is not less than coercible object'); + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, false), true, '!LeftFirst: coercible object is less than 42'); + t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, false), false, '!LeftFirst: 42 is not less than coercible object'); + + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', true), false, 'LeftFirst: coercible object is not less than "3"'); + t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, true), false, 'LeftFirst: "3" is not less than coercible object'); + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', false), false, '!LeftFirst: coercible object is not less than "3"'); + t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, false), false, '!LeftFirst: "3" is not less than coercible object'); + + t.end(); +}); + +test('FromPropertyDescriptor', function (t) { + t.equal(ES.FromPropertyDescriptor(), undefined, 'no value begets undefined'); + t.equal(ES.FromPropertyDescriptor(undefined), undefined, 'undefined value begets undefined'); + + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.FromPropertyDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + var accessor = v.accessorDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(accessor), { + get: accessor['[[Get]]'], + set: accessor['[[Set]]'], + enumerable: !!accessor['[[Enumerable]]'], + configurable: !!accessor['[[Configurable]]'] + }); + + var mutator = v.mutatorDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(mutator), { + get: mutator['[[Get]]'], + set: mutator['[[Set]]'], + enumerable: !!mutator['[[Enumerable]]'], + configurable: !!mutator['[[Configurable]]'] + }); + var data = v.dataDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(data), { + value: data['[[Value]]'], + writable: data['[[Writable]]'], + enumerable: !!data['[[Enumerable]]'], + configurable: !!data['[[Configurable]]'] + }); + + t['throws']( + function () { ES.FromPropertyDescriptor(v.genericDescriptor()); }, + TypeError, + 'a complete Property Descriptor is required' + ); + + t.end(); +}); + +test('SecFromTime', function (t) { + var now = new Date(); + t.equal(ES.SecFromTime(now.getTime()), now.getUTCSeconds(), 'second from Date timestamp matches getUTCSeconds'); + t.end(); +}); + +test('MinFromTime', function (t) { + var now = new Date(); + t.equal(ES.MinFromTime(now.getTime()), now.getUTCMinutes(), 'minute from Date timestamp matches getUTCMinutes'); + t.end(); +}); + +test('HourFromTime', function (t) { + var now = new Date(); + t.equal(ES.HourFromTime(now.getTime()), now.getUTCHours(), 'hour from Date timestamp matches getUTCHours'); + t.end(); +}); + +test('msFromTime', function (t) { + var now = new Date(); + t.equal(ES.msFromTime(now.getTime()), now.getUTCMilliseconds(), 'ms from Date timestamp matches getUTCMilliseconds'); + t.end(); +}); + +var msPerSecond = 1e3; +var msPerMinute = 60 * msPerSecond; +var msPerHour = 60 * msPerMinute; +var msPerDay = 24 * msPerHour; + +test('Day', function (t) { + var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5); + var add = 2.5; + var later = new Date(time + (add * msPerDay)); + + t.equal(ES.Day(later.getTime()), ES.Day(time) + Math.floor(add), 'adding 2.5 days worth of ms, gives a Day delta of 2'); + t.end(); +}); + +test('TimeWithinDay', function (t) { + var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5); + var add = 2.5; + var later = new Date(time + (add * msPerDay)); + + t.equal(ES.TimeWithinDay(later.getTime()), ES.TimeWithinDay(time) + (0.5 * msPerDay), 'adding 2.5 days worth of ms, gives a TimeWithinDay delta of +0.5'); + t.end(); +}); + +test('DayFromYear', function (t) { + t.equal(ES.DayFromYear(2021) - ES.DayFromYear(2020), 366, '2021 is a leap year, has 366 days'); + t.equal(ES.DayFromYear(2020) - ES.DayFromYear(2019), 365, '2020 is not a leap year, has 365 days'); + t.equal(ES.DayFromYear(2019) - ES.DayFromYear(2018), 365, '2019 is not a leap year, has 365 days'); + t.equal(ES.DayFromYear(2018) - ES.DayFromYear(2017), 365, '2018 is not a leap year, has 365 days'); + t.equal(ES.DayFromYear(2017) - ES.DayFromYear(2016), 366, '2017 is a leap year, has 366 days'); + + t.end(); +}); + +test('TimeFromYear', function (t) { + for (var i = 1900; i < 2100; i += 1) { + t.equal(ES.TimeFromYear(i), Date.UTC(i, 0, 1), 'TimeFromYear matches a Date object’s year: ' + i); + } + t.end(); +}); + +test('YearFromTime', function (t) { + for (var i = 1900; i < 2100; i += 1) { + t.equal(ES.YearFromTime(Date.UTC(i, 0, 1)), i, 'YearFromTime matches a Date object’s year on 1/1: ' + i); + t.equal(ES.YearFromTime(Date.UTC(i, 10, 1)), i, 'YearFromTime matches a Date object’s year on 10/1: ' + i); + } + t.end(); +}); + +test('WeekDay', function (t) { + var now = new Date(); + var today = now.getUTCDay(); + for (var i = 0; i < 7; i += 1) { + var weekDay = ES.WeekDay(now.getTime() + (i * msPerDay)); + t.equal(weekDay, (today + i) % 7, i + ' days after today (' + today + '), WeekDay is ' + weekDay); + } + t.end(); +}); + +test('DaysInYear', function (t) { + t.equal(ES.DaysInYear(2021), 365, '2021 is not a leap year'); + t.equal(ES.DaysInYear(2020), 366, '2020 is a leap year'); + t.equal(ES.DaysInYear(2019), 365, '2019 is not a leap year'); + t.equal(ES.DaysInYear(2018), 365, '2018 is not a leap year'); + t.equal(ES.DaysInYear(2017), 365, '2017 is not a leap year'); + t.equal(ES.DaysInYear(2016), 366, '2016 is a leap year'); + + t.end(); +}); + +test('InLeapYear', function (t) { + t.equal(ES.InLeapYear(Date.UTC(2021, 0, 1)), 0, '2021 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2020, 0, 1)), 1, '2020 is a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2019, 0, 1)), 0, '2019 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2018, 0, 1)), 0, '2018 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2017, 0, 1)), 0, '2017 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2016, 0, 1)), 1, '2016 is a leap year'); + + t.end(); +}); + +test('DayWithinYear', function (t) { + t.equal(ES.DayWithinYear(Date.UTC(2019, 0, 1)), 0, '1/1 is the 1st day'); + t.equal(ES.DayWithinYear(Date.UTC(2019, 11, 31)), 364, '12/31 is the 365th day in a non leap year'); + t.equal(ES.DayWithinYear(Date.UTC(2016, 11, 31)), 365, '12/31 is the 366th day in a leap year'); + + t.end(); +}); + +test('MonthFromTime', function (t) { + t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 1)), 0, 'non-leap: 1/1 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 31)), 0, 'non-leap: 1/31 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 1)), 1, 'non-leap: 2/1 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 28)), 1, 'non-leap: 2/28 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 29)), 2, 'non-leap: 2/29 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 1)), 2, 'non-leap: 3/1 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 31)), 2, 'non-leap: 3/31 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 1)), 3, 'non-leap: 4/1 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 30)), 3, 'non-leap: 4/30 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 1)), 4, 'non-leap: 5/1 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 31)), 4, 'non-leap: 5/31 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 1)), 5, 'non-leap: 6/1 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 30)), 5, 'non-leap: 6/30 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 1)), 6, 'non-leap: 7/1 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 31)), 6, 'non-leap: 7/31 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 1)), 7, 'non-leap: 8/1 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 30)), 7, 'non-leap: 8/30 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 1)), 8, 'non-leap: 9/1 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 30)), 8, 'non-leap: 9/30 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 1)), 9, 'non-leap: 10/1 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 31)), 9, 'non-leap: 10/31 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 1)), 10, 'non-leap: 11/1 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 30)), 10, 'non-leap: 11/30 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 1)), 11, 'non-leap: 12/1 gives December'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 31)), 11, 'non-leap: 12/31 gives December'); + + t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 1)), 0, 'leap: 1/1 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 31)), 0, 'leap: 1/31 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 1)), 1, 'leap: 2/1 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 28)), 1, 'leap: 2/28 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 29)), 1, 'leap: 2/29 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 1)), 2, 'leap: 3/1 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 31)), 2, 'leap: 3/31 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 1)), 3, 'leap: 4/1 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 30)), 3, 'leap: 4/30 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 1)), 4, 'leap: 5/1 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 31)), 4, 'leap: 5/31 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 1)), 5, 'leap: 6/1 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 30)), 5, 'leap: 6/30 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 1)), 6, 'leap: 7/1 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 31)), 6, 'leap: 7/31 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 1)), 7, 'leap: 8/1 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 30)), 7, 'leap: 8/30 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 1)), 8, 'leap: 9/1 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 30)), 8, 'leap: 9/30 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 1)), 9, 'leap: 10/1 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 31)), 9, 'leap: 10/31 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 1)), 10, 'leap: 11/1 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 30)), 10, 'leap: 11/30 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 1)), 11, 'leap: 12/1 gives December'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 31)), 11, 'leap: 12/31 gives December'); + t.end(); +}); + +test('DateFromTime', function (t) { + var i; + for (i = 1; i <= 28; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2019, 1, i)), i, '2019.02.' + i + ' is date ' + i); + } + for (i = 1; i <= 29; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2016, 1, i)), i, '2016.02.' + i + ' is date ' + i); + } + for (i = 1; i <= 30; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2019, 8, i)), i, '2019.09.' + i + ' is date ' + i); + } + for (i = 1; i <= 31; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2019, 9, i)), i, '2019.10.' + i + ' is date ' + i); + } + t.end(); +}); + +test('MakeDay', function (t) { + var day2015 = 16687; + t.equal(ES.MakeDay(2015, 8, 9), day2015, '2015.09.09 is day 16687'); + var day2016 = day2015 + 366; // 2016 is a leap year + t.equal(ES.MakeDay(2016, 8, 9), day2016, '2015.09.09 is day 17053'); + var day2017 = day2016 + 365; + t.equal(ES.MakeDay(2017, 8, 9), day2017, '2017.09.09 is day 17418'); + var day2018 = day2017 + 365; + t.equal(ES.MakeDay(2018, 8, 9), day2018, '2018.09.09 is day 17783'); + var day2019 = day2018 + 365; + t.equal(ES.MakeDay(2019, 8, 9), day2019, '2019.09.09 is day 18148'); + t.end(); +}); + +test('MakeDate', function (t) { + forEach(v.infinities.concat(NaN), function (nonFiniteNumber) { + t.ok(is(ES.MakeDate(nonFiniteNumber, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `day`'); + t.ok(is(ES.MakeDate(0, nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `time`'); + }); + t.equal(ES.MakeDate(0, 0), 0, 'zero day and zero time is zero date'); + t.equal(ES.MakeDate(0, 123), 123, 'zero day and nonzero time is a date of the "time"'); + t.equal(ES.MakeDate(1, 0), msPerDay, 'day of 1 and zero time is a date of "ms per day"'); + t.equal(ES.MakeDate(3, 0), 3 * msPerDay, 'day of 3 and zero time is a date of thrice "ms per day"'); + t.equal(ES.MakeDate(1, 123), msPerDay + 123, 'day of 1 and nonzero time is a date of "ms per day" plus the "time"'); + t.equal(ES.MakeDate(3, 123), (3 * msPerDay) + 123, 'day of 3 and nonzero time is a date of thrice "ms per day" plus the "time"'); + + t.end(); +}); + +test('MakeTime', function (t) { + forEach(v.infinities.concat(NaN), function (nonFiniteNumber) { + t.ok(is(ES.MakeTime(nonFiniteNumber, 0, 0, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `hour`'); + t.ok(is(ES.MakeTime(0, nonFiniteNumber, 0, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `min`'); + t.ok(is(ES.MakeTime(0, 0, nonFiniteNumber, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `sec`'); + t.ok(is(ES.MakeTime(0, 0, 0, nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `ms`'); + }); + + t.equal( + ES.MakeTime(1.2, 2.3, 3.4, 4.5), + (1 * msPerHour) + (2 * msPerMinute) + (3 * msPerSecond) + 4, + 'all numbers are converted to integer, multiplied by the right number of ms, and summed' + ); + t.end(); +}); + +test('TimeClip', function (t) { + forEach(v.infinities.concat(NaN), function (nonFiniteNumber) { + t.ok(is(ES.TimeClip(nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `time`'); + }); + t.ok(is(ES.TimeClip(8.64e15 + 1), NaN), '8.64e15 is the largest magnitude considered "finite"'); + t.ok(is(ES.TimeClip(-8.64e15 - 1), NaN), '-8.64e15 is the largest magnitude considered "finite"'); + + forEach(v.zeroes.concat([-10, 10, +new Date()]), function (time) { + t.looseEqual(ES.TimeClip(time), time, debug(time) + ' is a time of ' + debug(time)); + }); + + t.end(); +}); + +test('modulo', function (t) { + t.equal(3 % 2, 1, '+3 % 2 is +1'); + t.equal(ES.modulo(3, 2), 1, '+3 mod 2 is +1'); + + t.equal(-3 % 2, -1, '-3 % 2 is -1'); + t.equal(ES.modulo(-3, 2), 1, '-3 mod 2 is +1'); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es6.js b/tic-tac-toe-app/node_modules/es-abstract/test/es6.js new file mode 100644 index 0000000..e7c9d98 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es6.js @@ -0,0 +1,18 @@ +'use strict'; + +var test = require('tape'); + +var ES = require('../'); +var ES6 = ES.ES6; +var ES2015 = ES.ES2015; +var ES6entry = require('../es6'); + +test('legacy es6 export', function (t) { + t.equal(ES6, ES2015, 'main ES6 === main ES2015'); + t.end(); +}); + +test('legacy es6 entry point', function (t) { + t.equal(ES6, ES6entry, 'main ES6 === ES6 entry point'); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/es7.js b/tic-tac-toe-app/node_modules/es-abstract/test/es7.js new file mode 100644 index 0000000..ee57e15 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/es7.js @@ -0,0 +1,18 @@ +'use strict'; + +var test = require('tape'); + +var ES = require('../'); +var ES7 = ES.ES7; +var ES2016 = ES.ES2016; +var ES7entry = require('../es7'); + +test('legacy es7 export', function (t) { + t.equal(ES7, ES2016, 'main ES7 === main ES2016'); + t.end(); +}); + +test('legacy es7 entry point', function (t) { + t.equal(ES7, ES7entry, 'main ES7 === ES7 entry point'); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/helpers/OwnPropertyKeys.js b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/OwnPropertyKeys.js new file mode 100644 index 0000000..9c2b4fc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/OwnPropertyKeys.js @@ -0,0 +1,42 @@ +'use strict'; + +var test = require('tape'); +var hasSymbols = require('has-symbols')(); + +var OwnPropertyKeys = require('../../helpers/OwnPropertyKeys'); +var defineProperty = require('./defineProperty'); + +test('OwnPropertyKeys', function (t) { + t.deepEqual(OwnPropertyKeys({ a: 1, b: 2 }).sort(), ['a', 'b'].sort(), 'returns own string keys'); + + t.test('Symbols', { skip: !hasSymbols }, function (st) { + var o = { a: 1 }; + var sym = Symbol(); + o[sym] = 2; + + st.deepEqual(OwnPropertyKeys(o), ['a', sym], 'returns own string and symbol keys'); + + st.end(); + }); + + t.test('non-enumerables', { skip: !defineProperty.oDP }, function (st) { + var o = { a: 1, b: 42, c: NaN }; + defineProperty(o, 'b', { enumerable: false, value: 42 }); + defineProperty(o, 'c', { enumerable: false, get: function () { return NaN; } }); + + if (hasSymbols) { + defineProperty(o, 'd', { enumerable: false, value: true }); + defineProperty(o, 'e', { enumerable: false, get: function () { return true; } }); + } + + st.deepEqual( + OwnPropertyKeys(o).sort(), + (hasSymbols ? ['a', 'b', 'c', 'd', 'e'] : ['a', 'b', 'c']).sort(), + 'returns non-enumerable own keys, including accessors and symbols if available' + ); + + st.end(); + }); + + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/helpers/assertRecord.js b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/assertRecord.js new file mode 100644 index 0000000..d6a80c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/assertRecord.js @@ -0,0 +1,60 @@ +'use strict'; + +var forEach = require('foreach'); +var debug = require('object-inspect'); + +var assertRecord = require('../../helpers/assertRecord'); +var v = require('./values'); + +module.exports = function assertRecordTests(ES, test) { + test('Property Descriptor', function (t) { + var record = 'Property Descriptor'; + + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { assertRecord(ES.Type, record, 'arg', primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + t['throws']( + function () { assertRecord(ES.Type, record, 'arg', { invalid: true }); }, + TypeError, + 'invalid keys not allowed on a Property Descriptor' + ); + + t.doesNotThrow( + function () { assertRecord(ES.Type, record, 'arg', {}); }, + 'empty object is an incomplete Property Descriptor' + ); + + t.doesNotThrow( + function () { assertRecord(ES.Type, record, 'arg', v.accessorDescriptor()); }, + 'accessor descriptor is a Property Descriptor' + ); + + t.doesNotThrow( + function () { assertRecord(ES.Type, record, 'arg', v.mutatorDescriptor()); }, + 'mutator descriptor is a Property Descriptor' + ); + + t.doesNotThrow( + function () { assertRecord(ES.Type, record, 'arg', v.dataDescriptor()); }, + 'data descriptor is a Property Descriptor' + ); + + t.doesNotThrow( + function () { assertRecord(ES.Type, record, 'arg', v.genericDescriptor()); }, + 'generic descriptor is a Property Descriptor' + ); + + t['throws']( + function () { assertRecord(ES.Type, record, 'arg', v.bothDescriptor()); }, + TypeError, + 'a Property Descriptor can not be both a Data and an Accessor Descriptor' + ); + + t.end(); + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/helpers/defineProperty.js b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/defineProperty.js new file mode 100644 index 0000000..8f925be --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/defineProperty.js @@ -0,0 +1,22 @@ +'use strict'; + +var oDP = Object.defineProperty; +try { + oDP({}, 'a', { value: 1 }); +} catch (e) { + // IE 8 + oDP = null; +} + +module.exports = function defineProperty(O, P, Desc) { + if (oDP) { + return oDP(O, P, Desc); + } + if ((Desc.enumerable && Desc.configurable && Desc.writable) || !(P in O)) { + O[P] = Desc.value; // eslint-disable-line no-param-reassign + return O; + } + + throw new SyntaxError('helper does not yet support this configuration'); +}; +module.exports.oDP = oDP; diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/helpers/getSymbolDescription.js b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/getSymbolDescription.js new file mode 100644 index 0000000..b05279d --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/getSymbolDescription.js @@ -0,0 +1,55 @@ +'use strict'; + +var test = require('tape'); +var debug = require('object-inspect'); +var forEach = require('foreach'); + +var v = require('./values'); +var getSymbolDescription = require('../../helpers/getSymbolDescription'); +var getInferredName = require('../../helpers/getInferredName'); + +test('getSymbolDescription', function (t) { + t.test('no symbols', { skip: v.hasSymbols }, function (st) { + st['throws']( + getSymbolDescription, + SyntaxError, + 'requires Symbol support' + ); + + st.end(); + }); + + forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) { + t['throws']( + function () { getSymbolDescription(nonSymbol); }, + v.hasSymbols ? TypeError : SyntaxError, + debug(nonSymbol) + ' is not a Symbol' + ); + }); + + t.test('with symbols', { skip: !v.hasSymbols }, function (st) { + forEach( + [ + [Symbol(), undefined], + [Symbol(undefined), undefined], + [Symbol(null), 'null'], + [Symbol.iterator, 'Symbol.iterator'], + [Symbol('foo'), 'foo'] + ], + function (pair) { + var sym = pair[0]; + var desc = pair[1]; + st.equal(getSymbolDescription(sym), desc, debug(sym) + ' yields ' + debug(desc)); + } + ); + + st.test('only possible when inference is supported', { skip: !getInferredName }, function (s2t) { + s2t.equal(getSymbolDescription(Symbol('')), '', 'Symbol("") description is empty string'); + s2t.end(); + }); + + st.end(); + }); + + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/helpers/runManifestTest.js b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/runManifestTest.js new file mode 100644 index 0000000..2fdb4f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/runManifestTest.js @@ -0,0 +1,27 @@ +'use strict'; + +var path = require('path'); +var fs = require('fs'); + +var forEach = require('foreach'); +var keys = require('object-keys'); + +module.exports = function runManifestTest(test, ES, edition) { + test('ES' + edition + ' manifest', { skip: !fs.readdirSync }, function (t) { + var files = fs.readdirSync(path.join(__dirname, '../../' + edition), 'utf-8'); + var map = { + AbstractEqualityComparison: 'Abstract Equality Comparison', + AbstractRelationalComparison: 'Abstract Relational Comparison', + StrictEqualityComparison: 'Strict Equality Comparison' + }; + forEach(files, function (file) { + var name = path.basename(file, path.extname(file)); + var actual = ES[map[name] || name]; + var expected = require(path.join(__dirname, '../../' + edition + '/', file)); // eslint-disable-line global-require + t.equal(actual, expected, 'ES["' + name + '"] === ' + file); + }); + var actualCount = keys(ES).length; + t.equal(actualCount, files.length, 'expected ' + files.length + ' files, got ' + actualCount); + t.end(); + }); +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/helpers/values.js b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/values.js new file mode 100644 index 0000000..ccef743 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/helpers/values.js @@ -0,0 +1,121 @@ +'use strict'; + +var assign = require('../../helpers/assign'); + +var hasSymbols = require('has-symbols')(); + +var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } }; +var coercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return 42; } +}; +var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } }; +var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } }; +var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } }; +var uncoercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return function toStrFn() {}; } +}; +var objects = [{}, coercibleObject, coercibleFnObject, toStringOnlyObject, valueOfOnlyObject]; +var nullPrimitives = [undefined, null]; +var nonIntegerNumbers = [-1.3, 0.2, 1.8, 1 / 3]; +var zeroes = [0, -0]; +var infinities = [Infinity, -Infinity]; +var numbers = zeroes.concat([42], infinities, nonIntegerNumbers); +var strings = ['', 'foo', 'a\uD83D\uDCA9c']; +var booleans = [true, false]; +var symbols = hasSymbols ? [Symbol.iterator, Symbol('foo')] : []; +var nonSymbolPrimitives = [].concat(nullPrimitives, booleans, strings, numbers); +var nonNumberPrimitives = [].concat(nullPrimitives, booleans, strings, symbols); +var nonNullPrimitives = [].concat(booleans, strings, numbers, symbols); +var nonUndefinedPrimitives = [].concat(null, nonNullPrimitives); +var nonStrings = [].concat(nullPrimitives, booleans, numbers, symbols, objects); +var primitives = [].concat(nullPrimitives, nonNullPrimitives); +var nonPropertyKeys = [].concat(nullPrimitives, booleans, numbers, objects); +var propertyKeys = [].concat(strings, symbols); +var nonBooleans = [].concat(nullPrimitives, strings, symbols, numbers, objects); +var falsies = [].concat(nullPrimitives, false, '', 0, -0, NaN); +var truthies = [].concat(true, 'foo', 42, symbols, objects); +var timestamps = [].concat(0, 946713600000, 1546329600000); +var nonFunctions = [].concat(primitives, objects, [42]); +var nonArrays = [].concat(nonFunctions); + +var descriptors = { + configurable: function (descriptor) { + return assign(assign({}, descriptor), { '[[Configurable]]': true }); + }, + nonConfigurable: function (descriptor) { + return assign(assign({}, descriptor), { '[[Configurable]]': false }); + }, + enumerable: function (descriptor) { + return assign(assign({}, descriptor), { '[[Enumerable]]': true }); + }, + nonEnumerable: function (descriptor) { + return assign(assign({}, descriptor), { '[[Enumerable]]': false }); + }, + writable: function (descriptor) { + return assign(assign({}, descriptor), { '[[Writable]]': true }); + }, + nonWritable: function (descriptor) { + return assign(assign({}, descriptor), { '[[Writable]]': false }); + } +}; + +module.exports = { + coercibleObject: coercibleObject, + coercibleFnObject: coercibleFnObject, + valueOfOnlyObject: valueOfOnlyObject, + toStringOnlyObject: toStringOnlyObject, + uncoercibleObject: uncoercibleObject, + uncoercibleFnObject: uncoercibleFnObject, + objects: objects, + nonFunctions: nonFunctions, + nonArrays: nonArrays, + nullPrimitives: nullPrimitives, + numbers: numbers, + zeroes: zeroes, + infinities: infinities, + strings: strings, + booleans: booleans, + symbols: symbols, + hasSymbols: hasSymbols, + nonSymbolPrimitives: nonSymbolPrimitives, + nonNumberPrimitives: nonNumberPrimitives, + nonNullPrimitives: nonNullPrimitives, + nonUndefinedPrimitives: nonUndefinedPrimitives, + nonStrings: nonStrings, + nonNumbers: nonNumberPrimitives.concat(objects), + nonIntegerNumbers: nonIntegerNumbers, + primitives: primitives, + nonPropertyKeys: nonPropertyKeys, + propertyKeys: propertyKeys, + nonBooleans: nonBooleans, + falsies: falsies, + truthies: truthies, + timestamps: timestamps, + bothDescriptor: function () { + return { '[[Get]]': function () {}, '[[Value]]': true }; + }, + bothDescriptorWritable: function () { + return descriptors.writable({ '[[Get]]': function () {} }); + }, + accessorDescriptor: function (value) { + return descriptors.enumerable(descriptors.configurable({ + '[[Get]]': function get() { return value; } + })); + }, + mutatorDescriptor: function () { + return descriptors.enumerable(descriptors.configurable({ + '[[Set]]': function () {} + })); + }, + dataDescriptor: function (value) { + return descriptors.nonWritable({ + '[[Value]]': arguments.length > 0 ? value : 42 + }); + }, + genericDescriptor: function () { + return descriptors.configurable(descriptors.nonEnumerable()); + }, + descriptors: descriptors +}; diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/index.js b/tic-tac-toe-app/node_modules/es-abstract/test/index.js new file mode 100644 index 0000000..3f1adba --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/index.js @@ -0,0 +1,35 @@ +'use strict'; + +var ES = require('../'); +var test = require('tape'); +var keys = require('object-keys'); +var forEach = require('foreach'); + +var ESkeys = keys(ES).sort(); +var ES6keys = keys(ES.ES6).sort(); + +test('exposed properties', function (t) { + t.deepEqual(ESkeys, ES6keys.concat(['ES2019', 'ES2018', 'ES2017', 'ES7', 'ES2016', 'ES6', 'ES2015', 'ES5']).sort(), 'main ES object keys match ES6 keys'); + t.end(); +}); + +test('methods match', function (t) { + forEach(ES6keys, function (key) { + t.equal(ES.ES6[key], ES[key], 'method ' + key + ' on main ES object is ES6 method'); + }); + t.end(); +}); + +require('./GetIntrinsic'); + +require('./helpers/getSymbolDescription'); +require('./helpers/OwnPropertyKeys'); + +require('./es5'); +require('./es6'); +require('./es2015'); +require('./es7'); +require('./es2016'); +require('./es2017'); +require('./es2018'); +require('./es2019'); diff --git a/tic-tac-toe-app/node_modules/es-abstract/test/tests.js b/tic-tac-toe-app/node_modules/es-abstract/test/tests.js new file mode 100644 index 0000000..6dbd40a --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-abstract/test/tests.js @@ -0,0 +1,4128 @@ +'use strict'; + +var test = require('tape'); + +var forEach = require('foreach'); +var is = require('object-is'); +var debug = require('object-inspect'); +var assign = require('object.assign'); +var keys = require('object-keys'); +var has = require('has'); +var arrowFns = require('make-arrow-function').list(); +var hasStrictMode = require('has-strict-mode')(); +var functionsHaveNames = require('functions-have-names')(); +var functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames(); + +var $getProto = require('../helpers/getProto'); +var $setProto = require('../helpers/setProto'); +var defineProperty = require('./helpers/defineProperty'); +var getInferredName = require('../helpers/getInferredName'); +var getOwnPropertyDescriptor = require('../helpers/getOwnPropertyDescriptor'); +var assertRecordTests = require('./helpers/assertRecord'); +var v = require('./helpers/values'); +var diffOps = require('./diffOps'); + +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; + +var canDistinguishSparseFromUndefined = 0 in [undefined]; // IE 6 - 8 have a bug where this returns false + +var getArraySubclassWithSpeciesConstructor = function getArraySubclass(speciesConstructor) { + var Bar = function Bar() { + var inst = []; + Object.setPrototypeOf(inst, Bar.prototype); + defineProperty(inst, 'constructor', { value: Bar }); + return inst; + }; + Bar.prototype = Object.create(Array.prototype); + Object.setPrototypeOf(Bar, Array); + defineProperty(Bar, Symbol.species, { value: speciesConstructor }); + + return Bar; +}; + +var testIterator = function (t, iterator, expected) { + var resultCount = 0; + var result; + while (result = iterator.next(), !result.done) { // eslint-disable-line no-sequences + t.deepEqual(result, { done: false, value: expected[resultCount] }, 'result ' + resultCount); + resultCount += 1; + } + t.equal(resultCount, expected.length, 'expected ' + expected.length + ', got ' + resultCount); +}; + +var hasSpecies = v.hasSymbols && Symbol.species; + +var hasLastIndex = 'lastIndex' in (/a/).exec('a'); // IE 8 +var hasGroups = 'groups' in (/a/).exec('a'); // modern engines +var kludgeMatch = function kludgeMatch(R, matchObject) { + if (hasGroups) { + assign(matchObject, { groups: matchObject.groups }); + } + if (hasLastIndex) { + assign(matchObject, { lastIndex: R.lastIndex }); + } + return matchObject; +}; + +var testEnumerableOwnNames = function (t, enumerableOwnNames) { + forEach(v.primitives, function (nonObject) { + t['throws']( + function () { enumerableOwnNames(nonObject); }, + debug(nonObject) + ' is not an Object' + ); + }); + + var Child = function Child() { + this.own = {}; + }; + Child.prototype = { + inherited: {} + }; + + var obj = new Child(); + + t.equal('own' in obj, true, 'has "own"'); + t.equal(has(obj, 'own'), true, 'has own "own"'); + t.equal(Object.prototype.propertyIsEnumerable.call(obj, 'own'), true, 'has enumerable "own"'); + + t.equal('inherited' in obj, true, 'has "inherited"'); + t.equal(has(obj, 'inherited'), false, 'has non-own "inherited"'); + t.equal(has(Child.prototype, 'inherited'), true, 'Child.prototype has own "inherited"'); + t.equal(Child.prototype.inherited, obj.inherited, 'Child.prototype.inherited === obj.inherited'); + t.equal(Object.prototype.propertyIsEnumerable.call(Child.prototype, 'inherited'), true, 'has enumerable "inherited"'); + + t.equal('toString' in obj, true, 'has "toString"'); + t.equal(has(obj, 'toString'), false, 'has non-own "toString"'); + t.equal(has(Object.prototype, 'toString'), true, 'Object.prototype has own "toString"'); + t.equal(Object.prototype.toString, obj.toString, 'Object.prototype.toString === obj.toString'); + // eslint-disable-next-line no-useless-call + t.equal(Object.prototype.propertyIsEnumerable.call(Object.prototype, 'toString'), false, 'has non-enumerable "toString"'); + + return obj; +}; + +var es2015 = function ES2015(ES, ops, expectedMissing, skips) { + test('has expected operations', function (t) { + var diff = diffOps(ES, ops, expectedMissing); + + t.deepEqual(diff.extra, [], 'no extra ops'); + + t.deepEqual(diff.missing, [], 'no unexpected missing ops'); + + t.end(); + }); + + test('ToPrimitive', function (t) { + t.test('primitives', function (st) { + var testPrimitive = function (primitive) { + st.ok(is(ES.ToPrimitive(primitive), primitive), debug(primitive) + ' is returned correctly'); + }; + forEach(v.primitives, testPrimitive); + st.end(); + }); + + t.test('objects', function (st) { + st.equal(ES.ToPrimitive(v.coercibleObject), 3, 'coercibleObject with no hint coerces to valueOf'); + st.ok(is(ES.ToPrimitive({}), '[object Object]'), '{} with no hint coerces to Object#toString'); + st.equal(ES.ToPrimitive(v.coercibleObject, Number), 3, 'coercibleObject with hint Number coerces to valueOf'); + st.ok(is(ES.ToPrimitive({}, Number), '[object Object]'), '{} with hint Number coerces to NaN'); + st.equal(ES.ToPrimitive(v.coercibleObject, String), 42, 'coercibleObject with hint String coerces to nonstringified toString'); + st.equal(ES.ToPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString'); + st.equal(ES.ToPrimitive(v.toStringOnlyObject), 7, 'toStringOnlyObject returns non-stringified toString'); + st.equal(ES.ToPrimitive(v.valueOfOnlyObject), 4, 'valueOfOnlyObject returns valueOf'); + st['throws'](function () { return ES.ToPrimitive(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws a TypeError'); + st.end(); + }); + + t.test('dates', function (st) { + var invalid = new Date(NaN); + st.equal(ES.ToPrimitive(invalid), Date.prototype.toString.call(invalid), 'invalid Date coerces to Date#toString'); + var now = new Date(); + st.equal(ES.ToPrimitive(now), Date.prototype.toString.call(now), 'Date coerces to Date#toString'); + st.end(); + }); + + t.end(); + }); + + test('ToBoolean', function (t) { + t.equal(false, ES.ToBoolean(undefined), 'undefined coerces to false'); + t.equal(false, ES.ToBoolean(null), 'null coerces to false'); + t.equal(false, ES.ToBoolean(false), 'false returns false'); + t.equal(true, ES.ToBoolean(true), 'true returns true'); + + t.test('numbers', function (st) { + forEach(v.zeroes.concat(NaN), function (falsyNumber) { + st.equal(false, ES.ToBoolean(falsyNumber), 'falsy number ' + falsyNumber + ' coerces to false'); + }); + forEach(v.infinities.concat([42, 1]), function (truthyNumber) { + st.equal(true, ES.ToBoolean(truthyNumber), 'truthy number ' + truthyNumber + ' coerces to true'); + }); + + st.end(); + }); + + t.equal(false, ES.ToBoolean(''), 'empty string coerces to false'); + t.equal(true, ES.ToBoolean('foo'), 'nonempty string coerces to true'); + + t.test('objects', function (st) { + forEach(v.objects, function (obj) { + st.equal(true, ES.ToBoolean(obj), 'object coerces to true'); + }); + st.equal(true, ES.ToBoolean(v.uncoercibleObject), 'uncoercibleObject coerces to true'); + + st.end(); + }); + + t.end(); + }); + + test('ToNumber', function (t) { + t.ok(is(NaN, ES.ToNumber(undefined)), 'undefined coerces to NaN'); + t.ok(is(ES.ToNumber(null), 0), 'null coerces to +0'); + t.ok(is(ES.ToNumber(false), 0), 'false coerces to +0'); + t.equal(1, ES.ToNumber(true), 'true coerces to 1'); + + t.test('numbers', function (st) { + st.ok(is(NaN, ES.ToNumber(NaN)), 'NaN returns itself'); + forEach(v.zeroes.concat(v.infinities, 42), function (num) { + st.equal(num, ES.ToNumber(num), num + ' returns itself'); + }); + forEach(['foo', '0', '4a', '2.0', 'Infinity', '-Infinity'], function (numString) { + st.ok(is(+numString, ES.ToNumber(numString)), '"' + numString + '" coerces to ' + Number(numString)); + }); + st.end(); + }); + + t.test('objects', function (st) { + forEach(v.objects, function (object) { + st.ok(is(ES.ToNumber(object), ES.ToNumber(ES.ToPrimitive(object))), 'object ' + object + ' coerces to same as ToPrimitive of object does'); + }); + st['throws'](function () { return ES.ToNumber(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + st.end(); + }); + + t.test('binary literals', function (st) { + st.equal(ES.ToNumber('0b10'), 2, '0b10 is 2'); + st.equal(ES.ToNumber({ toString: function () { return '0b11'; } }), 3, 'Object that toStrings to 0b11 is 3'); + + st.equal(true, is(ES.ToNumber('0b12'), NaN), '0b12 is NaN'); + st.equal(true, is(ES.ToNumber({ toString: function () { return '0b112'; } }), NaN), 'Object that toStrings to 0b112 is NaN'); + st.end(); + }); + + t.test('octal literals', function (st) { + st.equal(ES.ToNumber('0o10'), 8, '0o10 is 8'); + st.equal(ES.ToNumber({ toString: function () { return '0o11'; } }), 9, 'Object that toStrings to 0o11 is 9'); + + st.equal(true, is(ES.ToNumber('0o18'), NaN), '0o18 is NaN'); + st.equal(true, is(ES.ToNumber({ toString: function () { return '0o118'; } }), NaN), 'Object that toStrings to 0o118 is NaN'); + st.end(); + }); + + t.test('signed hex numbers', function (st) { + st.equal(true, is(ES.ToNumber('-0xF'), NaN), '-0xF is NaN'); + st.equal(true, is(ES.ToNumber(' -0xF '), NaN), 'space-padded -0xF is NaN'); + st.equal(true, is(ES.ToNumber('+0xF'), NaN), '+0xF is NaN'); + st.equal(true, is(ES.ToNumber(' +0xF '), NaN), 'space-padded +0xF is NaN'); + + st.end(); + }); + + t.test('trimming of whitespace and non-whitespace characters', function (st) { + var whitespace = ' \t\x0b\f\xa0\ufeff\n\r\u2028\u2029\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000'; + st.equal(0, ES.ToNumber(whitespace + 0 + whitespace), 'whitespace is trimmed'); + + // Zero-width space (zws), next line character (nel), and non-character (bom) are not whitespace. + var nonWhitespaces = { + '\\u0085': '\u0085', + '\\u200b': '\u200b', + '\\ufffe': '\ufffe' + }; + + forEach(nonWhitespaces, function (desc, nonWS) { + st.equal(true, is(ES.ToNumber(nonWS + 0 + nonWS), NaN), 'non-whitespace ' + desc + ' not trimmed'); + }); + + st.end(); + }); + + forEach(v.symbols, function (symbol) { + t['throws']( + function () { ES.ToNumber(symbol); }, + TypeError, + 'Symbols can’t be converted to a Number: ' + debug(symbol) + ); + }); + + t.test('dates', function (st) { + var invalid = new Date(NaN); + st.ok(is(ES.ToNumber(invalid), NaN), 'invalid Date coerces to NaN'); + var now = +new Date(); + st.equal(ES.ToNumber(new Date(now)), now, 'Date coerces to timestamp'); + st.end(); + }); + + t.end(); + }); + + test('ToInteger', function (t) { + t.ok(is(0, ES.ToInteger(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity, 42], function (num) { + t.ok(is(num, ES.ToInteger(num)), num + ' returns itself'); + t.ok(is(-num, ES.ToInteger(-num)), '-' + num + ' returns itself'); + }); + t.equal(3, ES.ToInteger(Math.PI), 'pi returns 3'); + t['throws'](function () { return ES.ToInteger(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.end(); + }); + + test('ToInt32', function (t) { + t.ok(is(0, ES.ToInt32(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToInt32(num)), num + ' returns +0'); + t.ok(is(0, ES.ToInt32(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToInt32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToInt32(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToInt32(0x100000000 - 1), -1), '2^32 - 1 returns -1'); + t.ok(is(ES.ToInt32(0x80000000), -0x80000000), '2^31 returns -2^31'); + t.ok(is(ES.ToInt32(0x80000000 - 1), 0x80000000 - 1), '2^31 - 1 returns 2^31 - 1'); + forEach([0, Infinity, NaN, 0x100000000, 0x80000000, 0x10000, 0x42], function (num) { + t.ok(is(ES.ToInt32(num), ES.ToInt32(ES.ToUint32(num))), 'ToInt32(x) === ToInt32(ToUint32(x)) for 0x' + num.toString(16)); + t.ok(is(ES.ToInt32(-num), ES.ToInt32(ES.ToUint32(-num))), 'ToInt32(x) === ToInt32(ToUint32(x)) for -0x' + num.toString(16)); + }); + t.end(); + }); + + test('ToUint32', function (t) { + t.ok(is(0, ES.ToUint32(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToUint32(num)), num + ' returns +0'); + t.ok(is(0, ES.ToUint32(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToUint32(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToUint32(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToUint32(0x100000000 - 1), 0x100000000 - 1), '2^32 - 1 returns 2^32 - 1'); + t.ok(is(ES.ToUint32(0x80000000), 0x80000000), '2^31 returns 2^31'); + t.ok(is(ES.ToUint32(0x80000000 - 1), 0x80000000 - 1), '2^31 - 1 returns 2^31 - 1'); + forEach([0, Infinity, NaN, 0x100000000, 0x80000000, 0x10000, 0x42], function (num) { + t.ok(is(ES.ToUint32(num), ES.ToUint32(ES.ToInt32(num))), 'ToUint32(x) === ToUint32(ToInt32(x)) for 0x' + num.toString(16)); + t.ok(is(ES.ToUint32(-num), ES.ToUint32(ES.ToInt32(-num))), 'ToUint32(x) === ToUint32(ToInt32(x)) for -0x' + num.toString(16)); + }); + t.end(); + }); + + test('ToInt16', function (t) { + t.ok(is(0, ES.ToInt16(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToInt16(num)), num + ' returns +0'); + t.ok(is(0, ES.ToInt16(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToInt16(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToInt16(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToInt16(0x100000000 - 1), -1), '2^32 - 1 returns -1'); + t.ok(is(ES.ToInt16(0x80000000), 0), '2^31 returns +0'); + t.ok(is(ES.ToInt16(0x80000000 - 1), -1), '2^31 - 1 returns -1'); + t.ok(is(ES.ToInt16(0x10000), 0), '2^16 returns +0'); + t.ok(is(ES.ToInt16(0x10000 - 1), -1), '2^16 - 1 returns -1'); + t.end(); + }); + + test('ToUint16', function (t) { + t.ok(is(0, ES.ToUint16(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToUint16(num)), num + ' returns +0'); + t.ok(is(0, ES.ToUint16(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToUint16(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToUint16(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToUint16(0x100000000 - 1), 0x10000 - 1), '2^32 - 1 returns 2^16 - 1'); + t.ok(is(ES.ToUint16(0x80000000), 0), '2^31 returns +0'); + t.ok(is(ES.ToUint16(0x80000000 - 1), 0x10000 - 1), '2^31 - 1 returns 2^16 - 1'); + t.ok(is(ES.ToUint16(0x10000), 0), '2^16 returns +0'); + t.ok(is(ES.ToUint16(0x10000 - 1), 0x10000 - 1), '2^16 - 1 returns 2^16 - 1'); + t.end(); + }); + + test('ToInt8', function (t) { + t.ok(is(0, ES.ToInt8(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToInt8(num)), num + ' returns +0'); + t.ok(is(0, ES.ToInt8(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToInt8(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToInt8(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToInt8(0x100000000 - 1), -1), '2^32 - 1 returns -1'); + t.ok(is(ES.ToInt8(0x80000000), 0), '2^31 returns +0'); + t.ok(is(ES.ToInt8(0x80000000 - 1), -1), '2^31 - 1 returns -1'); + t.ok(is(ES.ToInt8(0x10000), 0), '2^16 returns +0'); + t.ok(is(ES.ToInt8(0x10000 - 1), -1), '2^16 - 1 returns -1'); + t.ok(is(ES.ToInt8(0x100), 0), '2^8 returns +0'); + t.ok(is(ES.ToInt8(0x100 - 1), -1), '2^8 - 1 returns -1'); + t.ok(is(ES.ToInt8(0x10), 0x10), '2^4 returns 2^4'); + t.end(); + }); + + test('ToUint8', function (t) { + t.ok(is(0, ES.ToUint8(NaN)), 'NaN coerces to +0'); + forEach([0, Infinity], function (num) { + t.ok(is(0, ES.ToUint8(num)), num + ' returns +0'); + t.ok(is(0, ES.ToUint8(-num)), '-' + num + ' returns +0'); + }); + t['throws'](function () { return ES.ToUint8(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + t.ok(is(ES.ToUint8(0x100000000), 0), '2^32 returns +0'); + t.ok(is(ES.ToUint8(0x100000000 - 1), 0x100 - 1), '2^32 - 1 returns 2^8 - 1'); + t.ok(is(ES.ToUint8(0x80000000), 0), '2^31 returns +0'); + t.ok(is(ES.ToUint8(0x80000000 - 1), 0x100 - 1), '2^31 - 1 returns 2^8 - 1'); + t.ok(is(ES.ToUint8(0x10000), 0), '2^16 returns +0'); + t.ok(is(ES.ToUint8(0x10000 - 1), 0x100 - 1), '2^16 - 1 returns 2^8 - 1'); + t.ok(is(ES.ToUint8(0x100), 0), '2^8 returns +0'); + t.ok(is(ES.ToUint8(0x100 - 1), 0x100 - 1), '2^8 - 1 returns 2^16 - 1'); + t.ok(is(ES.ToUint8(0x10), 0x10), '2^4 returns 2^4'); + t.ok(is(ES.ToUint8(0x10 - 1), 0x10 - 1), '2^4 - 1 returns 2^4 - 1'); + t.end(); + }); + + test('ToUint8Clamp', function (t) { + t.ok(is(0, ES.ToUint8Clamp(NaN)), 'NaN coerces to +0'); + t.ok(is(0, ES.ToUint8Clamp(0)), '+0 returns +0'); + t.ok(is(0, ES.ToUint8Clamp(-0)), '-0 returns +0'); + t.ok(is(0, ES.ToUint8Clamp(-Infinity)), '-Infinity returns +0'); + t['throws'](function () { return ES.ToUint8Clamp(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + forEach([255, 256, 0x100000, Infinity], function (number) { + t.ok(is(255, ES.ToUint8Clamp(number)), number + ' coerces to 255'); + }); + t.equal(1, ES.ToUint8Clamp(1.49), '1.49 coerces to 1'); + t.equal(2, ES.ToUint8Clamp(1.5), '1.5 coerces to 2, because 2 is even'); + t.equal(2, ES.ToUint8Clamp(1.51), '1.51 coerces to 2'); + + t.equal(2, ES.ToUint8Clamp(2.49), '2.49 coerces to 2'); + t.equal(2, ES.ToUint8Clamp(2.5), '2.5 coerces to 2, because 2 is even'); + t.equal(3, ES.ToUint8Clamp(2.51), '2.51 coerces to 3'); + t.end(); + }); + + test('ToString', function (t) { + forEach(v.objects.concat(v.nonSymbolPrimitives), function (item) { + t.equal(ES.ToString(item), String(item), 'ES.ToString(' + debug(item) + ') ToStrings to String(' + debug(item) + ')'); + }); + + t['throws'](function () { return ES.ToString(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws'); + + forEach(v.symbols, function (symbol) { + t['throws'](function () { return ES.ToString(symbol); }, TypeError, debug(symbol) + ' throws'); + }); + t.end(); + }); + + test('ToObject', function (t) { + t['throws'](function () { return ES.ToObject(undefined); }, TypeError, 'undefined throws'); + t['throws'](function () { return ES.ToObject(null); }, TypeError, 'null throws'); + forEach(v.numbers, function (number) { + var obj = ES.ToObject(number); + t.equal(typeof obj, 'object', 'number ' + number + ' coerces to object'); + t.equal(true, obj instanceof Number, 'object of ' + number + ' is Number object'); + t.ok(is(obj.valueOf(), number), 'object of ' + number + ' coerces to ' + number); + }); + t.end(); + }); + + test('RequireObjectCoercible', function (t) { + t.equal(false, 'CheckObjectCoercible' in ES, 'CheckObjectCoercible -> RequireObjectCoercible in ES6'); + t['throws'](function () { return ES.RequireObjectCoercible(undefined); }, TypeError, 'undefined throws'); + t['throws'](function () { return ES.RequireObjectCoercible(null); }, TypeError, 'null throws'); + var isCoercible = function (value) { + t.doesNotThrow(function () { return ES.RequireObjectCoercible(value); }, debug(value) + ' does not throw'); + }; + forEach(v.objects.concat(v.nonNullPrimitives), isCoercible); + t.end(); + }); + + test('IsCallable', function (t) { + t.equal(true, ES.IsCallable(function () {}), 'function is callable'); + var nonCallables = [/a/g, {}, Object.prototype, NaN].concat(v.nonFunctions); + forEach(nonCallables, function (nonCallable) { + t.equal(false, ES.IsCallable(nonCallable), debug(nonCallable) + ' is not callable'); + }); + t.end(); + }); + + test('SameValue', function (t) { + t.equal(true, ES.SameValue(NaN, NaN), 'NaN is SameValue as NaN'); + t.equal(false, ES.SameValue(0, -0), '+0 is not SameValue as -0'); + forEach(v.objects.concat(v.primitives), function (val) { + t.equal(val === val, ES.SameValue(val, val), debug(val) + ' is SameValue to itself'); + }); + t.end(); + }); + + test('SameValueZero', function (t) { + t.equal(true, ES.SameValueZero(NaN, NaN), 'NaN is SameValueZero as NaN'); + t.equal(true, ES.SameValueZero(0, -0), '+0 is SameValueZero as -0'); + forEach(v.objects.concat(v.primitives), function (val) { + t.equal(val === val, ES.SameValueZero(val, val), debug(val) + ' is SameValueZero to itself'); + }); + t.end(); + }); + + test('ToPropertyKey', function (t) { + forEach(v.objects.concat(v.nonSymbolPrimitives), function (value) { + t.equal(ES.ToPropertyKey(value), String(value), 'ToPropertyKey(value) === String(value) for non-Symbols'); + }); + + forEach(v.symbols, function (symbol) { + t.equal( + ES.ToPropertyKey(symbol), + symbol, + 'ToPropertyKey(' + debug(symbol) + ') === ' + debug(symbol) + ); + t.equal( + ES.ToPropertyKey(Object(symbol)), + symbol, + 'ToPropertyKey(' + debug(Object(symbol)) + ') === ' + debug(symbol) + ); + }); + + t.end(); + }); + + test('ToLength', function (t) { + t['throws'](function () { return ES.ToLength(v.uncoercibleObject); }, TypeError, 'uncoercibleObject throws a TypeError'); + t.equal(3, ES.ToLength(v.coercibleObject), 'coercibleObject coerces to 3'); + t.equal(42, ES.ToLength('42.5'), '"42.5" coerces to 42'); + t.equal(7, ES.ToLength(7.3), '7.3 coerces to 7'); + forEach([-0, -1, -42, -Infinity], function (negative) { + t.ok(is(0, ES.ToLength(negative)), negative + ' coerces to +0'); + }); + t.equal(MAX_SAFE_INTEGER, ES.ToLength(MAX_SAFE_INTEGER + 1), '2^53 coerces to 2^53 - 1'); + t.equal(MAX_SAFE_INTEGER, ES.ToLength(MAX_SAFE_INTEGER + 3), '2^53 + 2 coerces to 2^53 - 1'); + t.end(); + }); + + test('IsArray', function (t) { + t.equal(true, ES.IsArray([]), '[] is array'); + t.equal(false, ES.IsArray({}), '{} is not array'); + t.equal(false, ES.IsArray({ length: 1, 0: true }), 'arraylike object is not array'); + forEach(v.objects.concat(v.primitives), function (value) { + t.equal(false, ES.IsArray(value), debug(value) + ' is not array'); + }); + t.end(); + }); + + test('IsRegExp', function (t) { + forEach([/a/g, new RegExp('a', 'g')], function (regex) { + t.equal(true, ES.IsRegExp(regex), regex + ' is regex'); + }); + + forEach(v.objects.concat(v.primitives), function (nonRegex) { + t.equal(false, ES.IsRegExp(nonRegex), debug(nonRegex) + ' is not regex'); + }); + + t.test('Symbol.match', { skip: !v.hasSymbols || !Symbol.match }, function (st) { + var obj = {}; + obj[Symbol.match] = true; + st.equal(true, ES.IsRegExp(obj), 'object with truthy Symbol.match is regex'); + + var regex = /a/; + regex[Symbol.match] = false; + st.equal(false, ES.IsRegExp(regex), 'regex with falsy Symbol.match is not regex'); + + st.end(); + }); + + t.end(); + }); + + test('IsPropertyKey', function (t) { + forEach(v.numbers.concat(v.objects), function (notKey) { + t.equal(false, ES.IsPropertyKey(notKey), debug(notKey) + ' is not property key'); + }); + + t.equal(true, ES.IsPropertyKey('foo'), 'string is property key'); + + forEach(v.symbols, function (symbol) { + t.equal(true, ES.IsPropertyKey(symbol), debug(symbol) + ' is property key'); + }); + t.end(); + }); + + test('IsInteger', function (t) { + for (var i = -100; i < 100; i += 10) { + t.equal(true, ES.IsInteger(i), i + ' is integer'); + t.equal(false, ES.IsInteger(i + 0.2), (i + 0.2) + ' is not integer'); + } + t.equal(true, ES.IsInteger(-0), '-0 is integer'); + var notInts = v.nonNumbers.concat(v.nonIntegerNumbers, v.infinities, [NaN, [], new Date()]); + forEach(notInts, function (notInt) { + t.equal(false, ES.IsInteger(notInt), debug(notInt) + ' is not integer'); + }); + t.equal(false, ES.IsInteger(v.uncoercibleObject), 'uncoercibleObject is not integer'); + t.end(); + }); + + test('IsExtensible', function (t) { + forEach(v.objects, function (object) { + t.equal(true, ES.IsExtensible(object), debug(object) + ' object is extensible'); + }); + forEach(v.primitives, function (primitive) { + t.equal(false, ES.IsExtensible(primitive), debug(primitive) + ' is not extensible'); + }); + if (Object.preventExtensions) { + t.equal(false, ES.IsExtensible(Object.preventExtensions({})), 'object with extensions prevented is not extensible'); + } + t.end(); + }); + + test('CanonicalNumericIndexString', function (t) { + var throwsOnNonString = function (notString) { + t['throws']( + function () { return ES.CanonicalNumericIndexString(notString); }, + TypeError, + debug(notString) + ' is not a string' + ); + }; + forEach(v.objects.concat(v.numbers), throwsOnNonString); + t.ok(is(-0, ES.CanonicalNumericIndexString('-0')), '"-0" returns -0'); + for (var i = -50; i < 50; i += 10) { + t.equal(i, ES.CanonicalNumericIndexString(String(i)), '"' + i + '" returns ' + i); + t.equal(undefined, ES.CanonicalNumericIndexString(String(i) + 'a'), '"' + i + 'a" returns undefined'); + } + t.end(); + }); + + test('IsConstructor', function (t) { + t.equal(true, ES.IsConstructor(function () {}), 'function is constructor'); + t.equal(false, ES.IsConstructor(/a/g), 'regex is not constructor'); + forEach(v.objects, function (object) { + t.equal(false, ES.IsConstructor(object), object + ' object is not constructor'); + }); + + try { + var foo = Function('return class Foo {}')(); // eslint-disable-line no-new-func + t.equal(ES.IsConstructor(foo), true, 'class is constructor'); + } catch (e) { + t.comment('SKIP: class syntax not supported.'); + } + t.end(); + }); + + test('Call', function (t) { + var receiver = {}; + var notFuncs = v.nonFunctions.concat([/a/g, new RegExp('a', 'g')]); + t.plan(notFuncs.length + 4); + var throwsIfNotCallable = function (notFunc) { + t['throws']( + function () { return ES.Call(notFunc, receiver); }, + TypeError, + debug(notFunc) + ' (' + typeof notFunc + ') is not callable' + ); + }; + forEach(notFuncs, throwsIfNotCallable); + ES.Call( + function (a, b) { + t.equal(this, receiver, 'context matches expected'); + t.deepEqual([a, b], [1, 2], 'named args are correct'); + t.equal(arguments.length, 3, 'extra argument was passed'); + t.equal(arguments[2], 3, 'extra argument was correct'); + }, + receiver, + [1, 2, 3] + ); + t.end(); + }); + + test('GetV', function (t) { + t['throws'](function () { return ES.GetV({ 7: 7 }, 7); }, TypeError, 'Throws a TypeError if `P` is not a property key'); + var obj = { a: function () {} }; + t.equal(ES.GetV(obj, 'a'), obj.a, 'returns property if it exists'); + t.equal(ES.GetV(obj, 'b'), undefined, 'returns undefiend if property does not exist'); + t.end(); + }); + + test('GetMethod', function (t) { + t['throws'](function () { return ES.GetMethod({ 7: 7 }, 7); }, TypeError, 'Throws a TypeError if `P` is not a property key'); + t.equal(ES.GetMethod({}, 'a'), undefined, 'returns undefined in property is undefined'); + t.equal(ES.GetMethod({ a: null }, 'a'), undefined, 'returns undefined if property is null'); + t.equal(ES.GetMethod({ a: undefined }, 'a'), undefined, 'returns undefined if property is undefined'); + var obj = { a: function () {} }; + t['throws'](function () { ES.GetMethod({ a: 'b' }, 'a'); }, TypeError, 'throws TypeError if property exists and is not callable'); + t.equal(ES.GetMethod(obj, 'a'), obj.a, 'returns property if it is callable'); + t.end(); + }); + + test('Get', function (t) { + t['throws'](function () { return ES.Get('a', 'a'); }, TypeError, 'Throws a TypeError if `O` is not an Object'); + t['throws'](function () { return ES.Get({ 7: 7 }, 7); }, TypeError, 'Throws a TypeError if `P` is not a property key'); + + var value = {}; + t.test('Symbols', { skip: !v.hasSymbols }, function (st) { + var sym = Symbol('sym'); + var obj = {}; + obj[sym] = value; + st.equal(ES.Get(obj, sym), value, 'returns property `P` if it exists on object `O`'); + st.end(); + }); + t.equal(ES.Get({ a: value }, 'a'), value, 'returns property `P` if it exists on object `O`'); + t.end(); + }); + + test('Type', { skip: !v.hasSymbols }, function (t) { + t.equal(ES.Type(Symbol.iterator), 'Symbol', 'Type(Symbol.iterator) is Symbol'); + t.end(); + }); + + test('SpeciesConstructor', function (t) { + t['throws'](function () { ES.SpeciesConstructor(null); }, TypeError); + t['throws'](function () { ES.SpeciesConstructor(undefined); }, TypeError); + + var defaultConstructor = function Foo() {}; + + t.equal( + ES.SpeciesConstructor({ constructor: undefined }, defaultConstructor), + defaultConstructor, + 'undefined constructor returns defaultConstructor' + ); + + t['throws']( + function () { return ES.SpeciesConstructor({ constructor: null }, defaultConstructor); }, + TypeError, + 'non-undefined non-object constructor throws' + ); + + t.test('with Symbol.species', { skip: !hasSpecies }, function (st) { + var Bar = function Bar() {}; + Bar[Symbol.species] = null; + + st.equal( + ES.SpeciesConstructor(new Bar(), defaultConstructor), + defaultConstructor, + 'undefined/null Symbol.species returns default constructor' + ); + + var Baz = function Baz() {}; + Baz[Symbol.species] = Bar; + st.equal( + ES.SpeciesConstructor(new Baz(), defaultConstructor), + Bar, + 'returns Symbol.species constructor value' + ); + + Baz[Symbol.species] = {}; + st['throws']( + function () { ES.SpeciesConstructor(new Baz(), defaultConstructor); }, + TypeError, + 'throws when non-constructor non-null non-undefined species value found' + ); + + st.end(); + }); + + t.end(); + }); + + test('IsPropertyDescriptor', { skip: skips && skips.IsPropertyDescriptor }, function (t) { + forEach(v.nonUndefinedPrimitives, function (primitive) { + t.equal( + ES.IsPropertyDescriptor(primitive), + false, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + t.equal(ES.IsPropertyDescriptor({ invalid: true }), false, 'invalid keys not allowed on a Property Descriptor'); + + t.equal(ES.IsPropertyDescriptor({}), true, 'empty object is an incomplete Property Descriptor'); + + t.equal(ES.IsPropertyDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is a Property Descriptor'); + t.equal(ES.IsPropertyDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is a Property Descriptor'); + t.equal(ES.IsPropertyDescriptor(v.dataDescriptor()), true, 'data descriptor is a Property Descriptor'); + t.equal(ES.IsPropertyDescriptor(v.genericDescriptor()), true, 'generic descriptor is a Property Descriptor'); + + t['throws']( + function () { ES.IsPropertyDescriptor(v.bothDescriptor()); }, + TypeError, + 'a Property Descriptor can not be both a Data and an Accessor Descriptor' + ); + + t.end(); + }); + + assertRecordTests(ES, test); + + test('IsAccessorDescriptor', function (t) { + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.IsAccessorDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + t.equal(ES.IsAccessorDescriptor(), false, 'no value is not an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(undefined), false, 'undefined value is not an Accessor Descriptor'); + + t.equal(ES.IsAccessorDescriptor(v.accessorDescriptor()), true, 'accessor descriptor is an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(v.mutatorDescriptor()), true, 'mutator descriptor is an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(v.dataDescriptor()), false, 'data descriptor is not an Accessor Descriptor'); + t.equal(ES.IsAccessorDescriptor(v.genericDescriptor()), false, 'generic descriptor is not an Accessor Descriptor'); + + t.end(); + }); + + test('IsDataDescriptor', function (t) { + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.IsDataDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + t.equal(ES.IsDataDescriptor(), false, 'no value is not a Data Descriptor'); + t.equal(ES.IsDataDescriptor(undefined), false, 'undefined value is not a Data Descriptor'); + + t.equal(ES.IsDataDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a Data Descriptor'); + t.equal(ES.IsDataDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a Data Descriptor'); + t.equal(ES.IsDataDescriptor(v.dataDescriptor()), true, 'data descriptor is a Data Descriptor'); + t.equal(ES.IsDataDescriptor(v.genericDescriptor()), false, 'generic descriptor is not a Data Descriptor'); + + t.end(); + }); + + test('IsGenericDescriptor', function (t) { + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.IsGenericDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + t.equal(ES.IsGenericDescriptor(), false, 'no value is not a Data Descriptor'); + t.equal(ES.IsGenericDescriptor(undefined), false, 'undefined value is not a Data Descriptor'); + + t.equal(ES.IsGenericDescriptor(v.accessorDescriptor()), false, 'accessor descriptor is not a generic Descriptor'); + t.equal(ES.IsGenericDescriptor(v.mutatorDescriptor()), false, 'mutator descriptor is not a generic Descriptor'); + t.equal(ES.IsGenericDescriptor(v.dataDescriptor()), false, 'data descriptor is not a generic Descriptor'); + + t.equal(ES.IsGenericDescriptor(v.genericDescriptor()), true, 'generic descriptor is a generic Descriptor'); + + t.end(); + }); + + test('FromPropertyDescriptor', function (t) { + t.equal(ES.FromPropertyDescriptor(), undefined, 'no value begets undefined'); + t.equal(ES.FromPropertyDescriptor(undefined), undefined, 'undefined value begets undefined'); + + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.FromPropertyDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + var accessor = v.accessorDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(accessor), { + get: accessor['[[Get]]'], + enumerable: !!accessor['[[Enumerable]]'], + configurable: !!accessor['[[Configurable]]'] + }); + + var mutator = v.mutatorDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(mutator), { + set: mutator['[[Set]]'], + enumerable: !!mutator['[[Enumerable]]'], + configurable: !!mutator['[[Configurable]]'] + }); + var data = v.dataDescriptor(); + t.deepEqual(ES.FromPropertyDescriptor(data), { + value: data['[[Value]]'], + writable: data['[[Writable]]'] + }); + + t.deepEqual(ES.FromPropertyDescriptor(v.genericDescriptor()), { + enumerable: false, + configurable: true + }); + + t.end(); + }); + + test('ToPropertyDescriptor', function (t) { + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.ToPropertyDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + + var accessor = v.accessorDescriptor(); + t.deepEqual(ES.ToPropertyDescriptor({ + get: accessor['[[Get]]'], + enumerable: !!accessor['[[Enumerable]]'], + configurable: !!accessor['[[Configurable]]'] + }), accessor); + + var mutator = v.mutatorDescriptor(); + t.deepEqual(ES.ToPropertyDescriptor({ + set: mutator['[[Set]]'], + enumerable: !!mutator['[[Enumerable]]'], + configurable: !!mutator['[[Configurable]]'] + }), mutator); + + var data = v.dataDescriptor(); + t.deepEqual(ES.ToPropertyDescriptor({ + value: data['[[Value]]'], + writable: data['[[Writable]]'], + configurable: !!data['[[Configurable]]'] + }), assign(data, { '[[Configurable]]': false })); + + var both = v.bothDescriptor(); + t['throws']( + function () { + ES.FromPropertyDescriptor({ get: both['[[Get]]'], value: both['[[Value]]'] }); + }, + TypeError, + 'data and accessor descriptors are mutually exclusive' + ); + + t.end(); + }); + + test('CompletePropertyDescriptor', function (t) { + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.CompletePropertyDescriptor(primitive); }, + TypeError, + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + var generic = v.genericDescriptor(); + t.deepEqual( + ES.CompletePropertyDescriptor(generic), + { + '[[Configurable]]': !!generic['[[Configurable]]'], + '[[Enumerable]]': !!generic['[[Enumerable]]'], + '[[Value]]': undefined, + '[[Writable]]': false + }, + 'completes a Generic Descriptor' + ); + + var data = v.dataDescriptor(); + t.deepEqual( + ES.CompletePropertyDescriptor(data), + { + '[[Configurable]]': !!data['[[Configurable]]'], + '[[Enumerable]]': false, + '[[Value]]': data['[[Value]]'], + '[[Writable]]': !!data['[[Writable]]'] + }, + 'completes a Data Descriptor' + ); + + var accessor = v.accessorDescriptor(); + t.deepEqual( + ES.CompletePropertyDescriptor(accessor), + { + '[[Get]]': accessor['[[Get]]'], + '[[Enumerable]]': !!accessor['[[Enumerable]]'], + '[[Configurable]]': !!accessor['[[Configurable]]'], + '[[Set]]': undefined + }, + 'completes an Accessor Descriptor' + ); + + var mutator = v.mutatorDescriptor(); + t.deepEqual( + ES.CompletePropertyDescriptor(mutator), + { + '[[Set]]': mutator['[[Set]]'], + '[[Enumerable]]': !!mutator['[[Enumerable]]'], + '[[Configurable]]': !!mutator['[[Configurable]]'], + '[[Get]]': undefined + }, + 'completes a mutator Descriptor' + ); + + t['throws']( + function () { ES.CompletePropertyDescriptor(v.bothDescriptor()); }, + TypeError, + 'data and accessor descriptors are mutually exclusive' + ); + + t.end(); + }); + + test('Set', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.Set(primitive, '', null, false); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonKey) { + t['throws']( + function () { ES.Set({}, nonKey, null, false); }, + TypeError, + debug(nonKey) + ' is not a Property Key' + ); + }); + + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { ES.Set({}, '', null, nonBoolean); }, + TypeError, + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + var o = {}; + var value = {}; + ES.Set(o, 'key', value, true); + t.deepEqual(o, { key: value }, 'key is set'); + + t.test('nonwritable', { skip: !defineProperty.oDP }, function (st) { + var obj = { a: value }; + defineProperty(obj, 'a', { writable: false }); + + st['throws']( + function () { ES.Set(obj, 'a', value, true); }, + TypeError, + 'can not Set nonwritable property' + ); + + st.doesNotThrow( + function () { ES.Set(obj, 'a', value, false); }, + 'setting Throw to false prevents an exception' + ); + + st.end(); + }); + + t.test('nonconfigurable', { skip: !defineProperty.oDP }, function (st) { + var obj = { a: value }; + defineProperty(obj, 'a', { configurable: false }); + + ES.Set(obj, 'a', value, true); + st.deepEqual(obj, { a: value }, 'key is set'); + + st.end(); + }); + + t.end(); + }); + + test('HasOwnProperty', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.HasOwnProperty(primitive, 'key'); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonKey) { + t['throws']( + function () { ES.HasOwnProperty({}, nonKey); }, + TypeError, + debug(nonKey) + ' is not a Property Key' + ); + }); + + t.equal(ES.HasOwnProperty({}, 'toString'), false, 'inherited properties are not own'); + t.equal( + ES.HasOwnProperty({ toString: 1 }, 'toString'), + true, + 'shadowed inherited own properties are own' + ); + t.equal(ES.HasOwnProperty({ a: 1 }, 'a'), true, 'own properties are own'); + + t.end(); + }); + + test('HasProperty', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.HasProperty(primitive, 'key'); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonKey) { + t['throws']( + function () { ES.HasProperty({}, nonKey); }, + TypeError, + debug(nonKey) + ' is not a Property Key' + ); + }); + + t.equal(ES.HasProperty({}, 'nope'), false, 'object does not have nonexistent properties'); + t.equal(ES.HasProperty({}, 'toString'), true, 'object has inherited properties'); + t.equal( + ES.HasProperty({ toString: 1 }, 'toString'), + true, + 'object has shadowed inherited own properties' + ); + t.equal(ES.HasProperty({ a: 1 }, 'a'), true, 'object has own properties'); + + t.end(); + }); + + test('IsConcatSpreadable', function (t) { + forEach(v.primitives, function (primitive) { + t.equal(ES.IsConcatSpreadable(primitive), false, debug(primitive) + ' is not an Object'); + }); + + var hasSymbolConcatSpreadable = v.hasSymbols && Symbol.isConcatSpreadable; + t.test('Symbol.isConcatSpreadable', { skip: !hasSymbolConcatSpreadable }, function (st) { + forEach(v.falsies, function (falsy) { + var obj = {}; + obj[Symbol.isConcatSpreadable] = falsy; + st.equal( + ES.IsConcatSpreadable(obj), + false, + 'an object with ' + debug(falsy) + ' as Symbol.isConcatSpreadable is not concat spreadable' + ); + }); + + forEach(v.truthies, function (truthy) { + var obj = {}; + obj[Symbol.isConcatSpreadable] = truthy; + st.equal( + ES.IsConcatSpreadable(obj), + true, + 'an object with ' + debug(truthy) + ' as Symbol.isConcatSpreadable is concat spreadable' + ); + }); + + st.end(); + }); + + forEach(v.objects, function (object) { + t.equal( + ES.IsConcatSpreadable(object), + false, + 'non-array without Symbol.isConcatSpreadable is not concat spreadable' + ); + }); + + t.equal(ES.IsConcatSpreadable([]), true, 'arrays are concat spreadable'); + + t.end(); + }); + + test('Invoke', function (t) { + forEach(v.nonPropertyKeys, function (nonKey) { + t['throws']( + function () { ES.Invoke({}, nonKey); }, + TypeError, + debug(nonKey) + ' is not a Property Key' + ); + }); + + t['throws'](function () { ES.Invoke({ o: false }, 'o'); }, TypeError, 'fails on a non-function'); + + t.test('invoked callback', function (st) { + var aValue = {}; + var bValue = {}; + var obj = { + f: function (a) { + st.equal(arguments.length, 2, '2 args passed'); + st.equal(a, aValue, 'first arg is correct'); + st.equal(arguments[1], bValue, 'second arg is correct'); + } + }; + st.plan(3); + ES.Invoke(obj, 'f', aValue, bValue); + }); + + t.end(); + }); + + test('GetIterator', function (t) { + var arr = [1, 2]; + testIterator(t, ES.GetIterator(arr), arr); + + testIterator(t, ES.GetIterator('abc'), 'abc'.split('')); + + t.test('Symbol.iterator', { skip: !v.hasSymbols }, function (st) { + var m = new Map(); + m.set(1, 'a'); + m.set(2, 'b'); + + testIterator(st, ES.GetIterator(m), [[1, 'a'], [2, 'b']]); + + st.end(); + }); + + t.end(); + }); + + test('IteratorNext', { skip: true }); + + test('IteratorComplete', { skip: true }); + + test('IteratorValue', { skip: true }); + + test('IteratorStep', { skip: true }); + + test('IteratorClose', { skip: true }); + + test('CreateIterResultObject', function (t) { + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { ES.CreateIterResultObject({}, nonBoolean); }, + TypeError, + '"done" argument must be a boolean; ' + debug(nonBoolean) + ' is not' + ); + }); + + var value = {}; + t.deepEqual( + ES.CreateIterResultObject(value, true), + { value: value, done: true }, + 'creates a "done" iteration result' + ); + t.deepEqual( + ES.CreateIterResultObject(value, false), + { value: value, done: false }, + 'creates a "not done" iteration result' + ); + + t.end(); + }); + + test('RegExpExec', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.RegExpExec(primitive); }, + TypeError, + '"R" argument must be an object; ' + debug(primitive) + ' is not' + ); + }); + + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { ES.RegExpExec({}, nonString); }, + TypeError, + '"S" argument must be a String; ' + debug(nonString) + ' is not' + ); + }); + + t.test('gets and calls a callable "exec"', function (st) { + var str = '123'; + var o = { + exec: function (S) { + st.equal(this, o, '"exec" receiver is R'); + st.equal(S, str, '"exec" argument is S'); + + return null; + } + }; + st.plan(2); + ES.RegExpExec(o, str); + st.end(); + }); + + t.test('throws if a callable "exec" returns a non-null non-object', function (st) { + var str = '123'; + st.plan(v.nonNullPrimitives.length); + forEach(v.nonNullPrimitives, function (nonNullPrimitive) { + st['throws']( + function () { ES.RegExpExec({ exec: function () { return nonNullPrimitive; } }, str); }, + TypeError, + '"exec" method must return `null` or an Object; ' + debug(nonNullPrimitive) + ' is not' + ); + }); + st.end(); + }); + + t.test('actual regex that should match against a string', function (st) { + var S = 'aabc'; + var R = /a/g; + var match1 = ES.RegExpExec(R, S); + var expected1 = assign(['a'], kludgeMatch(R, { index: 0, input: S })); + var match2 = ES.RegExpExec(R, S); + var expected2 = assign(['a'], kludgeMatch(R, { index: 1, input: S })); + var match3 = ES.RegExpExec(R, S); + st.deepEqual(match1, expected1, 'match object 1 is as expected'); + st.deepEqual(match2, expected2, 'match object 2 is as expected'); + st.equal(match3, null, 'match 3 is null as expected'); + st.end(); + }); + + t.test('actual regex that should match against a string, with shadowed "exec"', function (st) { + var S = 'aabc'; + var R = /a/g; + R.exec = undefined; + var match1 = ES.RegExpExec(R, S); + var expected1 = assign(['a'], kludgeMatch(R, { index: 0, input: S })); + var match2 = ES.RegExpExec(R, S); + var expected2 = assign(['a'], kludgeMatch(R, { index: 1, input: S })); + var match3 = ES.RegExpExec(R, S); + st.deepEqual(match1, expected1, 'match object 1 is as expected'); + st.deepEqual(match2, expected2, 'match object 2 is as expected'); + st.equal(match3, null, 'match 3 is null as expected'); + st.end(); + }); + t.end(); + }); + + test('ArraySpeciesCreate', function (t) { + t.test('errors', function (st) { + var testNonNumber = function (nonNumber) { + st['throws']( + function () { ES.ArraySpeciesCreate([], nonNumber); }, + TypeError, + debug(nonNumber) + ' is not a number' + ); + }; + forEach(v.nonNumbers, testNonNumber); + + st['throws']( + function () { ES.ArraySpeciesCreate([], -1); }, + TypeError, + '-1 is not >= 0' + ); + st['throws']( + function () { ES.ArraySpeciesCreate([], -Infinity); }, + TypeError, + '-Infinity is not >= 0' + ); + + var testNonIntegers = function (nonInteger) { + st['throws']( + function () { ES.ArraySpeciesCreate([], nonInteger); }, + TypeError, + debug(nonInteger) + ' is not an integer' + ); + }; + forEach(v.nonIntegerNumbers, testNonIntegers); + + st.end(); + }); + + t.test('works with a non-array', function (st) { + forEach(v.objects.concat(v.primitives), function (nonArray) { + var arr = ES.ArraySpeciesCreate(nonArray, 0); + st.ok(ES.IsArray(arr), 'is an array'); + st.equal(arr.length, 0, 'length is correct'); + st.equal(arr.constructor, Array, 'constructor is correct'); + }); + + st.end(); + }); + + t.test('works with a normal array', function (st) { + var len = 2; + var orig = [1, 2, 3]; + var arr = ES.ArraySpeciesCreate(orig, len); + + st.ok(ES.IsArray(arr), 'is an array'); + st.equal(arr.length, len, 'length is correct'); + st.equal(arr.constructor, orig.constructor, 'constructor is correct'); + + st.end(); + }); + + t.test('-0 length produces +0 length', function (st) { + var len = -0; + st.ok(is(len, -0), '-0 is negative zero'); + st.notOk(is(len, 0), '-0 is not positive zero'); + + var orig = [1, 2, 3]; + var arr = ES.ArraySpeciesCreate(orig, len); + + st.equal(ES.IsArray(arr), true); + st.ok(is(arr.length, 0)); + st.equal(arr.constructor, orig.constructor); + + st.end(); + }); + + t.test('works with species construtor', { skip: !hasSpecies }, function (st) { + var sentinel = {}; + var Foo = function Foo(len) { + this.length = len; + this.sentinel = sentinel; + }; + var Bar = getArraySubclassWithSpeciesConstructor(Foo); + var bar = new Bar(); + + st.equal(ES.IsArray(bar), true, 'Bar instance is an array'); + + var arr = ES.ArraySpeciesCreate(bar, 3); + st.equal(arr.constructor, Foo, 'result used species constructor'); + st.equal(arr.length, 3, 'length property is correct'); + st.equal(arr.sentinel, sentinel, 'Foo constructor was exercised'); + + st.end(); + }); + + t.test('works with null species constructor', { skip: !hasSpecies }, function (st) { + var Bar = getArraySubclassWithSpeciesConstructor(null); + var bar = new Bar(); + + st.equal(ES.IsArray(bar), true, 'Bar instance is an array'); + + var arr = ES.ArraySpeciesCreate(bar, 3); + st.equal(arr.constructor, Array, 'result used default constructor'); + st.equal(arr.length, 3, 'length property is correct'); + + st.end(); + }); + + t.test('works with undefined species constructor', { skip: !hasSpecies }, function (st) { + var Bar = getArraySubclassWithSpeciesConstructor(); + var bar = new Bar(); + + st.equal(ES.IsArray(bar), true, 'Bar instance is an array'); + + var arr = ES.ArraySpeciesCreate(bar, 3); + st.equal(arr.constructor, Array, 'result used default constructor'); + st.equal(arr.length, 3, 'length property is correct'); + + st.end(); + }); + + t.test('throws with object non-construtor species constructor', { skip: !hasSpecies }, function (st) { + forEach(v.objects, function (obj) { + var Bar = getArraySubclassWithSpeciesConstructor(obj); + var bar = new Bar(); + + st.equal(ES.IsArray(bar), true, 'Bar instance is an array'); + + st['throws']( + function () { ES.ArraySpeciesCreate(bar, 3); }, + TypeError, + debug(obj) + ' is not a constructor' + ); + }); + + st.end(); + }); + + t.end(); + }); + + test('CreateDataProperty', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.CreateDataProperty(primitive); }, + TypeError, + debug(primitive) + ' is not an object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.CreateDataProperty({}, nonPropertyKey); }, + TypeError, + debug(nonPropertyKey) + ' is not a property key' + ); + }); + + var sentinel = { id: 'sentinel' }; + var secondSentinel = { id: 'second sentinel' }; + forEach(v.propertyKeys, function (propertyKey) { + var obj = {}; + var status = ES.CreateDataProperty(obj, propertyKey, sentinel); + t.equal(status, true, 'status is true'); + t.equal( + obj[propertyKey], + sentinel, + debug(sentinel) + ' is installed on "' + debug(propertyKey) + '" on the object' + ); + var secondStatus = ES.CreateDataProperty(obj, propertyKey, secondSentinel); + t.equal(secondStatus, true, 'second status is true'); + t.equal( + obj[propertyKey], + secondSentinel, + debug(secondSentinel) + ' is installed on "' + debug(propertyKey) + '" on the object' + ); + + t.test('with defineProperty', { skip: !defineProperty.oDP }, function (st) { + var nonWritable = defineProperty({}, propertyKey, { configurable: true, writable: false }); + + var nonWritableStatus = ES.CreateDataProperty(nonWritable, propertyKey, sentinel); + st.equal(nonWritableStatus, false, 'create data property failed'); + st.notEqual( + nonWritable[propertyKey], + sentinel, + debug(sentinel) + ' is not installed on "' + debug(propertyKey) + '" on the object when key is nonwritable' + ); + + var nonConfigurable = defineProperty({}, propertyKey, { configurable: false, writable: true }); + + var nonConfigurableStatus = ES.CreateDataProperty(nonConfigurable, propertyKey, sentinel); + st.equal(nonConfigurableStatus, false, 'create data property failed'); + st.notEqual( + nonConfigurable[propertyKey], + sentinel, + debug(sentinel) + ' is not installed on "' + debug(propertyKey) + '" on the object when key is nonconfigurable' + ); + st.end(); + }); + }); + + t.end(); + }); + + test('CreateDataPropertyOrThrow', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.CreateDataPropertyOrThrow(primitive); }, + TypeError, + debug(primitive) + ' is not an object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.CreateDataPropertyOrThrow({}, nonPropertyKey); }, + TypeError, + debug(nonPropertyKey) + ' is not a property key' + ); + }); + + var sentinel = {}; + forEach(v.propertyKeys, function (propertyKey) { + var obj = {}; + var status = ES.CreateDataPropertyOrThrow(obj, propertyKey, sentinel); + t.equal(status, true, 'status is true'); + t.equal( + obj[propertyKey], + sentinel, + debug(sentinel) + ' is installed on "' + debug(propertyKey) + '" on the object' + ); + + if (typeof Object.preventExtensions === 'function') { + var notExtensible = {}; + Object.preventExtensions(notExtensible); + + t['throws']( + function () { ES.CreateDataPropertyOrThrow(notExtensible, propertyKey, sentinel); }, + TypeError, + 'can not install ' + debug(propertyKey) + ' on non-extensible object' + ); + t.notEqual( + notExtensible[propertyKey], + sentinel, + debug(sentinel) + ' is not installed on "' + debug(propertyKey) + '" on the object' + ); + } + }); + + t.end(); + }); + + test('ObjectCreate', function (t) { + forEach(v.nonNullPrimitives, function (value) { + t['throws']( + function () { ES.ObjectCreate(value); }, + TypeError, + debug(value) + ' is not null, or an object' + ); + }); + + t.test('proto arg', function (st) { + var Parent = function Parent() {}; + Parent.prototype.foo = {}; + var child = ES.ObjectCreate(Parent.prototype); + st.equal(child instanceof Parent, true, 'child is instanceof Parent'); + st.equal(child.foo, Parent.prototype.foo, 'child inherits properties from Parent.prototype'); + + st.end(); + }); + + t.test('internal slots arg', function (st) { + st.doesNotThrow(function () { ES.ObjectCreate({}, []); }, 'an empty slot list is valid'); + + st['throws']( + function () { ES.ObjectCreate({}, ['a']); }, + SyntaxError, + 'internal slots are not supported' + ); + + st.end(); + }); + + t.test('null proto', { skip: !$setProto }, function (st) { + st.equal('toString' in {}, true, 'normal objects have toString'); + st.equal('toString' in ES.ObjectCreate(null), false, 'makes a null object'); + + st.end(); + }); + + t.test('null proto when no native Object.create', { skip: $setProto }, function (st) { + st['throws']( + function () { ES.ObjectCreate(null); }, + SyntaxError, + 'without a native Object.create, can not create null objects' + ); + + st.end(); + }); + + t.end(); + }); + + test('AdvanceStringIndex', function (t) { + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { ES.AdvanceStringIndex(nonString); }, + TypeError, + '"S" argument must be a String; ' + debug(nonString) + ' is not' + ); + }); + + var notInts = v.nonNumbers.concat( + v.nonIntegerNumbers, + v.infinities, + [NaN, [], new Date(), Math.pow(2, 53), -1] + ); + forEach(notInts, function (nonInt) { + t['throws']( + function () { ES.AdvanceStringIndex('abc', nonInt); }, + TypeError, + '"index" argument must be an integer, ' + debug(nonInt) + ' is not.' + ); + }); + + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { ES.AdvanceStringIndex('abc', 0, nonBoolean); }, + TypeError, + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + var str = 'a\uD83D\uDCA9c'; + + t.test('non-unicode mode', function (st) { + for (var i = 0; i < str.length + 2; i += 1) { + st.equal(ES.AdvanceStringIndex(str, i, false), i + 1, i + ' advances to ' + (i + 1)); + } + + st.end(); + }); + + t.test('unicode mode', function (st) { + st.equal(ES.AdvanceStringIndex(str, 0, true), 1, '0 advances to 1'); + st.equal(ES.AdvanceStringIndex(str, 1, true), 3, '1 advances to 3'); + st.equal(ES.AdvanceStringIndex(str, 2, true), 3, '2 advances to 3'); + st.equal(ES.AdvanceStringIndex(str, 3, true), 4, '3 advances to 4'); + st.equal(ES.AdvanceStringIndex(str, 4, true), 5, '4 advances to 5'); + + st.end(); + }); + + t.test('lone surrogates', function (st) { + var halfPoo = 'a\uD83Dc'; + + st.equal(ES.AdvanceStringIndex(halfPoo, 0, true), 1, '0 advances to 1'); + st.equal(ES.AdvanceStringIndex(halfPoo, 1, true), 2, '1 advances to 2'); + st.equal(ES.AdvanceStringIndex(halfPoo, 2, true), 3, '2 advances to 3'); + st.equal(ES.AdvanceStringIndex(halfPoo, 3, true), 4, '3 advances to 4'); + + st.end(); + }); + + t.test('surrogate pairs', function (st) { + var lowestPair = String.fromCharCode('0xD800') + String.fromCharCode('0xDC00'); + var highestPair = String.fromCharCode('0xDBFF') + String.fromCharCode('0xDFFF'); + var poop = String.fromCharCode('0xD83D') + String.fromCharCode('0xDCA9'); + + st.equal(ES.AdvanceStringIndex(lowestPair, 0, true), 2, 'lowest surrogate pair, 0 -> 2'); + st.equal(ES.AdvanceStringIndex(highestPair, 0, true), 2, 'highest surrogate pair, 0 -> 2'); + st.equal(ES.AdvanceStringIndex(poop, 0, true), 2, 'poop, 0 -> 2'); + + st.end(); + }); + + t.end(); + }); + + test('CreateMethodProperty', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.CreateMethodProperty(primitive, 'key'); }, + TypeError, + 'O must be an Object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.CreateMethodProperty({}, nonPropertyKey); }, + TypeError, + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + + t.test('defines correctly', function (st) { + var obj = {}; + var key = 'the key'; + var value = { foo: 'bar' }; + + st.equal(ES.CreateMethodProperty(obj, key, value), true, 'defines property successfully'); + st.test('property descriptor', { skip: !getOwnPropertyDescriptor }, function (s2t) { + s2t.deepEqual( + getOwnPropertyDescriptor(obj, key), + { + configurable: true, + enumerable: false, + value: value, + writable: true + }, + 'sets the correct property descriptor' + ); + + s2t.end(); + }); + st.equal(obj[key], value, 'sets the correct value'); + + st.end(); + }); + + t.test('fails as expected on a frozen object', { skip: !Object.freeze }, function (st) { + var obj = Object.freeze({ foo: 'bar' }); + st['throws']( + function () { ES.CreateMethodProperty(obj, 'foo', { value: 'baz' }); }, + TypeError, + 'nonconfigurable key can not be defined' + ); + + st.end(); + }); + + t.test('fails as expected on a function with a nonconfigurable name', { skip: !functionsHaveNames || functionsHaveConfigurableNames }, function (st) { + st['throws']( + function () { ES.CreateMethodProperty(function () {}, 'name', { value: 'baz' }); }, + TypeError, + 'nonconfigurable function name can not be defined' + ); + st.end(); + }); + + t.end(); + }); + + test('DefinePropertyOrThrow', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.DefinePropertyOrThrow(primitive, 'key', {}); }, + TypeError, + 'O must be an Object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.DefinePropertyOrThrow({}, nonPropertyKey, {}); }, + TypeError, + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + + t.test('defines correctly', function (st) { + var obj = {}; + var key = 'the key'; + var descriptor = { + configurable: true, + enumerable: false, + value: { foo: 'bar' }, + writable: true + }; + + st.equal(ES.DefinePropertyOrThrow(obj, key, descriptor), true, 'defines property successfully'); + st.test('property descriptor', { skip: !getOwnPropertyDescriptor }, function (s2t) { + s2t.deepEqual( + getOwnPropertyDescriptor(obj, key), + descriptor, + 'sets the correct property descriptor' + ); + + s2t.end(); + }); + st.deepEqual(obj[key], descriptor.value, 'sets the correct value'); + + st.end(); + }); + + t.test('fails as expected on a frozen object', { skip: !Object.freeze }, function (st) { + var obj = Object.freeze({ foo: 'bar' }); + st['throws']( + function () { + ES.DefinePropertyOrThrow(obj, 'foo', { configurable: true, value: 'baz' }); + }, + TypeError, + 'nonconfigurable key can not be defined' + ); + + st.end(); + }); + + t.test('fails as expected on a function with a nonconfigurable name', { skip: !functionsHaveNames || functionsHaveConfigurableNames }, function (st) { + st['throws']( + function () { + ES.DefinePropertyOrThrow(function () {}, 'name', { configurable: true, value: 'baz' }); + }, + TypeError, + 'nonconfigurable function name can not be defined' + ); + st.end(); + }); + + t.end(); + }); + + test('DeletePropertyOrThrow', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.DeletePropertyOrThrow(primitive, 'key', {}); }, + TypeError, + 'O must be an Object' + ); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.DeletePropertyOrThrow({}, nonPropertyKey, {}); }, + TypeError, + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + + t.test('defines correctly', function (st) { + var obj = { 'the key': 42 }; + var key = 'the key'; + + st.equal(ES.DeletePropertyOrThrow(obj, key), true, 'deletes property successfully'); + st.equal(key in obj, false, 'key is no longer in the object'); + + st.end(); + }); + + t.test('fails as expected on a frozen object', { skip: !Object.freeze }, function (st) { + var obj = Object.freeze({ foo: 'bar' }); + st['throws']( + function () { ES.DeletePropertyOrThrow(obj, 'foo'); }, + TypeError, + 'nonconfigurable key can not be deleted' + ); + + st.end(); + }); + + t.test('fails as expected on a function with a nonconfigurable name', { skip: !functionsHaveNames || functionsHaveConfigurableNames }, function (st) { + st['throws']( + function () { ES.DeletePropertyOrThrow(function () {}, 'name'); }, + TypeError, + 'nonconfigurable function name can not be deleted' + ); + st.end(); + }); + + t.end(); + }); + + test('EnumerableOwnNames', { skip: skips && skips.EnumerableOwnNames }, function (t) { + var obj = testEnumerableOwnNames(t, function (O) { return ES.EnumerableOwnNames(O); }); + + t.deepEqual( + ES.EnumerableOwnNames(obj), + ['own'], + 'returns enumerable own names' + ); + + t.end(); + }); + + test('thisNumberValue', function (t) { + forEach(v.nonNumbers, function (nonNumber) { + t['throws']( + function () { ES.thisNumberValue(nonNumber); }, + TypeError, + debug(nonNumber) + ' is not a Number' + ); + }); + + forEach(v.numbers, function (number) { + t.equal(ES.thisNumberValue(number), number, debug(number) + ' is its own thisNumberValue'); + var obj = Object(number); + t.equal(ES.thisNumberValue(obj), number, debug(obj) + ' is the boxed thisNumberValue'); + }); + + t.end(); + }); + + test('thisBooleanValue', function (t) { + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { ES.thisBooleanValue(nonBoolean); }, + TypeError, + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + forEach(v.booleans, function (boolean) { + t.equal(ES.thisBooleanValue(boolean), boolean, debug(boolean) + ' is its own thisBooleanValue'); + var obj = Object(boolean); + t.equal(ES.thisBooleanValue(obj), boolean, debug(obj) + ' is the boxed thisBooleanValue'); + }); + + t.end(); + }); + + test('thisStringValue', function (t) { + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { ES.thisStringValue(nonString); }, + TypeError, + debug(nonString) + ' is not a String' + ); + }); + + forEach(v.strings, function (string) { + t.equal(ES.thisStringValue(string), string, debug(string) + ' is its own thisStringValue'); + var obj = Object(string); + t.equal(ES.thisStringValue(obj), string, debug(obj) + ' is the boxed thisStringValue'); + }); + + t.end(); + }); + + test('thisTimeValue', function (t) { + forEach(v.primitives.concat(v.objects), function (nonDate) { + t['throws']( + function () { ES.thisTimeValue(nonDate); }, + TypeError, + debug(nonDate) + ' is not a Date' + ); + }); + + forEach(v.timestamps, function (timestamp) { + var date = new Date(timestamp); + + t.equal(ES.thisTimeValue(date), timestamp, debug(date) + ' is its own thisTimeValue'); + }); + + t.end(); + }); + + test('SetIntegrityLevel', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.SetIntegrityLevel(primitive); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + + t['throws']( + function () { ES.SetIntegrityLevel({}); }, + /^TypeError: Assertion failed: `level` must be `"sealed"` or `"frozen"`$/, + '`level` must be `"sealed"` or `"frozen"`' + ); + + var O = { a: 1 }; + t.test('sealed', { skip: !Object.preventExtensions }, function (st) { + st.equal(ES.SetIntegrityLevel(O, 'sealed'), true); + st['throws']( + function () { O.b = 2; }, + /^TypeError: (Cannot|Can't) add property b, object is not extensible$/, + 'sealing prevent new properties from being added' + ); + O.a = 2; + st.equal(O.a, 2, 'pre-frozen, existing properties are mutable'); + st.end(); + }); + + t.test('frozen', { skip: !Object.freeze }, function (st) { + st.equal(ES.SetIntegrityLevel(O, 'frozen'), true); + st['throws']( + function () { O.a = 3; }, + /^TypeError: Cannot assign to read only property 'a' of /, + 'freezing prevents existing properties from being mutated' + ); + st.end(); + }); + + t.end(); + }); + + test('TestIntegrityLevel', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.TestIntegrityLevel(primitive); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + + t['throws']( + function () { ES.TestIntegrityLevel({ a: 1 }); }, + /^TypeError: Assertion failed: `level` must be `"sealed"` or `"frozen"`$/, + '`level` must be `"sealed"` or `"frozen"`' + ); + + t.equal(ES.TestIntegrityLevel({ a: 1 }, 'sealed'), false, 'basic object is not sealed'); + t.equal(ES.TestIntegrityLevel({ a: 1 }, 'frozen'), false, 'basic object is not frozen'); + + t.test('preventExtensions', { skip: !Object.preventExtensions }, function (st) { + var o = Object.preventExtensions({ a: 1 }); + st.equal(ES.TestIntegrityLevel(o, 'sealed'), false, 'nonextensible object is not sealed'); + st.equal(ES.TestIntegrityLevel(o, 'frozen'), false, 'nonextensible object is not frozen'); + + var empty = Object.preventExtensions({}); + st.equal(ES.TestIntegrityLevel(empty, 'sealed'), true, 'empty nonextensible object is sealed'); + st.equal(ES.TestIntegrityLevel(empty, 'frozen'), true, 'empty nonextensible object is frozen'); + st.end(); + }); + + t.test('seal', { skip: !Object.seal }, function (st) { + var o = Object.seal({ a: 1 }); + st.equal(ES.TestIntegrityLevel(o, 'sealed'), true, 'sealed object is sealed'); + st.equal(ES.TestIntegrityLevel(o, 'frozen'), false, 'sealed object is not frozen'); + + var empty = Object.seal({}); + st.equal(ES.TestIntegrityLevel(empty, 'sealed'), true, 'empty sealed object is sealed'); + st.equal(ES.TestIntegrityLevel(empty, 'frozen'), true, 'empty sealed object is frozen'); + + st.end(); + }); + + t.test('freeze', { skip: !Object.freeze }, function (st) { + var o = Object.freeze({ a: 1 }); + st.equal(ES.TestIntegrityLevel(o, 'sealed'), true, 'frozen object is sealed'); + st.equal(ES.TestIntegrityLevel(o, 'frozen'), true, 'frozen object is frozen'); + + var empty = Object.freeze({}); + st.equal(ES.TestIntegrityLevel(empty, 'sealed'), true, 'empty frozen object is sealed'); + st.equal(ES.TestIntegrityLevel(empty, 'frozen'), true, 'empty frozen object is frozen'); + + st.end(); + }); + + t.end(); + }); + + test('OrdinaryHasInstance', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t.equal(ES.OrdinaryHasInstance(nonFunction, {}), false, debug(nonFunction) + ' is not callable'); + }); + + forEach(v.primitives, function (primitive) { + t.equal(ES.OrdinaryHasInstance(function () {}, primitive), false, debug(primitive) + ' is not an object'); + }); + + var C = function C() {}; + var D = function D() {}; + t.equal(ES.OrdinaryHasInstance(C, new C()), true, 'constructor function has an instance of itself'); + t.equal(ES.OrdinaryHasInstance(C, new D()), false, 'constructor/instance mismatch is false'); + t.equal(ES.OrdinaryHasInstance(D, new C()), false, 'instance/constructor mismatch is false'); + t.equal(ES.OrdinaryHasInstance(C, {}), false, 'plain object is not an instance of a constructor'); + t.equal(ES.OrdinaryHasInstance(Object, {}), true, 'plain object is an instance of Object'); + + t.end(); + }); + + test('OrdinaryHasProperty', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.OrdinaryHasProperty(primitive, ''); }, + TypeError, + debug(primitive) + ' is not an object' + ); + }); + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.OrdinaryHasProperty({}, nonPropertyKey); }, + TypeError, + 'P: ' + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + + t.equal(ES.OrdinaryHasProperty({ a: 1 }, 'a'), true, 'own property is true'); + t.equal(ES.OrdinaryHasProperty({}, 'toString'), true, 'inherited property is true'); + t.equal(ES.OrdinaryHasProperty({}, 'nope'), false, 'absent property is false'); + + t.end(); + }); + + test('InstanceofOperator', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.InstanceofOperator(primitive, function () {}); }, + TypeError, + debug(primitive) + ' is not an object' + ); + }); + + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + function () { ES.InstanceofOperator({}, nonFunction); }, + TypeError, + debug(nonFunction) + ' is not callable' + ); + }); + + var C = function C() {}; + var D = function D() {}; + + t.equal(ES.InstanceofOperator(new C(), C), true, 'constructor function has an instance of itself'); + t.equal(ES.InstanceofOperator(new D(), C), false, 'constructor/instance mismatch is false'); + t.equal(ES.InstanceofOperator(new C(), D), false, 'instance/constructor mismatch is false'); + t.equal(ES.InstanceofOperator({}, C), false, 'plain object is not an instance of a constructor'); + t.equal(ES.InstanceofOperator({}, Object), true, 'plain object is an instance of Object'); + + t.test('Symbol.hasInstance', { skip: !v.hasSymbols || !Symbol.hasInstance }, function (st) { + st.plan(4); + + var O = {}; + var C2 = function () {}; + st.equal(ES.InstanceofOperator(O, C2), false, 'O is not an instance of C2'); + + defineProperty(C2, Symbol.hasInstance, { + value: function (obj) { + st.equal(this, C2, 'hasInstance receiver is C2'); + st.equal(obj, O, 'hasInstance argument is O'); + + return {}; // testing coercion to boolean + } + }); + + st.equal(ES.InstanceofOperator(O, C2), true, 'O is now an instance of C2'); + + st.end(); + }); + + t.end(); + }); + + test('Abstract Equality Comparison', function (t) { + t.test('same types use ===', function (st) { + forEach(v.primitives.concat(v.objects), function (value) { + st.equal(ES['Abstract Equality Comparison'](value, value), value === value, debug(value) + ' is abstractly equal to itself'); + }); + st.end(); + }); + + t.test('different types coerce', function (st) { + var pairs = [ + [null, undefined], + [3, '3'], + [true, '3'], + [true, 3], + [false, 0], + [false, '0'], + [3, [3]], + ['3', [3]], + [true, [1]], + [false, [0]], + [String(v.coercibleObject), v.coercibleObject], + [Number(String(v.coercibleObject)), v.coercibleObject], + [Number(v.coercibleObject), v.coercibleObject], + [String(Number(v.coercibleObject)), v.coercibleObject] + ]; + forEach(pairs, function (pair) { + var a = pair[0]; + var b = pair[1]; + // eslint-disable-next-line eqeqeq + st.equal(ES['Abstract Equality Comparison'](a, b), a == b, debug(a) + ' == ' + debug(b)); + // eslint-disable-next-line eqeqeq + st.equal(ES['Abstract Equality Comparison'](b, a), b == a, debug(b) + ' == ' + debug(a)); + }); + st.end(); + }); + + t.end(); + }); + + test('Strict Equality Comparison', function (t) { + t.test('same types use ===', function (st) { + forEach(v.primitives.concat(v.objects), function (value) { + st.equal(ES['Strict Equality Comparison'](value, value), value === value, debug(value) + ' is strictly equal to itself'); + }); + st.end(); + }); + + t.test('different types are not ===', function (st) { + var pairs = [ + [null, undefined], + [3, '3'], + [true, '3'], + [true, 3], + [false, 0], + [false, '0'], + [3, [3]], + ['3', [3]], + [true, [1]], + [false, [0]], + [String(v.coercibleObject), v.coercibleObject], + [Number(String(v.coercibleObject)), v.coercibleObject], + [Number(v.coercibleObject), v.coercibleObject], + [String(Number(v.coercibleObject)), v.coercibleObject] + ]; + forEach(pairs, function (pair) { + var a = pair[0]; + var b = pair[1]; + st.equal(ES['Strict Equality Comparison'](a, b), a === b, debug(a) + ' === ' + debug(b)); + st.equal(ES['Strict Equality Comparison'](b, a), b === a, debug(b) + ' === ' + debug(a)); + }); + st.end(); + }); + + t.end(); + }); + + test('Abstract Relational Comparison', function (t) { + t.test('at least one operand is NaN', function (st) { + st.equal(ES['Abstract Relational Comparison'](NaN, {}, true), undefined, 'LeftFirst: first is NaN, returns undefined'); + st.equal(ES['Abstract Relational Comparison']({}, NaN, true), undefined, 'LeftFirst: second is NaN, returns undefined'); + st.equal(ES['Abstract Relational Comparison'](NaN, {}, false), undefined, '!LeftFirst: first is NaN, returns undefined'); + st.equal(ES['Abstract Relational Comparison']({}, NaN, false), undefined, '!LeftFirst: second is NaN, returns undefined'); + st.end(); + }); + + t.equal(ES['Abstract Relational Comparison'](3, 4, true), true, 'LeftFirst: 3 is less than 4'); + t.equal(ES['Abstract Relational Comparison'](4, 3, true), false, 'LeftFirst: 3 is not less than 4'); + t.equal(ES['Abstract Relational Comparison'](3, 4, false), true, '!LeftFirst: 3 is less than 4'); + t.equal(ES['Abstract Relational Comparison'](4, 3, false), false, '!LeftFirst: 3 is not less than 4'); + + t.equal(ES['Abstract Relational Comparison']('3', '4', true), true, 'LeftFirst: "3" is less than "4"'); + t.equal(ES['Abstract Relational Comparison']('4', '3', true), false, 'LeftFirst: "3" is not less than "4"'); + t.equal(ES['Abstract Relational Comparison']('3', '4', false), true, '!LeftFirst: "3" is less than "4"'); + t.equal(ES['Abstract Relational Comparison']('4', '3', false), false, '!LeftFirst: "3" is not less than "4"'); + + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, true), true, 'LeftFirst: coercible object is less than 42'); + t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, true), false, 'LeftFirst: 42 is not less than coercible object'); + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, 42, false), true, '!LeftFirst: coercible object is less than 42'); + t.equal(ES['Abstract Relational Comparison'](42, v.coercibleObject, false), false, '!LeftFirst: 42 is not less than coercible object'); + + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', true), false, 'LeftFirst: coercible object is not less than "3"'); + t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, true), false, 'LeftFirst: "3" is not less than coercible object'); + t.equal(ES['Abstract Relational Comparison'](v.coercibleObject, '3', false), false, '!LeftFirst: coercible object is not less than "3"'); + t.equal(ES['Abstract Relational Comparison']('3', v.coercibleObject, false), false, '!LeftFirst: "3" is not less than coercible object'); + + t.end(); + }); + + test('ValidateAndApplyPropertyDescriptor', function (t) { + forEach(v.nonUndefinedPrimitives, function (nonUndefinedPrimitive) { + t['throws']( + function () { ES.ValidateAndApplyPropertyDescriptor(nonUndefinedPrimitive, '', false, v.genericDescriptor(), v.genericDescriptor()); }, + TypeError, + 'O: ' + debug(nonUndefinedPrimitive) + ' is not undefined or an Object' + ); + }); + + forEach(v.nonBooleans, function (nonBoolean) { + t['throws']( + function () { + return ES.ValidateAndApplyPropertyDescriptor( + undefined, + null, + nonBoolean, + v.genericDescriptor(), + v.genericDescriptor() + ); + }, + TypeError, + 'extensible: ' + debug(nonBoolean) + ' is not a Boolean' + ); + }); + + forEach(v.primitives, function (primitive) { + // Desc must be a Property Descriptor + t['throws']( + function () { + return ES.ValidateAndApplyPropertyDescriptor( + undefined, + null, + false, + primitive, + v.genericDescriptor() + ); + }, + TypeError, + 'Desc: ' + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + forEach(v.nonUndefinedPrimitives, function (primitive) { + // current must be undefined or a Property Descriptor + t['throws']( + function () { + return ES.ValidateAndApplyPropertyDescriptor( + undefined, + null, + false, + v.genericDescriptor(), + primitive + ); + }, + TypeError, + 'current: ' + debug(primitive) + ' is not a Property Descriptor or undefined' + ); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + // if O is an object, P must be a property key + t['throws']( + function () { + return ES.ValidateAndApplyPropertyDescriptor( + {}, + nonPropertyKey, + false, + v.genericDescriptor(), + v.genericDescriptor() + ); + }, + TypeError, + 'P: ' + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + + t.test('current is undefined', function (st) { + var propertyKey = 'howdy'; + + st.test('generic descriptor', function (s2t) { + var generic = v.genericDescriptor(); + generic['[[Enumerable]]'] = true; + var O = {}; + ES.ValidateAndApplyPropertyDescriptor(undefined, propertyKey, true, generic); + s2t.equal( + ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, false, generic), + false, + 'when extensible is false, nothing happens' + ); + s2t.deepEqual(O, {}, 'no changes applied when O is undefined or extensible is false'); + s2t.equal( + ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, true, generic), + true, + 'operation is successful' + ); + var expected = {}; + expected[propertyKey] = undefined; + s2t.deepEqual(O, expected, 'generic descriptor has been defined as an own data property'); + s2t.end(); + }); + + st.test('data descriptor', function (s2t) { + var data = v.dataDescriptor(); + data['[[Enumerable]]'] = true; + + var O = {}; + s2t.equal( + ES.ValidateAndApplyPropertyDescriptor(undefined, propertyKey, true, data), + true, + 'noop when O is undefined' + ); + s2t.equal( + ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, false, data), + false, + 'when extensible is false, nothing happens' + ); + s2t.deepEqual(O, {}, 'no changes applied when O is undefined or extensible is false'); + s2t.equal( + ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, true, data), + true, + 'operation is successful' + ); + var expected = {}; + expected[propertyKey] = data['[[Value]]']; + s2t.deepEqual(O, expected, 'data descriptor has been defined as an own data property'); + s2t.end(); + }); + + st.test('accessor descriptor', { skip: !defineProperty.oDP }, function (s2t) { + var count = 0; + var accessor = v.accessorDescriptor(); + accessor['[[Enumerable]]'] = true; + accessor['[[Get]]'] = function () { + count += 1; + return count; + }; + + var O = {}; + ES.ValidateAndApplyPropertyDescriptor(undefined, propertyKey, true, accessor); + s2t.equal( + ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, false, accessor), + false, + 'when extensible is false, nothing happens' + ); + s2t.deepEqual(O, {}, 'no changes applied when O is undefined or extensible is false'); + s2t.equal( + ES.ValidateAndApplyPropertyDescriptor(O, propertyKey, true, accessor), + true, + 'operation is successful' + ); + var expected = {}; + expected[propertyKey] = accessor['[[Get]]']() + 1; + s2t.deepEqual(O, expected, 'accessor descriptor has been defined as an own accessor property'); + s2t.end(); + }); + + st.end(); + }); + + t.test('every field in Desc is absent', { skip: 'it is unclear if having no fields qualifies Desc to be a Property Descriptor' }); + + forEach([v.dataDescriptor, v.accessorDescriptor, v.mutatorDescriptor], function (getDescriptor) { + t.equal( + ES.ValidateAndApplyPropertyDescriptor(undefined, 'property key', true, getDescriptor(), getDescriptor()), + true, + 'when Desc and current are the same, early return true' + ); + }); + + t.test('current is nonconfigurable', function (st) { + // note: these must not be generic descriptors, or else the algorithm returns an early true + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.descriptors.configurable(v.dataDescriptor()), + v.descriptors.nonConfigurable(v.dataDescriptor()) + ), + false, + 'false if Desc is configurable' + ); + + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.descriptors.enumerable(v.dataDescriptor()), + v.descriptors.nonEnumerable(v.dataDescriptor()) + ), + false, + 'false if Desc is Enumerable and current is not' + ); + + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.descriptors.nonEnumerable(v.dataDescriptor()), + v.descriptors.enumerable(v.dataDescriptor()) + ), + false, + 'false if Desc is not Enumerable and current is' + ); + + var descLackingEnumerable = v.accessorDescriptor(); + delete descLackingEnumerable['[[Enumerable]]']; + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + descLackingEnumerable, + v.descriptors.enumerable(v.accessorDescriptor()) + ), + true, + 'not false if Desc lacks Enumerable' + ); + + st.end(); + }); + + t.test('Desc and current: one is a data descriptor, one is not', { skip: !defineProperty || !getOwnPropertyDescriptor }, function (st) { + // note: Desc must be configurable if current is nonconfigurable, to hit this branch + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.descriptors.configurable(v.accessorDescriptor()), + v.descriptors.nonConfigurable(v.dataDescriptor()) + ), + false, + 'false if current (data) is nonconfigurable' + ); + + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.descriptors.configurable(v.dataDescriptor()), + v.descriptors.nonConfigurable(v.accessorDescriptor()) + ), + false, + 'false if current (not data) is nonconfigurable' + ); + + // one is data and one is not, + // // if current is data, convert to accessor + // // else convert to data + + var startsWithData = { + 'property key': 42 + }; + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + startsWithData, + 'property key', + true, + v.descriptors.enumerable(v.descriptors.configurable(v.accessorDescriptor())), + v.descriptors.enumerable(v.descriptors.configurable(v.dataDescriptor())) + ), + true, + 'operation is successful: current is data, Desc is accessor' + ); + var shouldBeAccessor = getOwnPropertyDescriptor(startsWithData, 'property key'); + st.equal(typeof shouldBeAccessor.get, 'function', 'has a getter'); + + var key = 'property key'; + var startsWithAccessor = {}; + defineProperty(startsWithAccessor, key, { + configurable: true, + enumerable: true, + get: function get() { return 42; } + }); + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + startsWithAccessor, + key, + true, + v.descriptors.enumerable(v.descriptors.configurable(v.dataDescriptor())), + v.descriptors.enumerable(v.descriptors.configurable(v.accessorDescriptor(42))) + ), + true, + 'operation is successful: current is accessor, Desc is data' + ); + var shouldBeData = getOwnPropertyDescriptor(startsWithAccessor, 'property key'); + st.deepEqual(shouldBeData, { configurable: true, enumerable: true, value: 42, writable: false }, 'is a data property'); + + st.end(); + }); + + t.test('Desc and current are both data descriptors', function (st) { + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.descriptors.writable(v.dataDescriptor()), + v.descriptors.nonWritable(v.descriptors.nonConfigurable(v.dataDescriptor())) + ), + false, + 'false if frozen current and writable Desc' + ); + + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.descriptors.configurable({ '[[Value]]': 42 }), + v.descriptors.nonWritable({ '[[Value]]': 7 }) + ), + false, + 'false if nonwritable current has a different value than Desc' + ); + + st.end(); + }); + + t.test('current is nonconfigurable; Desc and current are both accessor descriptors', function (st) { + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.mutatorDescriptor(), + v.descriptors.nonConfigurable(v.mutatorDescriptor()) + ), + false, + 'false if both Sets are not equal' + ); + + st.equal( + ES.ValidateAndApplyPropertyDescriptor( + undefined, + 'property key', + true, + v.accessorDescriptor(), + v.descriptors.nonConfigurable(v.accessorDescriptor()) + ), + false, + 'false if both Gets are not equal' + ); + + st.end(); + }); + + t.end(); + }); + + test('OrdinaryGetOwnProperty', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.OrdinaryGetOwnProperty(primitive, ''); }, + TypeError, + 'O: ' + debug(primitive) + ' is not an Object' + ); + }); + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.OrdinaryGetOwnProperty({}, nonPropertyKey); }, + TypeError, + 'P: ' + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + + t.equal(ES.OrdinaryGetOwnProperty({}, 'not in the object'), undefined, 'missing property yields undefined'); + t.equal(ES.OrdinaryGetOwnProperty({}, 'toString'), undefined, 'inherited non-own property yields undefined'); + + t.deepEqual( + ES.OrdinaryGetOwnProperty({ a: 1 }, 'a'), + ES.ToPropertyDescriptor({ + configurable: true, + enumerable: true, + value: 1, + writable: true + }), + 'own assigned data property yields expected descriptor' + ); + + t.deepEqual( + ES.OrdinaryGetOwnProperty(/a/, 'lastIndex'), + ES.ToPropertyDescriptor({ + configurable: false, + enumerable: false, + value: 0, + writable: true + }), + 'regex lastIndex yields expected descriptor' + ); + + t.deepEqual( + ES.OrdinaryGetOwnProperty([], 'length'), + ES.ToPropertyDescriptor({ + configurable: false, + enumerable: false, + value: 0, + writable: true + }), + 'array length yields expected descriptor' + ); + + t.deepEqual( + ES.OrdinaryGetOwnProperty(Object.prototype, 'toString'), + ES.ToPropertyDescriptor({ + configurable: true, + enumerable: false, + value: Object.prototype.toString, + writable: true + }), + 'own non-enumerable data property yields expected descriptor' + ); + + t.test('ES5+', { skip: !defineProperty.oDP }, function (st) { + var O = {}; + defineProperty(O, 'foo', { + configurable: false, + enumerable: false, + value: O, + writable: true + }); + + st.deepEqual( + ES.OrdinaryGetOwnProperty(O, 'foo'), + ES.ToPropertyDescriptor({ + configurable: false, + enumerable: false, + value: O, + writable: true + }), + 'defined own property yields expected descriptor' + ); + + st.end(); + }); + + t.end(); + }); + + test('OrdinaryDefineOwnProperty', { skip: !getOwnPropertyDescriptor }, function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.CopyDataProperties(primitive, {}, []); }, + TypeError, + 'O: ' + debug(primitive) + ' is not an Object' + ); + }); + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.OrdinaryDefineOwnProperty({}, nonPropertyKey, v.genericDescriptor()); }, + TypeError, + 'P: ' + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.OrdinaryDefineOwnProperty(primitive, '', v.genericDescriptor()); }, + TypeError, + 'Desc: ' + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + var O = {}; + var P = 'property key'; + var Desc = v.accessorDescriptor(); + t.equal( + ES.OrdinaryDefineOwnProperty(O, P, Desc), + true, + 'operation is successful' + ); + t.deepEqual( + getOwnPropertyDescriptor(O, P), + ES.FromPropertyDescriptor(ES.CompletePropertyDescriptor(Desc)), + 'expected property descriptor is defined' + ); + + t.end(); + }); + + test('ArrayCreate', function (t) { + forEach(v.nonIntegerNumbers.concat([-1]), function (nonIntegerNumber) { + t['throws']( + function () { ES.ArrayCreate(nonIntegerNumber); }, + TypeError, + 'length must be an integer number >= 0' + ); + }); + + t['throws']( + function () { ES.ArrayCreate(Math.pow(2, 32)); }, + RangeError, + 'length must be < 2**32' + ); + + t.deepEqual(ES.ArrayCreate(-0), [], 'length of -0 creates an empty array'); + t.deepEqual(ES.ArrayCreate(0), [], 'length of +0 creates an empty array'); + // eslint-disable-next-line no-sparse-arrays, comma-spacing + t.deepEqual(ES.ArrayCreate(1), [,], 'length of 1 creates a sparse array of length 1'); + // eslint-disable-next-line no-sparse-arrays, comma-spacing + t.deepEqual(ES.ArrayCreate(2), [,,], 'length of 2 creates a sparse array of length 2'); + + t.test('proto argument', { skip: !$setProto }, function (st) { + var fakeProto = { + push: { toString: function () { return 'not array push'; } } + }; + st.equal(ES.ArrayCreate(0, fakeProto).push, fakeProto.push, 'passing the proto argument works'); + st.end(); + }); + + t.end(); + }); + + test('ArraySetLength', function (t) { + forEach(v.primitives.concat(v.objects), function (nonArray) { + t['throws']( + function () { ES.ArraySetLength(nonArray, 0); }, + TypeError, + 'A: ' + debug(nonArray) + ' is not an Array' + ); + }); + + forEach(v.nonUndefinedPrimitives, function (primitive) { + t['throws']( + function () { ES.ArraySetLength([], primitive); }, + TypeError, + 'Desc: ' + debug(primitive) + ' is not a Property Descriptor' + ); + }); + + t.test('making length nonwritable', { skip: !getOwnPropertyDescriptor }, function (st) { + var a = []; + ES.ArraySetLength(a, { '[[Writable]]': false }); + st.deepEqual( + getOwnPropertyDescriptor(a, 'length'), + { + configurable: false, + enumerable: false, + value: 0, + writable: false + }, + 'without a value, length becomes nonwritable' + ); + st.end(); + }); + + var arr = []; + ES.ArraySetLength(arr, { '[[Value]]': 7 }); + t.equal(arr.length, 7, 'array now has a length of 7'); + + t.end(); + }); + + test('CreateHTML', function (t) { + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { ES.CreateHTML('', nonString, '', ''); }, + TypeError, + 'tag: ' + debug(nonString) + ' is not a String' + ); + t['throws']( + function () { ES.CreateHTML('', '', nonString, ''); }, + TypeError, + 'attribute: ' + debug(nonString) + ' is not a String' + ); + }); + + t.equal( + ES.CreateHTML( + { toString: function () { return 'the string'; } }, + 'some HTML tag!', + '' + ), + 'the string', + 'works with an empty string attribute value' + ); + + t.equal( + ES.CreateHTML( + { toString: function () { return 'the string'; } }, + 'some HTML tag!', + 'attr', + 'value "with quotes"' + ), + 'the string', + 'works with an attribute, and a value with quotes' + ); + + t.end(); + }); + + test('GetOwnPropertyKeys', function (t) { + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.GetOwnPropertyKeys(primitive, 'String'); }, + TypeError, + 'O: ' + debug(primitive) + ' is not an Object' + ); + }); + + t['throws']( + function () { ES.GetOwnPropertyKeys({}, 'not string or symbol'); }, + TypeError, + 'Type: must be "String" or "Symbol"' + ); + + t.test('Symbols', { skip: !v.hasSymbols }, function (st) { + var O = { a: 1 }; + O[Symbol.iterator] = true; + var s = Symbol('test'); + defineProperty(O, s, { enumerable: false, value: true }); + + st.deepEqual( + ES.GetOwnPropertyKeys(O, 'Symbol'), + [Symbol.iterator, s], + 'works with Symbols, enumerable or not' + ); + + st.end(); + }); + + t.test('non-enumerable names', { skip: !defineProperty.oDP }, function (st) { + var O = { a: 1 }; + defineProperty(O, 'b', { enumerable: false, value: 2 }); + if (v.hasSymbols) { + O[Symbol.iterator] = true; + } + + st.deepEqual( + ES.GetOwnPropertyKeys(O, 'String').sort(), + ['a', 'b'].sort(), + 'works with Strings, enumerable or not' + ); + + st.end(); + }); + + t.deepEqual( + ES.GetOwnPropertyKeys({ a: 1, b: 2 }, 'String').sort(), + ['a', 'b'].sort(), + 'works with enumerable keys' + ); + + t.end(); + }); + + test('SymbolDescriptiveString', function (t) { + forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) { + t['throws']( + function () { ES.SymbolDescriptiveString(nonSymbol); }, + TypeError, + debug(nonSymbol) + ' is not a Symbol' + ); + }); + + t.test('Symbols', { skip: !v.hasSymbols }, function (st) { + st.equal(ES.SymbolDescriptiveString(Symbol()), 'Symbol()', 'undefined description'); + st.equal(ES.SymbolDescriptiveString(Symbol('')), 'Symbol()', 'empty string description'); + st.equal(ES.SymbolDescriptiveString(Symbol.iterator), 'Symbol(Symbol.iterator)', 'well-known symbol'); + st.equal(ES.SymbolDescriptiveString(Symbol('foo')), 'Symbol(foo)', 'string description'); + + st.end(); + }); + + t.end(); + }); + + test('GetSubstitution', { skip: skips && skips.GetSubstitution }, function (t) { + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { ES.GetSubstitution(nonString, '', 0, [], ''); }, + TypeError, + '`matched`: ' + debug(nonString) + ' is not a String' + ); + + t['throws']( + function () { ES.GetSubstitution('', nonString, 0, [], ''); }, + TypeError, + '`str`: ' + debug(nonString) + ' is not a String' + ); + + t['throws']( + function () { ES.GetSubstitution('', '', 0, [], nonString); }, + TypeError, + '`replacement`: ' + debug(nonString) + ' is not a String' + ); + + if (canDistinguishSparseFromUndefined || typeof nonString !== 'undefined') { + t['throws']( + function () { ES.GetSubstitution('', '', 0, [nonString], ''); }, + TypeError, + '`captures`: ' + debug([nonString]) + ' is not an Array of strings' + ); + } + }); + + forEach(v.nonIntegerNumbers.concat([-1, -42, -Infinity]), function (nonNonNegativeInteger) { + t['throws']( + function () { ES.GetSubstitution('', '', nonNonNegativeInteger, [], ''); }, + TypeError, + '`position`: ' + debug(nonNonNegativeInteger) + ' is not a non-negative integer' + ); + }); + + forEach(v.nonArrays, function (nonArray) { + t['throws']( + function () { ES.GetSubstitution('', '', 0, nonArray, ''); }, + TypeError, + '`captures`: ' + debug(nonArray) + ' is not an Array' + ); + }); + + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 3, [], '123'), + '123', + 'returns the substitution' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '$$2$'), + '$2$', + 'supports $$, and trailing $' + ); + + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$&<'), + '>abcdef<', + 'supports $&' + ); + + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$`<'), + '><', + 'supports $` at position 0' + ); + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 3, [], '>$`<'), + '>ab<', + 'supports $` at position > 0' + ); + + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 7, [], ">$'<"), + '><', + "supports $' at a position where there's less than `matched.length` chars left" + ); + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 3, [], ">$'<"), + '>ghi<', + "supports $' at a position where there's more than `matched.length` chars left" + ); + + for (var i = 0; i < 100; i += 1) { + var captures = []; + captures[i] = 'test'; + if (i > 0) { + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$' + i + '<'), + '>undefined<', + 'supports $' + i + ' with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$' + i), + '>undefined', + 'supports $' + i + ' at the end of the replacement, with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$' + i + '<'), + '><', + 'supports $' + i + ' with a capture at that index' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$' + i), + '>', + 'supports $' + i + ' at the end of the replacement, with a capture at that index' + ); + } + if (i < 10) { + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$0' + i + '<'), + i === 0 ? '><' : '>undefined<', + 'supports $0' + i + ' with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], '>$0' + i), + i === 0 ? '>' : '>undefined', + 'supports $0' + i + ' at the end of the replacement, with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$0' + i + '<'), + '><', + 'supports $0' + i + ' with a capture at that index' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, '>$0' + i), + '>', + 'supports $0' + i + ' at the end of the replacement, with a capture at that index' + ); + } + } + + t.end(); + }); + + test('SecFromTime', function (t) { + var now = new Date(); + t.equal(ES.SecFromTime(now.getTime()), now.getUTCSeconds(), 'second from Date timestamp matches getUTCSeconds'); + t.end(); + }); + + test('MinFromTime', function (t) { + var now = new Date(); + t.equal(ES.MinFromTime(now.getTime()), now.getUTCMinutes(), 'minute from Date timestamp matches getUTCMinutes'); + t.end(); + }); + + test('HourFromTime', function (t) { + var now = new Date(); + t.equal(ES.HourFromTime(now.getTime()), now.getUTCHours(), 'hour from Date timestamp matches getUTCHours'); + t.end(); + }); + + test('msFromTime', function (t) { + var now = new Date(); + t.equal(ES.msFromTime(now.getTime()), now.getUTCMilliseconds(), 'ms from Date timestamp matches getUTCMilliseconds'); + t.end(); + }); + + var msPerSecond = 1e3; + var msPerMinute = 60 * msPerSecond; + var msPerHour = 60 * msPerMinute; + var msPerDay = 24 * msPerHour; + + test('Day', function (t) { + var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5); + var add = 2.5; + var later = new Date(time + (add * msPerDay)); + + t.equal(ES.Day(later.getTime()), ES.Day(time) + Math.floor(add), 'adding 2.5 days worth of ms, gives a Day delta of 2'); + t.end(); + }); + + test('TimeWithinDay', function (t) { + var time = Date.UTC(2019, 8, 10, 2, 3, 4, 5); + var add = 2.5; + var later = new Date(time + (add * msPerDay)); + + t.equal(ES.TimeWithinDay(later.getTime()), ES.TimeWithinDay(time) + (0.5 * msPerDay), 'adding 2.5 days worth of ms, gives a TimeWithinDay delta of +0.5'); + t.end(); + }); + + test('DayFromYear', function (t) { + t.equal(ES.DayFromYear(2021) - ES.DayFromYear(2020), 366, '2021 is a leap year, has 366 days'); + t.equal(ES.DayFromYear(2020) - ES.DayFromYear(2019), 365, '2020 is not a leap year, has 365 days'); + t.equal(ES.DayFromYear(2019) - ES.DayFromYear(2018), 365, '2019 is not a leap year, has 365 days'); + t.equal(ES.DayFromYear(2018) - ES.DayFromYear(2017), 365, '2018 is not a leap year, has 365 days'); + t.equal(ES.DayFromYear(2017) - ES.DayFromYear(2016), 366, '2017 is a leap year, has 366 days'); + + t.end(); + }); + + test('TimeFromYear', function (t) { + for (var i = 1900; i < 2100; i += 1) { + t.equal(ES.TimeFromYear(i), Date.UTC(i, 0, 1), 'TimeFromYear matches a Date object’s year: ' + i); + } + t.end(); + }); + + test('YearFromTime', function (t) { + for (var i = 1900; i < 2100; i += 1) { + t.equal(ES.YearFromTime(Date.UTC(i, 0, 1)), i, 'YearFromTime matches a Date object’s year on 1/1: ' + i); + t.equal(ES.YearFromTime(Date.UTC(i, 10, 1)), i, 'YearFromTime matches a Date object’s year on 10/1: ' + i); + } + t.end(); + }); + + test('WeekDay', function (t) { + var now = new Date(); + var today = now.getUTCDay(); + for (var i = 0; i < 7; i += 1) { + var weekDay = ES.WeekDay(now.getTime() + (i * msPerDay)); + t.equal(weekDay, (today + i) % 7, i + ' days after today (' + today + '), WeekDay is ' + weekDay); + } + t.end(); + }); + + test('DaysInYear', function (t) { + t.equal(ES.DaysInYear(2021), 365, '2021 is not a leap year'); + t.equal(ES.DaysInYear(2020), 366, '2020 is a leap year'); + t.equal(ES.DaysInYear(2019), 365, '2019 is not a leap year'); + t.equal(ES.DaysInYear(2018), 365, '2018 is not a leap year'); + t.equal(ES.DaysInYear(2017), 365, '2017 is not a leap year'); + t.equal(ES.DaysInYear(2016), 366, '2016 is a leap year'); + + t.end(); + }); + + test('InLeapYear', function (t) { + t.equal(ES.InLeapYear(Date.UTC(2021, 0, 1)), 0, '2021 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2020, 0, 1)), 1, '2020 is a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2019, 0, 1)), 0, '2019 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2018, 0, 1)), 0, '2018 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2017, 0, 1)), 0, '2017 is not a leap year'); + t.equal(ES.InLeapYear(Date.UTC(2016, 0, 1)), 1, '2016 is a leap year'); + + t.end(); + }); + + test('DayWithinYear', function (t) { + t.equal(ES.DayWithinYear(Date.UTC(2019, 0, 1)), 0, '1/1 is the 1st day'); + t.equal(ES.DayWithinYear(Date.UTC(2019, 11, 31)), 364, '12/31 is the 365th day in a non leap year'); + t.equal(ES.DayWithinYear(Date.UTC(2016, 11, 31)), 365, '12/31 is the 366th day in a leap year'); + + t.end(); + }); + + test('MonthFromTime', function (t) { + t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 1)), 0, 'non-leap: 1/1 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 0, 31)), 0, 'non-leap: 1/31 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 1)), 1, 'non-leap: 2/1 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 28)), 1, 'non-leap: 2/28 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 1, 29)), 2, 'non-leap: 2/29 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 1)), 2, 'non-leap: 3/1 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 2, 31)), 2, 'non-leap: 3/31 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 1)), 3, 'non-leap: 4/1 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 3, 30)), 3, 'non-leap: 4/30 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 1)), 4, 'non-leap: 5/1 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 4, 31)), 4, 'non-leap: 5/31 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 1)), 5, 'non-leap: 6/1 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 5, 30)), 5, 'non-leap: 6/30 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 1)), 6, 'non-leap: 7/1 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 6, 31)), 6, 'non-leap: 7/31 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 1)), 7, 'non-leap: 8/1 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 7, 30)), 7, 'non-leap: 8/30 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 1)), 8, 'non-leap: 9/1 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 8, 30)), 8, 'non-leap: 9/30 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 1)), 9, 'non-leap: 10/1 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 9, 31)), 9, 'non-leap: 10/31 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 1)), 10, 'non-leap: 11/1 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 10, 30)), 10, 'non-leap: 11/30 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 1)), 11, 'non-leap: 12/1 gives December'); + t.equal(ES.MonthFromTime(Date.UTC(2019, 11, 31)), 11, 'non-leap: 12/31 gives December'); + + t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 1)), 0, 'leap: 1/1 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 0, 31)), 0, 'leap: 1/31 gives January'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 1)), 1, 'leap: 2/1 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 28)), 1, 'leap: 2/28 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 1, 29)), 1, 'leap: 2/29 gives February'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 1)), 2, 'leap: 3/1 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 2, 31)), 2, 'leap: 3/31 gives March'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 1)), 3, 'leap: 4/1 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 3, 30)), 3, 'leap: 4/30 gives April'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 1)), 4, 'leap: 5/1 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 4, 31)), 4, 'leap: 5/31 gives May'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 1)), 5, 'leap: 6/1 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 5, 30)), 5, 'leap: 6/30 gives June'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 1)), 6, 'leap: 7/1 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 6, 31)), 6, 'leap: 7/31 gives July'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 1)), 7, 'leap: 8/1 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 7, 30)), 7, 'leap: 8/30 gives August'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 1)), 8, 'leap: 9/1 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 8, 30)), 8, 'leap: 9/30 gives September'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 1)), 9, 'leap: 10/1 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 9, 31)), 9, 'leap: 10/31 gives October'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 1)), 10, 'leap: 11/1 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 10, 30)), 10, 'leap: 11/30 gives November'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 1)), 11, 'leap: 12/1 gives December'); + t.equal(ES.MonthFromTime(Date.UTC(2016, 11, 31)), 11, 'leap: 12/31 gives December'); + t.end(); + }); + + test('DateFromTime', function (t) { + var i; + for (i = 1; i <= 28; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2019, 1, i)), i, '2019.02.' + i + ' is date ' + i); + } + for (i = 1; i <= 29; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2016, 1, i)), i, '2016.02.' + i + ' is date ' + i); + } + for (i = 1; i <= 30; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2019, 8, i)), i, '2019.09.' + i + ' is date ' + i); + } + for (i = 1; i <= 31; i += 1) { + t.equal(ES.DateFromTime(Date.UTC(2019, 9, i)), i, '2019.10.' + i + ' is date ' + i); + } + t.end(); + }); + + test('MakeDay', function (t) { + var day2015 = 16687; + t.equal(ES.MakeDay(2015, 8, 9), day2015, '2015.09.09 is day 16687'); + var day2016 = day2015 + 366; // 2016 is a leap year + t.equal(ES.MakeDay(2016, 8, 9), day2016, '2015.09.09 is day 17053'); + var day2017 = day2016 + 365; + t.equal(ES.MakeDay(2017, 8, 9), day2017, '2017.09.09 is day 17418'); + var day2018 = day2017 + 365; + t.equal(ES.MakeDay(2018, 8, 9), day2018, '2018.09.09 is day 17783'); + var day2019 = day2018 + 365; + t.equal(ES.MakeDay(2019, 8, 9), day2019, '2019.09.09 is day 18148'); + t.end(); + }); + + test('MakeDate', function (t) { + forEach(v.infinities.concat(NaN), function (nonFiniteNumber) { + t.ok(is(ES.MakeDate(nonFiniteNumber, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `day`'); + t.ok(is(ES.MakeDate(0, nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `time`'); + }); + t.equal(ES.MakeDate(0, 0), 0, 'zero day and zero time is zero date'); + t.equal(ES.MakeDate(0, 123), 123, 'zero day and nonzero time is a date of the "time"'); + t.equal(ES.MakeDate(1, 0), msPerDay, 'day of 1 and zero time is a date of "ms per day"'); + t.equal(ES.MakeDate(3, 0), 3 * msPerDay, 'day of 3 and zero time is a date of thrice "ms per day"'); + t.equal(ES.MakeDate(1, 123), msPerDay + 123, 'day of 1 and nonzero time is a date of "ms per day" plus the "time"'); + t.equal(ES.MakeDate(3, 123), (3 * msPerDay) + 123, 'day of 3 and nonzero time is a date of thrice "ms per day" plus the "time"'); + + t.end(); + }); + + test('MakeTime', function (t) { + forEach(v.infinities.concat(NaN), function (nonFiniteNumber) { + t.ok(is(ES.MakeTime(nonFiniteNumber, 0, 0, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `hour`'); + t.ok(is(ES.MakeTime(0, nonFiniteNumber, 0, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `min`'); + t.ok(is(ES.MakeTime(0, 0, nonFiniteNumber, 0), NaN), debug(nonFiniteNumber) + ' is not a finite `sec`'); + t.ok(is(ES.MakeTime(0, 0, 0, nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `ms`'); + }); + + t.equal( + ES.MakeTime(1.2, 2.3, 3.4, 4.5), + (1 * msPerHour) + (2 * msPerMinute) + (3 * msPerSecond) + 4, + 'all numbers are converted to integer, multiplied by the right number of ms, and summed' + ); + + t.end(); + }); + + test('TimeClip', function (t) { + forEach(v.infinities.concat(NaN), function (nonFiniteNumber) { + t.ok(is(ES.TimeClip(nonFiniteNumber), NaN), debug(nonFiniteNumber) + ' is not a finite `time`'); + }); + t.ok(is(ES.TimeClip(8.64e15 + 1), NaN), '8.64e15 is the largest magnitude considered "finite"'); + t.ok(is(ES.TimeClip(-8.64e15 - 1), NaN), '-8.64e15 is the largest magnitude considered "finite"'); + + forEach(v.zeroes.concat([-10, 10, +new Date()]), function (time) { + t.looseEqual(ES.TimeClip(time), time, debug(time) + ' is a time of ' + debug(time)); + }); + + t.end(); + }); + + test('modulo', function (t) { + t.equal(3 % 2, 1, '+3 % 2 is +1'); + t.equal(ES.modulo(3, 2), 1, '+3 mod 2 is +1'); + + t.equal(-3 % 2, -1, '-3 % 2 is -1'); + t.equal(ES.modulo(-3, 2), 1, '-3 mod 2 is +1'); + t.end(); + }); + + test('ToDateString', function (t) { + forEach(v.nonNumbers, function (nonNumber) { + t['throws']( + function () { ES.ToDateString(nonNumber); }, + TypeError, + debug(nonNumber) + ' is not a Number' + ); + }); + + t.equal(ES.ToDateString(NaN), 'Invalid Date', 'NaN becomes "Invalid Date"'); + var now = +new Date(); + t.equal(ES.ToDateString(now), Date(now), 'any timestamp becomes `Date(timestamp)`'); + t.end(); + }); + + test('CreateListFromArrayLike', function (t) { + forEach(v.primitives, function (nonObject) { + t['throws']( + function () { ES.CreateListFromArrayLike(nonObject); }, + TypeError, + debug(nonObject) + ' is not an Object' + ); + }); + forEach(v.nonArrays, function (nonArray) { + t['throws']( + function () { ES.CreateListFromArrayLike({}, nonArray); }, + TypeError, + debug(nonArray) + ' is not an Array' + ); + }); + + t.deepEqual( + ES.CreateListFromArrayLike({ length: 2, 0: 'a', 1: 'b', 2: 'c' }), + ['a', 'b'], + 'arraylike stops at the length' + ); + + t.end(); + }); + + test('GetPrototypeFromConstructor', function (t) { + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + function () { ES.GetPrototypeFromConstructor(nonFunction, '%Array%'); }, + TypeError, + debug(nonFunction) + ' is not a constructor' + ); + }); + + forEach(arrowFns, function (arrowFn) { + t['throws']( + function () { ES.GetPrototypeFromConstructor(arrowFn, '%Array%'); }, + TypeError, + debug(arrowFn) + ' is not a constructor' + ); + }); + + var f = function () {}; + t.equal( + ES.GetPrototypeFromConstructor(f, '%Array.prototype%'), + f.prototype, + 'function with normal `prototype` property returns it' + ); + forEach([true, 'foo', 42], function (truthyPrimitive) { + f.prototype = truthyPrimitive; + t.equal( + ES.GetPrototypeFromConstructor(f, '%Array.prototype%'), + Array.prototype, + 'function with non-object `prototype` property (' + debug(truthyPrimitive) + ') returns default intrinsic' + ); + }); + + t.end(); + }); + + var getNamelessFunction = function () { + var f = Object(function () {}); + try { + delete f.name; + } catch (e) { /**/ } + return f; + }; + + test('SetFunctionName', function (t) { + t.test('non-extensible function', { skip: !Object.preventExtensions }, function (st) { + var f = getNamelessFunction(); + Object.preventExtensions(f); + st['throws']( + function () { ES.SetFunctionName(f, ''); }, + TypeError, + 'throws on a non-extensible function' + ); + st.end(); + }); + + t.test('has an own name property', { skip: !functionsHaveNames }, function (st) { + st['throws']( + function () { ES.SetFunctionName(function g() {}, ''); }, + TypeError, + 'throws if function has an own `name` property' + ); + st.end(); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + t['throws']( + function () { ES.SetFunctionName(getNamelessFunction(), nonPropertyKey); }, + TypeError, + debug(nonPropertyKey) + ' is not a Symbol or String' + ); + }); + + t.test('symbols', { skip: !v.hasSymbols || has(getNamelessFunction(), 'name') }, function (st) { + var pairs = [ + [Symbol(), ''], + [Symbol(undefined), ''], + [Symbol(null), '[null]'], + [Symbol(''), getInferredName ? '[]' : ''], + [Symbol.iterator, '[Symbol.iterator]'], + [Symbol('foo'), '[foo]'] + ]; + forEach(pairs, function (pair) { + var sym = pair[0]; + var desc = pair[1]; + var f = getNamelessFunction(); + ES.SetFunctionName(f, sym); + st.equal(f.name, desc, debug(sym) + ' yields a name of ' + debug(desc)); + }); + + st.end(); + }); + + var f = getNamelessFunction(); + t.test('when names are configurable', { skip: !functionsHaveConfigurableNames || has(f, 'name') }, function (st) { + // without prefix + st.notEqual(f.name, 'foo', 'precondition'); + ES.SetFunctionName(f, 'foo'); + st.equal(f.name, 'foo', 'function name is set without a prefix'); + + // with prefix + var g = getNamelessFunction(); + st.notEqual(g.name, 'pre- foo', 'precondition'); + ES.SetFunctionName(g, 'foo', 'pre-'); + st.equal(g.name, 'pre- foo', 'function name is set with a prefix'); + + st.end(); + }); + + t.end(); + }); +}; + +var es2016 = function ES2016(ES, ops, expectedMissing, skips) { + es2015(ES, ops, expectedMissing, skips); + + test('SameValueNonNumber', function (t) { + var willThrow = [ + [3, 4], + [NaN, 4], + [4, ''], + ['abc', true], + [{}, false] + ]; + forEach(willThrow, function (nums) { + t['throws'](function () { return ES.SameValueNonNumber.apply(ES, nums); }, TypeError, 'value must be same type and non-number'); + }); + + forEach(v.objects.concat(v.nonNumberPrimitives), function (val) { + t.equal(val === val, ES.SameValueNonNumber(val, val), debug(val) + ' is SameValueNonNumber to itself'); + }); + + t.end(); + }); + + test('IterableToArrayLike', { skip: skips && skips.IterableToArrayLike }, function (t) { + t.test('custom iterables', { skip: !v.hasSymbols }, function (st) { + var O = {}; + O[Symbol.iterator] = function () { + var i = -1; + return { + next: function () { + i += 1; + return { + done: i >= 5, + value: i + }; + } + }; + }; + st.deepEqual( + ES.IterableToArrayLike(O), + [0, 1, 2, 3, 4], + 'Symbol.iterator method is called and values collected' + ); + + st.end(); + }); + + t.deepEqual(ES.IterableToArrayLike('abc'), ['a', 'b', 'c'], 'a string of code units spreads'); + t.deepEqual(ES.IterableToArrayLike('💩'), ['💩'], 'a string of code points spreads'); + t.deepEqual(ES.IterableToArrayLike('a💩c'), ['a', '💩', 'c'], 'a string of code points and units spreads'); + + var arr = [1, 2, 3]; + t.deepEqual(ES.IterableToArrayLike(arr), arr, 'an array becomes a similar array'); + t.notEqual(ES.IterableToArrayLike(arr), arr, 'an array becomes a different, but similar, array'); + + var O = {}; + t.equal(ES.IterableToArrayLike(O), O, 'a non-iterable non-array non-string object is returned directly'); + + t.end(); + }); + + test('OrdinaryGetPrototypeOf', function (t) { + t.test('values', { skip: !$getProto }, function (st) { + st.equal(ES.OrdinaryGetPrototypeOf([]), Array.prototype, 'array [[Prototype]] is Array.prototype'); + st.equal(ES.OrdinaryGetPrototypeOf({}), Object.prototype, 'object [[Prototype]] is Object.prototype'); + st.equal(ES.OrdinaryGetPrototypeOf(/a/g), RegExp.prototype, 'regex [[Prototype]] is RegExp.prototype'); + st.equal(ES.OrdinaryGetPrototypeOf(Object('')), String.prototype, 'boxed string [[Prototype]] is String.prototype'); + st.equal(ES.OrdinaryGetPrototypeOf(Object(42)), Number.prototype, 'boxed number [[Prototype]] is Number.prototype'); + st.equal(ES.OrdinaryGetPrototypeOf(Object(true)), Boolean.prototype, 'boxed boolean [[Prototype]] is Boolean.prototype'); + if (v.hasSymbols) { + st.equal(ES.OrdinaryGetPrototypeOf(Object(Symbol.iterator)), Symbol.prototype, 'boxed symbol [[Prototype]] is Symbol.prototype'); + } + st.end(); + }); + + forEach(v.primitives, function (primitive) { + t['throws']( + function () { ES.OrdinaryGetPrototypeOf(primitive); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + t.end(); + }); + + test('OrdinarySetPrototypeOf', { skip: !$getProto || !$setProto }, function (t) { + var a = []; + var proto = {}; + + t.equal(ES.OrdinaryGetPrototypeOf(a), Array.prototype, 'precondition'); + t.equal(ES.OrdinarySetPrototypeOf(a, proto), true, 'setting prototype is successful'); + t.equal(ES.OrdinaryGetPrototypeOf(a), proto, 'postcondition'); + + t.end(); + }); +}; + +var es2017 = function ES2017(ES, ops, expectedMissing, skips) { + es2016(ES, ops, expectedMissing, assign({}, skips, { + EnumerableOwnNames: true, + IterableToArrayLike: true + })); + + test('ToIndex', function (t) { + t.ok(is(ES.ToIndex(), 0), 'no value gives 0'); + t.ok(is(ES.ToIndex(undefined), 0), 'undefined value gives 0'); + + t['throws'](function () { ES.ToIndex(-1); }, RangeError, 'negative numbers throw'); + + t['throws'](function () { ES.ToIndex(MAX_SAFE_INTEGER + 1); }, RangeError, 'too large numbers throw'); + + t.equal(ES.ToIndex(3), 3, 'numbers work'); + t.equal(ES.ToIndex(v.valueOfOnlyObject), 4, 'coercible objects are coerced'); + + t.end(); + }); + + test('EnumerableOwnProperties', { skip: skips && skips.EnumerableOwnProperties }, function (t) { + var obj = testEnumerableOwnNames(t, function (O) { + return ES.EnumerableOwnProperties(O, 'key'); + }); + + t.deepEqual( + ES.EnumerableOwnProperties(obj, 'value'), + [obj.own], + 'returns enumerable own values' + ); + + t.deepEqual( + ES.EnumerableOwnProperties(obj, 'key+value'), + [['own', obj.own]], + 'returns enumerable own entries' + ); + + t.end(); + }); + + test('IterableToList', function (t) { + var customIterator = function () { + var i = -1; + return { + next: function () { + i += 1; + return { + done: i >= 5, + value: i + }; + } + }; + }; + + t.deepEqual( + ES.IterableToList({}, customIterator), + [0, 1, 2, 3, 4], + 'iterator method is called and values collected' + ); + + t.test('Symbol support', { skip: !v.hasSymbols }, function (st) { + st.deepEqual(ES.IterableToList('abc', String.prototype[Symbol.iterator]), ['a', 'b', 'c'], 'a string of code units spreads'); + st.deepEqual(ES.IterableToList('☃', String.prototype[Symbol.iterator]), ['☃'], 'a string of code points spreads'); + + var arr = [1, 2, 3]; + st.deepEqual(ES.IterableToList(arr, arr[Symbol.iterator]), arr, 'an array becomes a similar array'); + st.notEqual(ES.IterableToList(arr, arr[Symbol.iterator]), arr, 'an array becomes a different, but similar, array'); + + st.end(); + }); + + t['throws']( + function () { ES.IterableToList({}, void 0); }, + TypeError, + 'non-function iterator method' + ); + + t.end(); + }); +}; + +var es2018 = function ES2018(ES, ops, expectedMissing, skips) { + es2017(ES, ops, expectedMissing, assign({}, skips, { + EnumerableOwnProperties: true, + GetSubstitution: true, + IsPropertyDescriptor: true + })); + + test('thisSymbolValue', function (t) { + forEach(v.nonSymbolPrimitives.concat(v.objects), function (nonSymbol) { + t['throws']( + function () { ES.thisSymbolValue(nonSymbol); }, + v.hasSymbols ? TypeError : SyntaxError, + debug(nonSymbol) + ' is not a Symbol' + ); + }); + + t.test('no native Symbols', { skip: v.hasSymbols }, function (st) { + forEach(v.objects.concat(v.primitives), function (value) { + st['throws']( + function () { ES.thisSymbolValue(value); }, + SyntaxError, + 'Symbols are not supported' + ); + }); + st.end(); + }); + + t.test('symbol values', { skip: !v.hasSymbols }, function (st) { + forEach(v.symbols, function (symbol) { + st.equal(ES.thisSymbolValue(symbol), symbol, 'Symbol value of ' + debug(symbol) + ' is same symbol'); + + st.equal( + ES.thisSymbolValue(Object(symbol)), + symbol, + 'Symbol value of ' + debug(Object(symbol)) + ' is ' + debug(symbol) + ); + }); + + st.end(); + }); + + t.end(); + }); + + test('IsStringPrefix', function (t) { + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { ES.IsStringPrefix(nonString, 'a'); }, + TypeError, + 'first arg: ' + debug(nonString) + ' is not a string' + ); + t['throws']( + function () { ES.IsStringPrefix('a', nonString); }, + TypeError, + 'second arg: ' + debug(nonString) + ' is not a string' + ); + }); + + forEach(v.strings, function (string) { + t.equal(ES.IsStringPrefix(string, string), true, debug(string) + ' is a prefix of itself'); + + t.equal(ES.IsStringPrefix('', string), true, 'the empty string is a prefix of everything'); + }); + + t.equal(ES.IsStringPrefix('abc', 'abcd'), true, '"abc" is a prefix of "abcd"'); + t.equal(ES.IsStringPrefix('abcd', 'abc'), false, '"abcd" is not a prefix of "abc"'); + + t.equal(ES.IsStringPrefix('a', 'bc'), false, '"a" is not a prefix of "bc"'); + + t.end(); + }); + + test('NumberToString', function (t) { + forEach(v.nonNumbers, function (nonNumber) { + t['throws']( + function () { ES.NumberToString(nonNumber); }, + TypeError, + debug(nonNumber) + ' is not a Number' + ); + }); + + forEach(v.numbers, function (number) { + t.equal(ES.NumberToString(number), String(number), debug(number) + ' stringifies to ' + number); + }); + + t.end(); + }); + + test('CopyDataProperties', function (t) { + t.test('first argument: target', function (st) { + forEach(v.primitives, function (primitive) { + st['throws']( + function () { ES.CopyDataProperties(primitive, {}, []); }, + TypeError, + debug(primitive) + ' is not an Object' + ); + }); + st.end(); + }); + + t.test('second argument: source', function (st) { + var frozenTarget = Object.freeze ? Object.freeze({}) : {}; + forEach(v.nullPrimitives, function (nullish) { + st.equal( + ES.CopyDataProperties(frozenTarget, nullish, []), + frozenTarget, + debug(nullish) + ' "source" yields identical, unmodified target' + ); + }); + + forEach(v.nonNullPrimitives, function (objectCoercible) { + var target = {}; + var result = ES.CopyDataProperties(target, objectCoercible, []); + st.equal(result, target, 'result === target'); + st.deepEqual(keys(result), keys(Object(objectCoercible)), 'target ends up with keys of ' + debug(objectCoercible)); + }); + + st.test('enumerable accessor property', { skip: !defineProperty.oDP }, function (s2t) { + var target = {}; + var source = {}; + defineProperty(source, 'a', { + enumerable: true, + get: function () { return 42; } + }); + var result = ES.CopyDataProperties(target, source, []); + s2t.equal(result, target, 'result === target'); + s2t.deepEqual(result, { a: 42 }, 'target ends up with enumerable accessor of source'); + s2t.end(); + }); + + st.end(); + }); + + t.test('third argument: excludedItems', function (st) { + forEach(v.objects.concat(v.primitives), function (nonArray) { + st['throws']( + function () { ES.CopyDataProperties({}, {}, nonArray); }, + TypeError, + debug(nonArray) + ' is not an Array' + ); + }); + + forEach(v.nonPropertyKeys, function (nonPropertyKey) { + st['throws']( + function () { ES.CopyDataProperties({}, {}, [nonPropertyKey]); }, + TypeError, + debug(nonPropertyKey) + ' is not a Property Key' + ); + }); + + var result = ES.CopyDataProperties({}, { a: 1, b: 2, c: 3 }, ['b']); + st.deepEqual(keys(result).sort(), ['a', 'c'].sort(), 'excluded string keys are excluded'); + + st.test('excluding symbols', { skip: !v.hasSymbols }, function (s2t) { + var source = {}; + forEach(v.symbols, function (symbol) { + source[symbol] = true; + }); + + var includedSymbols = v.symbols.slice(1); + var excludedSymbols = v.symbols.slice(0, 1); + var target = ES.CopyDataProperties({}, source, excludedSymbols); + + forEach(includedSymbols, function (symbol) { + s2t.equal(has(target, symbol), true, debug(symbol) + ' is included'); + }); + + forEach(excludedSymbols, function (symbol) { + s2t.equal(has(target, symbol), false, debug(symbol) + ' is excluded'); + }); + + s2t.end(); + }); + + st.end(); + }); + + t.end(); + }); + + test('PromiseResolve', function (t) { + t.test('Promises unsupported', { skip: typeof Promise === 'function' }, function (st) { + st['throws']( + function () { ES.PromiseResolve(); }, + SyntaxError, + 'Promises are not supported' + ); + st.end(); + }); + + t.test('Promises supported', { skip: typeof Promise !== 'function' }, function (st) { + st.plan(2); + + var a = {}; + var b = {}; + var fulfilled = Promise.resolve(a); + var rejected = Promise.reject(b); + + ES.PromiseResolve(Promise, fulfilled).then(function (x) { + st.equal(x, a, 'fulfilled promise resolves to fulfilled'); + }); + + ES.PromiseResolve(Promise, rejected)['catch'](function (e) { + st.equal(e, b, 'rejected promise resolves to rejected'); + }); + }); + + t.end(); + }); + + test('EnumerableOwnPropertyNames', { skip: skips && skips.EnumerableOwnPropertyNames }, function (t) { + var obj = testEnumerableOwnNames(t, function (O) { + return ES.EnumerableOwnPropertyNames(O, 'key'); + }); + + t.deepEqual( + ES.EnumerableOwnPropertyNames(obj, 'value'), + [obj.own], + 'returns enumerable own values' + ); + + t.deepEqual( + ES.EnumerableOwnPropertyNames(obj, 'key+value'), + [['own', obj.own]], + 'returns enumerable own entries' + ); + + t.end(); + }); + + test('IsPromise', { skip: typeof Promise !== 'function' }, function (t) { + forEach(v.objects.concat(v.primitives), function (nonPromise) { + t.equal(ES.IsPromise(nonPromise), false, debug(nonPromise) + ' is not a Promise'); + }); + + var thenable = { then: Promise.prototype.then }; + t.equal(ES.IsPromise(thenable), false, 'generic thenable is not a Promise'); + + t.equal(ES.IsPromise(Promise.resolve()), true, 'Promise is a Promise'); + + t.end(); + }); + + test('GetSubstitution (ES2018+)', function (t) { + forEach(v.nonStrings, function (nonString) { + t['throws']( + function () { ES.GetSubstitution(nonString, '', 0, [], undefined, ''); }, + TypeError, + '`matched`: ' + debug(nonString) + ' is not a String' + ); + + t['throws']( + function () { ES.GetSubstitution('', nonString, 0, [], undefined, ''); }, + TypeError, + '`str`: ' + debug(nonString) + ' is not a String' + ); + + t['throws']( + function () { ES.GetSubstitution('', '', 0, [], undefined, nonString); }, + TypeError, + '`replacement`: ' + debug(nonString) + ' is not a String' + ); + + t['throws']( + function () { ES.GetSubstitution('', '', 0, [nonString], undefined, ''); }, + TypeError, + '`captures`: ' + debug([nonString]) + ' is not an Array of strings' + ); + }); + + forEach(v.nonIntegerNumbers.concat([-1, -42, -Infinity]), function (nonNonNegativeInteger) { + t['throws']( + function () { ES.GetSubstitution('', '', nonNonNegativeInteger, [], undefined, ''); }, + TypeError, + '`position`: ' + debug(nonNonNegativeInteger) + ' is not a non-negative integer' + ); + }); + + forEach(v.nonArrays, function (nonArray) { + t['throws']( + function () { ES.GetSubstitution('', '', 0, nonArray, undefined, ''); }, + TypeError, + '`captures`: ' + debug(nonArray) + ' is not an Array' + ); + }); + + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 3, [], undefined, '123'), + '123', + 'returns the substitution' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '$$2$'), + '$2$', + 'supports $$, and trailing $' + ); + + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$&<'), + '>abcdef<', + 'supports $&' + ); + + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$`<'), + '><', + 'supports $` at position 0' + ); + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 3, [], undefined, '>$`<'), + '>ab<', + 'supports $` at position > 0' + ); + + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 7, [], undefined, ">$'<"), + '><', + "supports $' at a position where there's less than `matched.length` chars left" + ); + t.equal( + ES.GetSubstitution('def', 'abcdefghi', 3, [], undefined, ">$'<"), + '>ghi<', + "supports $' at a position where there's more than `matched.length` chars left" + ); + + for (var i = 0; i < 100; i += 1) { + var captures = []; + captures[i] = 'test'; + if (i > 0) { + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$' + i + '<'), + '>undefined<', + 'supports $' + i + ' with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$' + i), + '>undefined', + 'supports $' + i + ' at the end of the replacement, with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$' + i + '<'), + '><', + 'supports $' + i + ' with a capture at that index' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$' + i), + '>', + 'supports $' + i + ' at the end of the replacement, with a capture at that index' + ); + } + if (i < 10) { + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$0' + i + '<'), + i === 0 ? '><' : '>undefined<', + 'supports $0' + i + ' with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, [], undefined, '>$0' + i), + i === 0 ? '>' : '>undefined', + 'supports $0' + i + ' at the end of the replacement, with no captures' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$0' + i + '<'), + '><', + 'supports $0' + i + ' with a capture at that index' + ); + t.equal( + ES.GetSubstitution('abcdef', 'abcdefghi', 0, captures, undefined, '>$0' + i), + '>', + 'supports $0' + i + ' at the end of the replacement, with a capture at that index' + ); + } + } + + t.end(); + }); + + test('DateString', function (t) { + forEach(v.nonNumbers.concat(NaN), function (nonNumberOrNaN) { + t['throws']( + function () { ES.DateString(nonNumberOrNaN); }, + TypeError, + debug(nonNumberOrNaN) + ' is not a non-NaN Number' + ); + }); + + t.equal(ES.DateString(Date.UTC(2019, 8, 10, 7, 8, 9)), 'Tue Sep 10 2019'); + t.equal(ES.DateString(Date.UTC(2016, 1, 29, 7, 8, 9)), 'Mon Feb 29 2016'); // leap day + t.end(); + }); + + test('TimeString', function (t) { + forEach(v.nonNumbers.concat(NaN), function (nonNumberOrNaN) { + t['throws']( + function () { ES.TimeString(nonNumberOrNaN); }, + TypeError, + debug(nonNumberOrNaN) + ' is not a non-NaN Number' + ); + }); + + var tv = Date.UTC(2019, 8, 10, 7, 8, 9); + t.equal(ES.TimeString(tv), '07:08:09 GMT'); + t.end(); + }); +}; + +var es2019 = function ES2018(ES, ops, expectedMissing, skips) { + es2018(ES, ops, expectedMissing, assign({}, skips, { + })); + + test('AddEntriesFromIterable', function (t) { + t['throws']( + function () { ES.AddEntriesFromIterable({}, undefined, function () {}); }, + TypeError, + 'iterable must not be undefined' + ); + t['throws']( + function () { ES.AddEntriesFromIterable({}, null, function () {}); }, + TypeError, + 'iterable must not be null' + ); + forEach(v.nonFunctions, function (nonFunction) { + t['throws']( + function () { ES.AddEntriesFromIterable({}, {}, nonFunction); }, + TypeError, + debug(nonFunction) + ' is not a function' + ); + }); + + t.test('Symbol support', { skip: !v.hasSymbols }, function (st) { + st.plan(4); + + var O = {}; + st.equal(ES.AddEntriesFromIterable(O, [], function () {}), O, 'returns the target'); + + var adder = function (key, value) { + st.equal(this, O, 'adder gets proper receiver'); + st.equal(key, 0, 'k is key'); + st.equal(value, 'a', 'v is value'); + }; + ES.AddEntriesFromIterable(O, ['a'].entries(), adder); + + st.end(); + }); + + t.end(); + }); + + test('FlattenIntoArray', function (t) { + t.test('no mapper function', function (st) { + var testDepth = function testDepth(tt, depth, expected) { + var a = []; + var o = [[1], 2, , [[3]], [], 4, [[[[5]]]]]; // eslint-disable-line no-sparse-arrays + ES.FlattenIntoArray(a, o, o.length, 0, depth); + tt.deepEqual(a, expected, 'depth: ' + depth); + }; + + testDepth(st, 1, [1, 2, [3], 4, [[[5]]]]); + testDepth(st, 2, [1, 2, 3, 4, [[5]]]); + testDepth(st, 3, [1, 2, 3, 4, [5]]); + testDepth(st, 4, [1, 2, 3, 4, 5]); + testDepth(st, Infinity, [1, 2, 3, 4, 5]); + st.end(); + }); + + t.test('mapper function', function (st) { + var testMapper = function testMapper(tt, mapper, expected, thisArg) { + var a = []; + var o = [[1], 2, , [[3]], [], 4, [[[[5]]]]]; // eslint-disable-line no-sparse-arrays + ES.FlattenIntoArray(a, o, o.length, 0, 1, mapper, thisArg); + tt.deepEqual(a, expected); + }; + + var double = function double(x) { + return typeof x === 'number' ? 2 * x : x; + }; + testMapper( + st, + double, + [1, 4, [3], 8, [[[5]]]] + ); + var receiver = hasStrictMode ? 42 : Object(42); + testMapper( + st, + function (x) { return [this, double(x)]; }, + [receiver, [1], receiver, 4, receiver, [[3]], receiver, [], receiver, 8, receiver, [[[[5]]]]], + 42 + ); + st.end(); + }); + + t.end(); + }); + + test('TrimString', function (t) { + t.test('non-object string', function (st) { + forEach(v.nullPrimitives, function (nullish) { + st['throws']( + function () { ES.TrimString(nullish); }, + debug(nullish) + ' is not an Object' + ); + }); + st.end(); + }); + + var string = ' \n abc \n '; + t.equal(ES.TrimString(string, 'start'), string.slice(string.indexOf('a'))); + t.equal(ES.TrimString(string, 'end'), string.slice(0, string.lastIndexOf('c') + 1)); + t.equal(ES.TrimString(string, 'start+end'), string.slice(string.indexOf('a'), string.lastIndexOf('c') + 1)); + + t.end(); + }); +}; + +module.exports = { + es2015: es2015, + es2016: es2016, + es2017: es2017, + es2018: es2018, + es2019: es2019 +}; diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/.eslintrc b/tic-tac-toe-app/node_modules/es-to-primitive/.eslintrc new file mode 100644 index 0000000..b6639b9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/.eslintrc @@ -0,0 +1,22 @@ +{ + "root": true, + + "extends": "@ljharb", + + "rules": { + "complexity": [2, 14], + "func-name-matching": 0, + "id-length": [2, { "min": 1, "max": 24, "properties": "never" }], + "max-statements": [2, 20], + "new-cap": [2, { "capIsNewExceptions": ["GetMethod"] }] + }, + + "overrides": [ + { + "files": "test/**", + "rules": { + "max-lines-per-function": [2, { "max": 68 }], + }, + } + ], +} diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/.github/FUNDING.yml b/tic-tac-toe-app/node_modules/es-to-primitive/.github/FUNDING.yml new file mode 100644 index 0000000..9f928ae --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: [ljharb] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: npm/es-to-primitive +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/.travis.yml b/tic-tac-toe-app/node_modules/es-to-primitive/.travis.yml new file mode 100644 index 0000000..d4c5a84 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/.travis.yml @@ -0,0 +1,15 @@ +version: ~> 1.0 +language: node_js +cache: + directories: + - "$(nvm cache dir)" +os: + - linux +import: + - ljharb/travis-ci:node/all.yml + - ljharb/travis-ci:node/pretest.yml + - ljharb/travis-ci:node/posttest.yml + - ljharb/travis-ci:node/coverage.yml +matrix: + allow_failures: + - env: COVERAGE=true diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/CHANGELOG.md b/tic-tac-toe-app/node_modules/es-to-primitive/CHANGELOG.md new file mode 100644 index 0000000..0a5dda7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/CHANGELOG.md @@ -0,0 +1,49 @@ +1.2.1 / 2019-11-08 +================= + * [readme] remove testling URLs + * [meta] add `funding` field + * [meta] create FUNDING.yml + * [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `replace`, `semver`, `tape`, `function.prototype.name` + * [Tests] use shared travis-ci configs + * [Tests] Add es5 tests for `symbol` types (#45) + * [Tests] use `npx aud` instead of `nsp` or `npm audit` with hoops + * [Tests] remove `jscs` + +1.2.0 / 2018-09-27 +================= + * [New] create ES2015 entry point/property, to replace ES6 + * [Fix] Ensure optional arguments are not part of the length (#29) + * [Deps] update `is-callable` + * [Dev Deps] update `tape`, `jscs`, `nsp`, `eslint`, `@ljharb/eslint-config`, `semver`, `object-inspect`, `replace` + * [Tests] avoid util.inspect bug with `new Date(NaN)` on node v6.0 and v6.1. + * [Tests] up to `node` `v10.11`, `v9.11`, `v8.12`, `v6.14`, `v4.9` + +1.1.1 / 2016-01-03 +================= + * [Fix: ES5] fix coercion logic: ES5’s ToPrimitive does not coerce any primitive value, regardless of hint (#2) + +1.1.0 / 2015-12-27 +================= + * [New] add `Symbol.toPrimitive` support + * [Deps] update `is-callable`, `is-date-object` + * [Dev Deps] update `eslint`, `tape`, `semver`, `jscs`, `covert`, `nsp`, `@ljharb/eslint-config` + * [Dev Deps] remove unused deps + * [Tests] up to `node` `v5.3` + * [Tests] fix npm upgrades on older node versions + * [Tests] fix testling + * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG + +1.0.1 / 2016-01-03 +================= + * [Fix: ES5] fix coercion logic: ES5’s ToPrimitive does not coerce any primitive value, regardless of hint (#2) + * [Deps] update `is-callable`, `is-date-object` + * [Dev Deps] update `eslint`, `tape`, `semver`, `jscs`, `covert`, `nsp`, `@ljharb/eslint-config` + * [Dev Deps] remove unused deps + * [Tests] up to `node` `v5.3` + * [Tests] fix npm upgrades on older node versions + * [Tests] fix testling + * [Docs] Switch from vb.teelaun.ch to versionbadg.es for the npm version badge SVG + +1.0.0 / 2015-03-19 +================= + * Initial release. diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/LICENSE b/tic-tac-toe-app/node_modules/es-to-primitive/LICENSE new file mode 100644 index 0000000..b43df44 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Jordan Harband + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/Makefile b/tic-tac-toe-app/node_modules/es-to-primitive/Makefile new file mode 100644 index 0000000..b9e4fe1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/Makefile @@ -0,0 +1,61 @@ +# Since we rely on paths relative to the makefile location, abort if make isn't being run from there. +$(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in)) + + # The files that need updating when incrementing the version number. +VERSIONED_FILES := *.js *.json README* + + +# Add the local npm packages' bin folder to the PATH, so that `make` can find them, when invoked directly. +# Note that rather than using `$(npm bin)` the 'node_modules/.bin' path component is hard-coded, so that invocation works even from an environment +# where npm is (temporarily) unavailable due to having deactivated an nvm instance loaded into the calling shell in order to avoid interference with tests. +export PATH := $(shell printf '%s' "$$PWD/node_modules/.bin:$$PATH") +UTILS := semver +# Make sure that all required utilities can be located. +UTIL_CHECK := $(or $(shell PATH="$(PATH)" which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to run `npm install` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS))) + +# Default target (by virtue of being the first non '.'-prefixed in the file). +.PHONY: _no-target-specified +_no-target-specified: + $(error Please specify the target to make - `make list` shows targets. Alternatively, use `npm test` to run the default tests; `npm run` shows all tests) + +# Lists all targets defined in this makefile. +.PHONY: list +list: + @$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort + +# All-tests target: invokes the specified test suites for ALL shells defined in $(SHELLS). +.PHONY: test +test: + @npm test + +.PHONY: _ensure-tag +_ensure-tag: +ifndef TAG + $(error Please invoke with `make TAG= release`, where is either an increment specifier (patch, minor, major, prepatch, preminor, premajor, prerelease), or an explicit major.minor.patch version number) +endif + +CHANGELOG_ERROR = $(error No CHANGELOG specified) +.PHONY: _ensure-changelog +_ensure-changelog: + @ (git status -sb --porcelain | command grep -E '^( M|[MA] ) CHANGELOG.md' > /dev/null) || (echo no CHANGELOG.md specified && exit 2) + +# Ensures that the git workspace is clean. +.PHONY: _ensure-clean +_ensure-clean: + @[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; } + +# Makes a release; invoke with `make TAG= release`. +.PHONY: release +release: _ensure-tag _ensure-changelog _ensure-clean + @old_ver=`git describe --abbrev=0 --tags --match 'v[0-9]*.[0-9]*.[0-9]*'` || { echo "Failed to determine current version." >&2; exit 1; }; old_ver=$${old_ver#v}; \ + new_ver=`echo "$(TAG)" | sed 's/^v//'`; new_ver=$${new_ver:-patch}; \ + if printf "$$new_ver" | command grep -q '^[0-9]'; then \ + semver "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be major.minor.patch' >&2; exit 2; }; \ + semver -r "> $$old_ver" "$$new_ver" >/dev/null || { echo 'Invalid version number specified: $(TAG) - must be HIGHER than current one.' >&2; exit 2; } \ + else \ + new_ver=`semver -i "$$new_ver" "$$old_ver"` || { echo 'Invalid version-increment specifier: $(TAG)' >&2; exit 2; } \ + fi; \ + printf "=== Bumping version **$$old_ver** to **$$new_ver** before committing and tagging:\n=== TYPE 'proceed' TO PROCEED, anything else to abort: " && read response && [ "$$response" = 'proceed' ] || { echo 'Aborted.' >&2; exit 2; }; \ + replace "$$old_ver" "$$new_ver" -- $(VERSIONED_FILES) && \ + git commit -m "v$$new_ver" $(VERSIONED_FILES) CHANGELOG.md && \ + git tag -a -m "v$$new_ver" "v$$new_ver" diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/README.md b/tic-tac-toe-app/node_modules/es-to-primitive/README.md new file mode 100644 index 0000000..5ce322b --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/README.md @@ -0,0 +1,49 @@ +# es-to-primitive [![Version Badge][npm-version-svg]][package-url] + +[![Build Status][travis-svg]][travis-url] +[![dependency status][deps-svg]][deps-url] +[![dev dependency status][dev-deps-svg]][dev-deps-url] +[![License][license-image]][license-url] +[![Downloads][downloads-image]][downloads-url] + +[![npm badge][npm-badge-png]][package-url] + +ECMAScript “ToPrimitive” algorithm. Provides ES5 and ES2015 versions. +When different versions of the spec conflict, the default export will be the latest version of the abstract operation. +Alternative versions will also be available under an `es5`/`es2015` exported property if you require a specific version. + +## Example + +```js +var toPrimitive = require('es-to-primitive'); +var assert = require('assert'); + +assert(toPrimitive(function () {}) === String(function () {})); + +var date = new Date(); +assert(toPrimitive(date) === String(date)); + +assert(toPrimitive({ valueOf: function () { return 3; } }) === 3); + +assert(toPrimitive(['a', 'b', 3]) === String(['a', 'b', 3])); + +var sym = Symbol(); +assert(toPrimitive(Object(sym)) === sym); +``` + +## Tests +Simply clone the repo, `npm install`, and run `npm test` + +[package-url]: https://npmjs.org/package/es-to-primitive +[npm-version-svg]: http://versionbadg.es/ljharb/es-to-primitive.svg +[travis-svg]: https://travis-ci.org/ljharb/es-to-primitive.svg +[travis-url]: https://travis-ci.org/ljharb/es-to-primitive +[deps-svg]: https://david-dm.org/ljharb/es-to-primitive.svg +[deps-url]: https://david-dm.org/ljharb/es-to-primitive +[dev-deps-svg]: https://david-dm.org/ljharb/es-to-primitive/dev-status.svg +[dev-deps-url]: https://david-dm.org/ljharb/es-to-primitive#info=devDependencies +[npm-badge-png]: https://nodei.co/npm/es-to-primitive.png?downloads=true&stars=true +[license-image]: http://img.shields.io/npm/l/es-to-primitive.svg +[license-url]: LICENSE +[downloads-image]: http://img.shields.io/npm/dm/es-to-primitive.svg +[downloads-url]: http://npm-stat.com/charts.html?package=es-to-primitive diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/es2015.js b/tic-tac-toe-app/node_modules/es-to-primitive/es2015.js new file mode 100644 index 0000000..4a11a34 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/es2015.js @@ -0,0 +1,75 @@ +'use strict'; + +var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'; + +var isPrimitive = require('./helpers/isPrimitive'); +var isCallable = require('is-callable'); +var isDate = require('is-date-object'); +var isSymbol = require('is-symbol'); + +var ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) { + if (typeof O === 'undefined' || O === null) { + throw new TypeError('Cannot call method on ' + O); + } + if (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) { + throw new TypeError('hint must be "string" or "number"'); + } + var methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString']; + var method, result, i; + for (i = 0; i < methodNames.length; ++i) { + method = O[methodNames[i]]; + if (isCallable(method)) { + result = method.call(O); + if (isPrimitive(result)) { + return result; + } + } + } + throw new TypeError('No default value'); +}; + +var GetMethod = function GetMethod(O, P) { + var func = O[P]; + if (func !== null && typeof func !== 'undefined') { + if (!isCallable(func)) { + throw new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function'); + } + return func; + } + return void 0; +}; + +// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive +module.exports = function ToPrimitive(input) { + if (isPrimitive(input)) { + return input; + } + var hint = 'default'; + if (arguments.length > 1) { + if (arguments[1] === String) { + hint = 'string'; + } else if (arguments[1] === Number) { + hint = 'number'; + } + } + + var exoticToPrim; + if (hasSymbols) { + if (Symbol.toPrimitive) { + exoticToPrim = GetMethod(input, Symbol.toPrimitive); + } else if (isSymbol(input)) { + exoticToPrim = Symbol.prototype.valueOf; + } + } + if (typeof exoticToPrim !== 'undefined') { + var result = exoticToPrim.call(input, hint); + if (isPrimitive(result)) { + return result; + } + throw new TypeError('unable to convert exotic object to primitive'); + } + if (hint === 'default' && (isDate(input) || isSymbol(input))) { + hint = 'string'; + } + return ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint); +}; diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/es5.js b/tic-tac-toe-app/node_modules/es-to-primitive/es5.js new file mode 100644 index 0000000..602aa36 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/es5.js @@ -0,0 +1,45 @@ +'use strict'; + +var toStr = Object.prototype.toString; + +var isPrimitive = require('./helpers/isPrimitive'); + +var isCallable = require('is-callable'); + +// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8 +var ES5internalSlots = { + '[[DefaultValue]]': function (O) { + var actualHint; + if (arguments.length > 1) { + actualHint = arguments[1]; + } else { + actualHint = toStr.call(O) === '[object Date]' ? String : Number; + } + + if (actualHint === String || actualHint === Number) { + var methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString']; + var value, i; + for (i = 0; i < methods.length; ++i) { + if (isCallable(O[methods[i]])) { + value = O[methods[i]](); + if (isPrimitive(value)) { + return value; + } + } + } + throw new TypeError('No default value'); + } + throw new TypeError('invalid [[DefaultValue]] hint supplied'); + } +}; + +// http://ecma-international.org/ecma-262/5.1/#sec-9.1 +module.exports = function ToPrimitive(input) { + if (isPrimitive(input)) { + return input; + } + if (arguments.length > 1) { + return ES5internalSlots['[[DefaultValue]]'](input, arguments[1]); + } + return ES5internalSlots['[[DefaultValue]]'](input); +}; diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/es6.js b/tic-tac-toe-app/node_modules/es-to-primitive/es6.js new file mode 100644 index 0000000..2d1f4dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/es6.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./es2015'); diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/helpers/isPrimitive.js b/tic-tac-toe-app/node_modules/es-to-primitive/helpers/isPrimitive.js new file mode 100644 index 0000000..06f0bf0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/helpers/isPrimitive.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = function isPrimitive(value) { + return value === null || (typeof value !== 'function' && typeof value !== 'object'); +}; diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/index.js b/tic-tac-toe-app/node_modules/es-to-primitive/index.js new file mode 100644 index 0000000..e60d912 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/index.js @@ -0,0 +1,17 @@ +'use strict'; + +var ES5 = require('./es5'); +var ES6 = require('./es6'); +var ES2015 = require('./es2015'); + +if (Object.defineProperty) { + Object.defineProperty(ES2015, 'ES5', { enumerable: false, value: ES5 }); + Object.defineProperty(ES2015, 'ES6', { enumerable: false, value: ES6 }); + Object.defineProperty(ES2015, 'ES2015', { enumerable: false, value: ES2015 }); +} else { + ES6.ES5 = ES5; + ES6.ES6 = ES6; + ES6.ES2015 = ES2015; +} + +module.exports = ES2015; diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/package.json b/tic-tac-toe-app/node_modules/es-to-primitive/package.json new file mode 100644 index 0000000..31a7c0f --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/package.json @@ -0,0 +1,113 @@ +{ + "_from": "es-to-primitive@^1.2.1", + "_id": "es-to-primitive@1.2.1", + "_inBundle": false, + "_integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "_location": "/es-to-primitive", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "es-to-primitive@^1.2.1", + "name": "es-to-primitive", + "escapedName": "es-to-primitive", + "rawSpec": "^1.2.1", + "saveSpec": null, + "fetchSpec": "^1.2.1" + }, + "_requiredBy": [ + "/es-abstract" + ], + "_resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "_shasum": "e55cd4c9cdc188bcefb03b366c736323fc5c898a", + "_spec": "es-to-primitive@^1.2.1", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/es-abstract", + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com" + }, + "bugs": { + "url": "https://github.com/ljharb/es-to-primitive/issues" + }, + "bundleDependencies": false, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "deprecated": false, + "description": "ECMAScript “ToPrimitive” algorithm. Provides ES5 and ES2015 versions.", + "devDependencies": { + "@ljharb/eslint-config": "^15.0.0", + "covert": "^1.1.1", + "eslint": "^6.6.0", + "foreach": "^2.0.5", + "function.prototype.name": "^1.1.1", + "has-symbols": "^1.0.0", + "object-inspect": "^1.6.0", + "object-is": "^1.0.1", + "replace": "^1.1.1", + "semver": "^6.3.0", + "tape": "^4.11.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "homepage": "https://github.com/ljharb/es-to-primitive#readme", + "keywords": [ + "primitive", + "abstract", + "ecmascript", + "es5", + "es6", + "es2015", + "toPrimitive", + "coerce", + "type", + "object", + "string", + "number", + "boolean", + "symbol", + "null", + "undefined" + ], + "license": "MIT", + "main": "index.js", + "name": "es-to-primitive", + "repository": { + "type": "git", + "url": "git://github.com/ljharb/es-to-primitive.git" + }, + "scripts": { + "coverage": "covert test/*.js", + "coverage-quiet": "covert test/*.js --quiet", + "lint": "eslint .", + "posttest": "npx aud", + "pretest": "npm run --silent lint", + "test": "npm run --silent tests-only", + "tests-only": "node --es-staging test" + }, + "testling": { + "files": "test", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "version": "1.2.1" +} diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/test/es2015.js b/tic-tac-toe-app/node_modules/es-to-primitive/test/es2015.js new file mode 100644 index 0000000..80f4083 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/test/es2015.js @@ -0,0 +1,151 @@ +'use strict'; + +var test = require('tape'); +var toPrimitive = require('../es2015'); +var is = require('object-is'); +var forEach = require('foreach'); +var functionName = require('function.prototype.name'); +var debug = require('object-inspect'); + +var hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol'; +var hasSymbolToPrimitive = hasSymbols && typeof Symbol.toPrimitive === 'symbol'; + +test('function properties', function (t) { + t.equal(toPrimitive.length, 1, 'length is 1'); + t.equal(functionName(toPrimitive), 'ToPrimitive', 'name is ToPrimitive'); + + t.end(); +}); + +var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc']; + +test('primitives', function (t) { + forEach(primitives, function (i) { + t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value'); + t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value'); + t.ok(is(toPrimitive(i, Number), i), 'toPrimitive(' + debug(i) + ', Number) returns the same value'); + }); + t.end(); +}); + +test('Symbols', { skip: !hasSymbols }, function (t) { + var symbols = [ + Symbol('foo'), + Symbol.iterator, + Symbol['for']('foo') // eslint-disable-line no-restricted-properties + ]; + forEach(symbols, function (sym) { + t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value'); + t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value'); + t.equal(toPrimitive(sym, Number), sym, 'toPrimitive(' + debug(sym) + ', Number) returns the same value'); + }); + + var primitiveSym = Symbol('primitiveSym'); + var objectSym = Object(primitiveSym); + t.equal(toPrimitive(objectSym), primitiveSym, 'toPrimitive(' + debug(objectSym) + ') returns ' + debug(primitiveSym)); + t.equal(toPrimitive(objectSym, String), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', String) returns ' + debug(primitiveSym)); + t.equal(toPrimitive(objectSym, Number), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', Number) returns ' + debug(primitiveSym)); + t.end(); +}); + +test('Arrays', function (t) { + var arrays = [[], ['a', 'b'], [1, 2]]; + forEach(arrays, function (arr) { + t.equal(toPrimitive(arr), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array'); + t.equal(toPrimitive(arr, String), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array'); + t.equal(toPrimitive(arr, Number), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array'); + }); + t.end(); +}); + +test('Dates', function (t) { + var dates = [new Date(), new Date(0), new Date(NaN)]; + forEach(dates, function (date) { + t.equal(toPrimitive(date), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date'); + t.equal(toPrimitive(date, String), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date'); + t.ok(is(toPrimitive(date, Number), Number(date)), 'toPrimitive(' + debug(date) + ') returns the number version of the date'); + }); + t.end(); +}); + +var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } }; +var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } }; +var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } }; +var coercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return 42; } +}; +var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } }; +var uncoercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return function toStrFn() {}; } +}; + +test('Objects', function (t) { + t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf'); + t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf'); + t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString'); + + t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString'); + t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString'); + t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString'); + + t.equal(toPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString'); + t.equal(toPrimitive({}, Number), '[object Object]', '{} with hint Number coerces to Object#toString'); + t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString'); + + t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString'); + t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString'); + t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString'); + + t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf'); + t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf'); + t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf'); + + t.test('Symbol.toPrimitive', { skip: !hasSymbolToPrimitive }, function (st) { + var overriddenObject = { toString: st.fail, valueOf: st.fail }; + overriddenObject[Symbol.toPrimitive] = function (hint) { return String(hint); }; + + st.equal(toPrimitive(overriddenObject), 'default', 'object with Symbol.toPrimitive + no hint invokes that'); + st.equal(toPrimitive(overriddenObject, Number), 'number', 'object with Symbol.toPrimitive + hint Number invokes that'); + st.equal(toPrimitive(overriddenObject, String), 'string', 'object with Symbol.toPrimitive + hint String invokes that'); + + var nullToPrimitive = { toString: coercibleObject.toString, valueOf: coercibleObject.valueOf }; + nullToPrimitive[Symbol.toPrimitive] = null; + st.equal(toPrimitive(nullToPrimitive), toPrimitive(coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it'); + st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it'); + st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it'); + + st.test('exceptions', function (sst) { + var nonFunctionToPrimitive = { toString: sst.fail, valueOf: sst.fail }; + nonFunctionToPrimitive[Symbol.toPrimitive] = {}; + sst['throws'](toPrimitive.bind(null, nonFunctionToPrimitive), TypeError, 'Symbol.toPrimitive returning a non-function throws'); + + var uncoercibleToPrimitive = { toString: sst.fail, valueOf: sst.fail }; + uncoercibleToPrimitive[Symbol.toPrimitive] = function (hint) { + return { toString: function () { return hint; } }; + }; + sst['throws'](toPrimitive.bind(null, uncoercibleToPrimitive), TypeError, 'Symbol.toPrimitive returning an object throws'); + + var throwingToPrimitive = { toString: sst.fail, valueOf: sst.fail }; + throwingToPrimitive[Symbol.toPrimitive] = function (hint) { throw new RangeError(hint); }; + sst['throws'](toPrimitive.bind(null, throwingToPrimitive), RangeError, 'Symbol.toPrimitive throwing throws'); + + sst.end(); + }); + + st.end(); + }); + + t.test('exceptions', function (st) { + st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError'); + + st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError'); + st.end(); + }); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/test/es5.js b/tic-tac-toe-app/node_modules/es-to-primitive/test/es5.js new file mode 100644 index 0000000..79444b0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/test/es5.js @@ -0,0 +1,118 @@ +'use strict'; + +var test = require('tape'); +var toPrimitive = require('../es5'); +var is = require('object-is'); +var forEach = require('foreach'); +var functionName = require('function.prototype.name'); +var debug = require('object-inspect'); +var hasSymbols = require('has-symbols')(); + +test('function properties', function (t) { + t.equal(toPrimitive.length, 1, 'length is 1'); + t.equal(functionName(toPrimitive), 'ToPrimitive', 'name is ToPrimitive'); + + t.end(); +}); + +var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc']; + +test('primitives', function (t) { + forEach(primitives, function (i) { + t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value'); + t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value'); + t.ok(is(toPrimitive(i, Number), i), 'toPrimitive(' + debug(i) + ', Number) returns the same value'); + }); + t.end(); +}); + +test('Symbols', { skip: !hasSymbols }, function (t) { + var symbols = [ + Symbol('foo'), + Symbol.iterator, + Symbol['for']('foo') // eslint-disable-line no-restricted-properties + ]; + forEach(symbols, function (sym) { + t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value'); + t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value'); + t.equal(toPrimitive(sym, Number), sym, 'toPrimitive(' + debug(sym) + ', Number) returns the same value'); + }); + + var primitiveSym = Symbol('primitiveSym'); + var stringSym = Symbol.prototype.toString.call(primitiveSym); + var objectSym = Object(primitiveSym); + t.equal(toPrimitive(objectSym), primitiveSym, 'toPrimitive(' + debug(objectSym) + ') returns ' + debug(primitiveSym)); + + // This is different from ES2015, as the ES5 algorithm doesn't account for the existence of Symbols: + t.equal(toPrimitive(objectSym, String), stringSym, 'toPrimitive(' + debug(objectSym) + ', String) returns ' + debug(stringSym)); + t.equal(toPrimitive(objectSym, Number), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', Number) returns ' + debug(primitiveSym)); + t.end(); +}); + +test('Arrays', function (t) { + var arrays = [[], ['a', 'b'], [1, 2]]; + forEach(arrays, function (arr) { + t.ok(is(toPrimitive(arr), arr.toString()), 'toPrimitive(' + debug(arr) + ') returns toString of the array'); + t.equal(toPrimitive(arr, String), arr.toString(), 'toPrimitive(' + debug(arr) + ') returns toString of the array'); + t.ok(is(toPrimitive(arr, Number), arr.toString()), 'toPrimitive(' + debug(arr) + ') returns toString of the array'); + }); + t.end(); +}); + +test('Dates', function (t) { + var dates = [new Date(), new Date(0), new Date(NaN)]; + forEach(dates, function (date) { + t.equal(toPrimitive(date), date.toString(), 'toPrimitive(' + debug(date) + ') returns toString of the date'); + t.equal(toPrimitive(date, String), date.toString(), 'toPrimitive(' + debug(date) + ') returns toString of the date'); + t.ok(is(toPrimitive(date, Number), date.valueOf()), 'toPrimitive(' + debug(date) + ') returns valueOf of the date'); + }); + t.end(); +}); + +var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } }; +var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } }; +var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } }; +var coercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return 42; } +}; +var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } }; +var uncoercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return function toStrFn() {}; } +}; + +test('Objects', function (t) { + t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf'); + t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to toString'); + t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf'); + + t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to toString'); + t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to toString'); + t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to toString'); + + t.ok(is(toPrimitive({}), '[object Object]'), '{} with no hint coerces to Object#toString'); + t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString'); + t.ok(is(toPrimitive({}, Number), '[object Object]'), '{} with hint Number coerces to Object#toString'); + + t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns toString'); + t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns toString'); + t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns toString'); + + t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf'); + t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns valueOf'); + t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf'); + + t.test('exceptions', function (st) { + st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError'); + + st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError'); + st.end(); + }); + + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/test/es6.js b/tic-tac-toe-app/node_modules/es-to-primitive/test/es6.js new file mode 100644 index 0000000..16ea0e8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/test/es6.js @@ -0,0 +1,151 @@ +'use strict'; + +var test = require('tape'); +var toPrimitive = require('../es6'); +var is = require('object-is'); +var forEach = require('foreach'); +var functionName = require('function.prototype.name'); +var debug = require('object-inspect'); + +var hasSymbols = require('has-symbols')(); +var hasSymbolToPrimitive = hasSymbols && typeof Symbol.toPrimitive === 'symbol'; + +test('function properties', function (t) { + t.equal(toPrimitive.length, 1, 'length is 1'); + t.equal(functionName(toPrimitive), 'ToPrimitive', 'name is ToPrimitive'); + + t.end(); +}); + +var primitives = [null, undefined, true, false, 0, -0, 42, NaN, Infinity, -Infinity, '', 'abc']; + +test('primitives', function (t) { + forEach(primitives, function (i) { + t.ok(is(toPrimitive(i), i), 'toPrimitive(' + debug(i) + ') returns the same value'); + t.ok(is(toPrimitive(i, String), i), 'toPrimitive(' + debug(i) + ', String) returns the same value'); + t.ok(is(toPrimitive(i, Number), i), 'toPrimitive(' + debug(i) + ', Number) returns the same value'); + }); + t.end(); +}); + +test('Symbols', { skip: !hasSymbols }, function (t) { + var symbols = [ + Symbol('foo'), + Symbol.iterator, + Symbol['for']('foo') // eslint-disable-line no-restricted-properties + ]; + forEach(symbols, function (sym) { + t.equal(toPrimitive(sym), sym, 'toPrimitive(' + debug(sym) + ') returns the same value'); + t.equal(toPrimitive(sym, String), sym, 'toPrimitive(' + debug(sym) + ', String) returns the same value'); + t.equal(toPrimitive(sym, Number), sym, 'toPrimitive(' + debug(sym) + ', Number) returns the same value'); + }); + + var primitiveSym = Symbol('primitiveSym'); + var objectSym = Object(primitiveSym); + t.equal(toPrimitive(objectSym), primitiveSym, 'toPrimitive(' + debug(objectSym) + ') returns ' + debug(primitiveSym)); + t.equal(toPrimitive(objectSym, String), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', String) returns ' + debug(primitiveSym)); + t.equal(toPrimitive(objectSym, Number), primitiveSym, 'toPrimitive(' + debug(objectSym) + ', Number) returns ' + debug(primitiveSym)); + t.end(); +}); + +test('Arrays', function (t) { + var arrays = [[], ['a', 'b'], [1, 2]]; + forEach(arrays, function (arr) { + t.equal(toPrimitive(arr), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array'); + t.equal(toPrimitive(arr, String), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array'); + t.equal(toPrimitive(arr, Number), String(arr), 'toPrimitive(' + debug(arr) + ') returns the string version of the array'); + }); + t.end(); +}); + +test('Dates', function (t) { + var dates = [new Date(), new Date(0), new Date(NaN)]; + forEach(dates, function (date) { + t.equal(toPrimitive(date), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date'); + t.equal(toPrimitive(date, String), String(date), 'toPrimitive(' + debug(date) + ') returns the string version of the date'); + t.ok(is(toPrimitive(date, Number), Number(date)), 'toPrimitive(' + debug(date) + ') returns the number version of the date'); + }); + t.end(); +}); + +var coercibleObject = { valueOf: function () { return 3; }, toString: function () { return 42; } }; +var valueOfOnlyObject = { valueOf: function () { return 4; }, toString: function () { return {}; } }; +var toStringOnlyObject = { valueOf: function () { return {}; }, toString: function () { return 7; } }; +var coercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return 42; } +}; +var uncoercibleObject = { valueOf: function () { return {}; }, toString: function () { return {}; } }; +var uncoercibleFnObject = { + valueOf: function () { return function valueOfFn() {}; }, + toString: function () { return function toStrFn() {}; } +}; + +test('Objects', function (t) { + t.equal(toPrimitive(coercibleObject), coercibleObject.valueOf(), 'coercibleObject with no hint coerces to valueOf'); + t.equal(toPrimitive(coercibleObject, Number), coercibleObject.valueOf(), 'coercibleObject with hint Number coerces to valueOf'); + t.equal(toPrimitive(coercibleObject, String), coercibleObject.toString(), 'coercibleObject with hint String coerces to non-stringified toString'); + + t.equal(toPrimitive(coercibleFnObject), coercibleFnObject.toString(), 'coercibleFnObject coerces to non-stringified toString'); + t.equal(toPrimitive(coercibleFnObject, Number), coercibleFnObject.toString(), 'coercibleFnObject with hint Number coerces to non-stringified toString'); + t.equal(toPrimitive(coercibleFnObject, String), coercibleFnObject.toString(), 'coercibleFnObject with hint String coerces to non-stringified toString'); + + t.equal(toPrimitive({}), '[object Object]', '{} with no hint coerces to Object#toString'); + t.equal(toPrimitive({}, Number), '[object Object]', '{} with hint Number coerces to Object#toString'); + t.equal(toPrimitive({}, String), '[object Object]', '{} with hint String coerces to Object#toString'); + + t.equal(toPrimitive(toStringOnlyObject), toStringOnlyObject.toString(), 'toStringOnlyObject returns non-stringified toString'); + t.equal(toPrimitive(toStringOnlyObject, Number), toStringOnlyObject.toString(), 'toStringOnlyObject with hint Number returns non-stringified toString'); + t.equal(toPrimitive(toStringOnlyObject, String), toStringOnlyObject.toString(), 'toStringOnlyObject with hint String returns non-stringified toString'); + + t.equal(toPrimitive(valueOfOnlyObject), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject returns valueOf'); + t.equal(toPrimitive(valueOfOnlyObject, Number), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint Number returns valueOf'); + t.equal(toPrimitive(valueOfOnlyObject, String), valueOfOnlyObject.valueOf(), 'valueOfOnlyObject with hint String returns non-stringified valueOf'); + + t.test('Symbol.toPrimitive', { skip: !hasSymbolToPrimitive }, function (st) { + var overriddenObject = { toString: st.fail, valueOf: st.fail }; + overriddenObject[Symbol.toPrimitive] = function (hint) { return String(hint); }; + + st.equal(toPrimitive(overriddenObject), 'default', 'object with Symbol.toPrimitive + no hint invokes that'); + st.equal(toPrimitive(overriddenObject, Number), 'number', 'object with Symbol.toPrimitive + hint Number invokes that'); + st.equal(toPrimitive(overriddenObject, String), 'string', 'object with Symbol.toPrimitive + hint String invokes that'); + + var nullToPrimitive = { toString: coercibleObject.toString, valueOf: coercibleObject.valueOf }; + nullToPrimitive[Symbol.toPrimitive] = null; + st.equal(toPrimitive(nullToPrimitive), toPrimitive(coercibleObject), 'object with no hint + null Symbol.toPrimitive ignores it'); + st.equal(toPrimitive(nullToPrimitive, Number), toPrimitive(coercibleObject, Number), 'object with hint Number + null Symbol.toPrimitive ignores it'); + st.equal(toPrimitive(nullToPrimitive, String), toPrimitive(coercibleObject, String), 'object with hint String + null Symbol.toPrimitive ignores it'); + + st.test('exceptions', function (sst) { + var nonFunctionToPrimitive = { toString: sst.fail, valueOf: sst.fail }; + nonFunctionToPrimitive[Symbol.toPrimitive] = {}; + sst['throws'](toPrimitive.bind(null, nonFunctionToPrimitive), TypeError, 'Symbol.toPrimitive returning a non-function throws'); + + var uncoercibleToPrimitive = { toString: sst.fail, valueOf: sst.fail }; + uncoercibleToPrimitive[Symbol.toPrimitive] = function (hint) { + return { toString: function () { return hint; } }; + }; + sst['throws'](toPrimitive.bind(null, uncoercibleToPrimitive), TypeError, 'Symbol.toPrimitive returning an object throws'); + + var throwingToPrimitive = { toString: sst.fail, valueOf: sst.fail }; + throwingToPrimitive[Symbol.toPrimitive] = function (hint) { throw new RangeError(hint); }; + sst['throws'](toPrimitive.bind(null, throwingToPrimitive), RangeError, 'Symbol.toPrimitive throwing throws'); + + sst.end(); + }); + + st.end(); + }); + + t.test('exceptions', function (st) { + st['throws'](toPrimitive.bind(null, uncoercibleObject), TypeError, 'uncoercibleObject throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleObject, Number), TypeError, 'uncoercibleObject with hint Number throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleObject, String), TypeError, 'uncoercibleObject with hint String throws a TypeError'); + + st['throws'](toPrimitive.bind(null, uncoercibleFnObject), TypeError, 'uncoercibleFnObject throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleFnObject, Number), TypeError, 'uncoercibleFnObject with hint Number throws a TypeError'); + st['throws'](toPrimitive.bind(null, uncoercibleFnObject, String), TypeError, 'uncoercibleFnObject with hint String throws a TypeError'); + st.end(); + }); + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/es-to-primitive/test/index.js b/tic-tac-toe-app/node_modules/es-to-primitive/test/index.js new file mode 100644 index 0000000..ad71f39 --- /dev/null +++ b/tic-tac-toe-app/node_modules/es-to-primitive/test/index.js @@ -0,0 +1,20 @@ +'use strict'; + +var toPrimitive = require('../'); +var ES5 = require('../es5'); +var ES6 = require('../es6'); +var ES2015 = require('../es2015'); + +var test = require('tape'); + +test('default export', function (t) { + t.equal(toPrimitive, ES2015, 'default export is ES2015'); + t.equal(toPrimitive.ES5, ES5, 'ES5 property has ES5 method'); + t.equal(toPrimitive.ES6, ES6, 'ES6 property has ES6 method'); + t.equal(toPrimitive.ES2015, ES2015, 'ES2015 property has ES2015 method'); + t.end(); +}); + +require('./es5'); +require('./es6'); +require('./es2015'); diff --git a/tic-tac-toe-app/node_modules/escape-string-regexp/index.js b/tic-tac-toe-app/node_modules/escape-string-regexp/index.js new file mode 100644 index 0000000..7834bf9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/escape-string-regexp/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; + +module.exports = function (str) { + if (typeof str !== 'string') { + throw new TypeError('Expected a string'); + } + + return str.replace(matchOperatorsRe, '\\$&'); +}; diff --git a/tic-tac-toe-app/node_modules/escape-string-regexp/license b/tic-tac-toe-app/node_modules/escape-string-regexp/license new file mode 100644 index 0000000..654d0bf --- /dev/null +++ b/tic-tac-toe-app/node_modules/escape-string-regexp/license @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/escape-string-regexp/package.json b/tic-tac-toe-app/node_modules/escape-string-regexp/package.json new file mode 100644 index 0000000..4d4c527 --- /dev/null +++ b/tic-tac-toe-app/node_modules/escape-string-regexp/package.json @@ -0,0 +1,82 @@ +{ + "_from": "escape-string-regexp@^1.0.5", + "_id": "escape-string-regexp@1.0.5", + "_inBundle": false, + "_integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "_location": "/escape-string-regexp", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "escape-string-regexp@^1.0.5", + "name": "escape-string-regexp", + "escapedName": "escape-string-regexp", + "rawSpec": "^1.0.5", + "saveSpec": null, + "fetchSpec": "^1.0.5" + }, + "_requiredBy": [ + "/chalk", + "/figures" + ], + "_resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "_shasum": "1b61c0562190a8dff6ae3bb2cf0200ca130b86d4", + "_spec": "escape-string-regexp@^1.0.5", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/chalk", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/escape-string-regexp/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "Escape RegExp special characters", + "devDependencies": { + "ava": "*", + "xo": "*" + }, + "engines": { + "node": ">=0.8.0" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/sindresorhus/escape-string-regexp#readme", + "keywords": [ + "escape", + "regex", + "regexp", + "re", + "regular", + "expression", + "string", + "str", + "special", + "characters" + ], + "license": "MIT", + "maintainers": [ + { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + { + "name": "Joshua Boy Nicolai Appelman", + "email": "joshua@jbna.nl", + "url": "jbna.nl" + } + ], + "name": "escape-string-regexp", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/escape-string-regexp.git" + }, + "scripts": { + "test": "xo && ava" + }, + "version": "1.0.5" +} diff --git a/tic-tac-toe-app/node_modules/escape-string-regexp/readme.md b/tic-tac-toe-app/node_modules/escape-string-regexp/readme.md new file mode 100644 index 0000000..87ac82d --- /dev/null +++ b/tic-tac-toe-app/node_modules/escape-string-regexp/readme.md @@ -0,0 +1,27 @@ +# escape-string-regexp [![Build Status](https://travis-ci.org/sindresorhus/escape-string-regexp.svg?branch=master)](https://travis-ci.org/sindresorhus/escape-string-regexp) + +> Escape RegExp special characters + + +## Install + +``` +$ npm install --save escape-string-regexp +``` + + +## Usage + +```js +const escapeStringRegexp = require('escape-string-regexp'); + +const escapedString = escapeStringRegexp('how much $ for a unicorn?'); +//=> 'how much \$ for a unicorn\?' + +new RegExp(escapedString); +``` + + +## License + +MIT © [Sindre Sorhus](http://sindresorhus.com) diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.babelrc b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.babelrc new file mode 100644 index 0000000..e0aceaa --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["airbnb"] +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.eslintrc b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.eslintrc new file mode 100644 index 0000000..ab2c306 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "./index.js", + "rules": { + // disable requiring trailing commas because it might be nice to revert to + // being JSON at some point, and I don't want to make big changes now. + "comma-dangle": 0, + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/CHANGELOG.md b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/CHANGELOG.md new file mode 100644 index 0000000..3d31c24 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/CHANGELOG.md @@ -0,0 +1,337 @@ +14.1.0 / 2020-03-12 +================== + - [minor] add new disabled rules, update eslint + - [minor] enable `import/no-useless-path-segments` for commonjs (#2113) + - [fix] `whitespace`: only set erroring rules to "warn" + - Fix indentation with JSX Fragments (#2157) + - [patch] `import/no-extraneous-dependencies`: Support karma config files (#2121) + - [readme] normalize multiline word according to merriam-webster (#2138) + - [deps] update `eslint`, `eslint-plugin-import`, `eslint-plugin-react`, `object.entries`, `confusing-browser-globals` + - [dev deps] update `@babel/runtime`, `babel-preset-airbnb`, `safe-publish-latest`, `tape` + - [tests] re-enable eslint rule `prefer-destructuring` internally (#2110) + +14.0.0 / 2019-08-09 +================== + - [breaking] `no-self-assign`: enable `props` option + - [breaking] enable `no-useless-catch` + - [breaking] enable `max-classes-per-file` + - [breaking] enable `no-misleading-character-class` + - [breaking] enable `no-async-promise-executor` + - [breaking] enable `prefer-object-spread` + - [breaking] `func-name-matching`: enable `considerPropertyDescriptor` option + - [breaking] `padded-blocks`: enable `allowSingleLineBlocks` option (#1255) + - [breaking] `no-multiple-empty-lines`: Restrict empty lines at beginning of file (#2042) + - [breaking] Set 'strict' to 'never' (#1962) + - [breaking] legacy: Enable 'strict' (#1962) + - [breaking] Simplifies `no-mixed-operators` (#1864) + - [breaking] Require parens for arrow function args (#1863) + - [breaking] add eslint v6, drop eslint v4 + - [patch] `camelcase`: enable ignoreDestructuring + - [patch] Add markers to spaced-comment block for Flow types (#1966) + - [patch] Do not prefer destructuring for object assignment expression (#1583) + - [deps] update `confusing-browser-globals`, `eslint-plugin-import`, `tape`, `babel-preset-airbnb` + - [dev deps] update babel-related deps to latest + - [dev deps] update `eslint-find-rules`, `eslint-plugin-import` + - [tests] only run tests in non-lint per-package travis job + - [tests] use `eclint` instead of `editorconfig-tools` + +13.2.0 / 2019-07-01 +================== + - [minor] Enforce dangling underscores in method names (#1907) + - [fix] disable `no-var` in legacy entry point + - [patch] Ignore property modifications of `staticContext` params (#2029) + - [patch] `no-extraneous-dependencies`: Add jest.setup.js to devDeps (#1998) + - [meta] add disabled `prefer-named-capture-group` rule + - [meta] add disabled `no-useless-catch` config + - [deps] Switch to confusing-browser-globals (#1961) + - [deps] update `object.entries`, `eslint-plugin-import`, `eslint-plugin-jsx-a11y`, `eslint-plugin-react`, `tape` + - [docs] correct JavaScript capitalization (#2046) + - [readme] Improve eslint config setup instructions for yarn (#2001) + - [docs] fix docs for whitespace config (#1914, #1871) + +13.1.0 / 2018-08-13 +================== + - [new] add eslint v5 support (#1834) + - [deps] update `eslint-plugin-import`, `eslint`, `babel-preset-airbnb`, `safe-publish-latest`, `eslint-find-rules` + - [docs] fix typo in readme (#1855) + - [new] update base ecmaVersion to 2018; remove deprecated experimentalObjectRestSpread option + +13.0.0 / 2018-06-21 +================== + - [breaking] order of import statements is ignored for unassigned imports (#1782) + - [breaking] enable `import/no-cycle`: warn on cyclical dependencies (#1779) + - [breaking] Change import/no-self-import from "off" to "error" (#1770) + - [breaking] Update `object-curly-newline` to match eslint 4.18.0 (#1761) + - [breaking] enable `no-useless-path-segments` (#1743) + - [breaking] Prevent line breaks before and after `=` (#1710) + - [breaking] Add .mjs extension support (#1634) + - [breaking] enable `implicit-arrow-linebreak` + - [breaking] Enables `nonblock-statement-body-position` rule and adds link to guide (#1618) + - [breaking] `no-mixed-operators`: only warn on `**` and `%` mixed with arithmetic operators; removes violation against mixing common math operators. (#1611) + - [breaking] `import/named`: enable + - [breaking] `lines-between-class-members`: set to “always” + - [breaking] `no-else-return`: disallow else-if (#1595) + - [breaking] Enables eslint rule for operator-linebreak + - [new] Adds config entry point with only whitespace rules enabled (#1749, #1751) + - [minor] only allow one newline at the end (#1794) + - [patch] Adjust imports for vue-cli (#1809) + - [patch] Allow devDependencies for `foo_spec.js` naming style (#1732) + - [patch] `function-paren-newline`: change to "consistent" + - [patch] avoid `__mocks__` `no-extraneous-dependencies` check (#1772) + - [patch] Include 'accumulator' exception for `no-param-reassign` (#1768) + - [patch] Set import/extensions to ignorePackages (#1652) + - [patch] properly ignore indentation on jsx + - [patch] `array-callback-return`: enable `allowImplicit` option (#1668) + - [deps] update `eslint`, `eslint-plugin-import` + - [dev deps] update `babel-preset-airbnb`, `tape`, `eslint-find-rules` + - [meta] add ES2015-2018 in npm package keywords (#1587) + - [meta] Add licenses to sub packages (#1746) + - [docs] add `npx` shortcut (#1694) + - [docs] Use HTTPS for links to ESLint documentation (#1628) + - [tests] ensure all entry points parse + +12.1.0 / 2017-10-16 +================== + - [deps] update `eslint` to `v4.9` + +12.0.2 / 2017-10-05 +================== + - [deps] update `eslint` + +12.0.1 / 2017-09-27 +================== + - [fix] ensure all JSX elements are ignored by `indent` (#1569) + - [deps] update `eslint` + +12.0.0 / 2017-09-02 +================== + - [deps] [breaking] require `eslint` v4 + - enable `function-paren-newline`, `for-direction`, `getter-return`, `no-compare-neg-zero`, `semi-style`, `object-curly-newline`, `no-buffer-constructor`, `no-restricted-globals`, `switch-colon-spacing`, `template-tag-spacing`, `prefer-promise-reject-errors`, `prefer-destructuring` + - improve `indent`, `no-multi-spaces`, `no-trailing-spaces`, `no-underscore-dangle` + - [breaking] move `comma-dangle` to Stylistic Issues (#1514) + - [breaking] Rules prohibiting global isNaN, isFinite (#1477) + - [patch] also disallow padding in classes and switches (#1403) + - [patch] support Protractor config files in import/no-extraneous-dependencies (#1543) + +11.3.2 / 2017-08-22 +================== + - [patch] Add jest.config.js to import/no-extraneous-dependencies devDeps (#1522) + - [patch] Improve Gruntfile glob pattern (#1503) + - [deps] update `eslint` v4, `tape` + - [docs] Specify yarn-specific install instructions (#1511) + +11.3.1 / 2017-07-24 +================== + - [fix] `legacy`: remove top-level `ecmaFeatures` + +11.3.0 / 2017-07-23 +================== + - [deps] allow eslint v3 or v4 (#1447) + - [deps] update `eslint-plugin-import` + - [minor] Balanced spacing for inline block comments (#1440) + - [minor] `no-return-assign`: strengthen linting against returning assignments + - [patch] Allow jsx extensions for test files (#1427) + - [patch] `no-restricted-globals`: add confusing globals; leave disabled for now (#1420) + - [patch] Support Protractor config files in import/no-extraneous-dependencies (#1456) + - [docs] Remove TODO in prefer-reflect as it's deprecated (#1452) + - [docs] add yarn instructions (#1463, #1464) + +11.2.0 / 2017-05-14 +================== + - [minor] Disallow unused global variables + +11.1.3 / 2017-04-03 +================== + - [patch] add error messages to `no-restricted-syntax` (#1353) + - [deps] update `eslint` + +11.1.2 / 2017-03-25 +================== + - [patch] `no-param-reassign`: add ignorePropertyModificationsFor (#1325) + - [deps] update `eslint` + +11.1.1 / 2017-03-03 +================== + - [deps] update `eslint` + - [patch] enable `ignoreRestSiblings` in `no-unused-vars` + +11.1.0 / 2017-01-08 +================== + - [minor] enable `no-multi-assign` + - [deps] update `eslint`, `babel-preset-airbnb` + - Update a deprecated option (`eqeqeq`) (#1244) + +11.0.1 / 2017-01-08 +================== + - [deps] update `eslint` + - [docs] add note about `install-peerdeps` (#1234) + - [docs] Updated instructions to support non-bash users (#1214) + +11.0.0 / 2016-12-11 +================== + - [breaking] enable `no-await-in-loop` + - [patch] disable `no-duplicate-imports` rule (#1188, #1195, #1054) + - [patch] `import/no-extraneous-dependencies`: add some comments to ignore patterns + - [patch] add `import/no-extraneous-dependencies` ignore patterns for test files (#1174) + - [patch] `import/no-extraneous-dependencies`: added ignore patterns for config files (#1168) + - [deps] update `eslint`, `eslint-plugin-import`, `tape` + +10.0.1 / 2016-11-07 +================== + - [fix] legacy config should not require `**` + +10.0.0 / 2016-11-06 +================== + - [breaking] prefer `**` over `Math.pow` + - [breaking] `comma-dangle`: require trailing commas for functions + - [breaking] enable `no-useless-return` + - [breaking] tighten up `indent` + - [breaking] tighten up `spaced-comment` + - [breaking] enable `import/no-named-default` + - [patch] loosen `max-len` with `ignoreRegExpLiterals` option + - [patch] loosen `no-extraneous-dependencies` for test files (#959, #1089) + - [deps] update `eslint`, `eslint-plugin-import` + - [dev deps] update `eslint-find-rules` + - [Tests] on `node` `v7` + +9.0.0 / 2016-10-16 +================== + - [breaking] Add `ForOfStatement` to `no-restricted-syntax` (#1122, #1134) + - [breaking] enable `import/no-webpack-loader-syntax` (#1123) + - [breaking] [deps] update `eslint` to `v3.8.0` (#1132) + - [breaking] [deps] update `eslint-plugin-import` to v2 (#1101) + - [patch] `new-cap`: add immutable.js exceptions + - [docs] ensure latest version of config is installed + - [dev deps] update `babel-preset-airbnb`, `eslint`, `eslint-find-rules`, `tape`, `safe-publish-latest` + +8.0.0 / 2016-09-24 +================== + - [breaking] enable rules: `no-restricted-properties`, `prefer-numeric-literals`, `lines-around-directive`, `import/extensions`, `import/no-absolute-path`, `import/no-dynamic-require` + +7.2.0 / 2016-09-23 +================== + - [new] set `ecmaVersion` to 2017; enable object rest/spread; update `babel-preset-airbnb` + - [patch] fix category of `no-restricted-properties` + - [deps] update `eslint`, `eslint-plugin-import`, `eslint-find-rules`, `safe-publish-latest` + +7.1.0 / 2016-09-11 +================== + - [minor] enable `arrow-parens` rule + +7.0.1 / 2016-09-10 +================== + - [patch] loosen `max-len` by ignoring strings + - [deps] update to `eslint` `v3.5.0` + +7.0.0 / 2016-09-06 +================== + - [breaking] Add no-plusplus in style.js and added explanation in README (#1012) + +6.0.0 / 2016-09-06 +================== + - [breaking] `valid-typeof`: enable `requireStringLiterals` option + - [breaking] enable `class-methods-use-this` + - [breaking] enable `symbol-description` + - [breaking] enable `no-bitwise` + - [breaking] enable `no-tabs` + - [breaking] enable `func-call-spacing` + - [breaking] enable `no-template-curly-in-string` + - [patch] remove redundant `DebuggerStatement` from `no-restricted-syntax` (#1031) + - [deps] update `eslint`, `eslint-find-rules`, `eslint-plugin-import` + - Update `ecmaVersion` to `2016` + +5.0.3 / 2016-08-21 +================== + - [fix] correct `import/extensions` list (#1013) + - [refactor] Changed ESLint rule configs to use 'off', 'warn', and 'error' instead of numbers for better readability (#946) + - [deps] update `eslint`, `eslint-plugin-react` + +5.0.2 / 2016-08-12 +================== + - [deps] update `eslint`, `eslint-find-rules`, `eslint-plugin-import` + - [tests] add `safe-publish-latest` to `prepublish` + +5.0.1 / 2016-07-29 +================== + - [patch] `no-unused-expressions`: flesh out options + - [deps] update `eslint` to `v3.2`, `eslint-plugin-import` to `v1.12` + - [tests] improve prepublish script + +5.0.0 / 2016-07-24 +================== + - [breaking] enable `import/newline-after-import` + - [breaking] enable overlooked rules: `linebreak-style`, `new-parens`, `no-continue`, `no-lonely-if`, `operator-assignment`, `space-unary-ops`, `dot-location`, `no-extra-boolean-cast`, `no-this-before-super`, `require-yield`, `no-path-concat`, `no-label-var`, `no-void`, `constructor-super`, `prefer-spread`, `no-new-require`, `no-undef-init`, `no-unexpected-multiline` + - [deps] update `eslint`, `eslint-find-rules`, `eslint-plugin-import`, `babel-tape-runner`; add `babel-preset-airbnb` + - [patch] flesh out defaults: `jsx-quotes` + - [docs] update the peer dep install command to dynamically look up the right version numbers when installing peer deps + - [tests] fix prepublish scripts + +4.0.2 / 2016-07-14 +================== + - [fix] repair accidental comma-dangle change + +4.0.1 / 2016-07-14 (unpublished) +================== + - [fix] Prevent trailing commas in the legacy config (#950) + - [deps] update `eslint-plugin-import` + +4.0.0 / 2016-07-02 +================== + - [breaking] [deps] update `eslint` to v3; drop support for < node 4 + - [breaking] enable `rest-spread-spacing` rule + - [breaking] enable `no-mixed-operators` rule + - [breaking] enable `import` rules: `no-named-as-default`, `no-named-as-default-member`, `no-extraneous-dependencies` + - [breaking] enable `object-property-newline` rule + - [breaking] enable `no-prototype-builtins` rule + - [breaking] enable `no-useless-rename` rule + - [breaking] enable `unicode-bom` rule + - [breaking] Enforce proper generator star spacing (#887) + - [breaking] Enable imports/imports-first rule (#882) + - [breaking] re-order rules; put import rules in separate file (#881) + - [patch] `newline-per-chained-call`: bump the limit to 4 + - [patch] `object-shorthand`: do not warn when the concise form would have a string literal as a name + - [patch] Loosen `prefer-const` to not warn when the variable is “read” before being assigned to + - [refactor] fix quoting of rule properties (#885) + - [refactor] `quotes`: Use object option form rather than deprecated string form. + - [deps] update `eslint`, `eslint-plugin-import`, `eslint-find-rules`, `tape` + - [tests] Only run `eslint-find-rules` on prepublish, not in tests + +3.0.1 / 2016-05-08 +================== + - [patch] re-disable `no-extra-parens` (#869, #867) + +3.0.0 / 2016-05-07 +================== + - [breaking] enable `import/no-mutable-exports` + - [breaking] enable `no-class-assign` rule, to pair with `no-func-assign` + - [breaking] widen `no-extra-parens` to include everything, except `nestedBinaryExpressions` + - [breaking] Re-enabling `newline-per-chained-call` (#748) + - [minor] enable `import/no-amd` + - [patch] enable `import/no-duplicates` + - [deps] update `eslint`, `eslint-plugin-import`, `eslint-find-rules` + +2.0.0 / 2016-04-29 +================== + - [breaking] enable `no-unsafe-finally` rule + - [semver-minor] enable `no-useless-computed-key` rule + - [deps] update `eslint`, `eslint-plugin-import` + +1.0.4 / 2016-04-26 +================== + - [deps] update `eslint-find-rules`, `eslint-plugin-import` + +1.0.3 / 2016-04-21 +================== + - [patch: loosen rules] Allow empty class/object methods + +1.0.2 / 2016-04-20 +================== + - [patch: loosen rules] Allow `break` (#840) + +1.0.1 / 2016-04-19 +================== + - [patch: loosen rules] Allow `== null` (#542) + +1.0.0 / 2016-04-19 +================== + - Initial commmit; moved content over from `eslint-config-airbnb` package. diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/LICENSE.md b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/LICENSE.md new file mode 100644 index 0000000..69d80c0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012 Airbnb + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/README.md b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/README.md new file mode 100644 index 0000000..685e500 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/README.md @@ -0,0 +1,99 @@ +# eslint-config-airbnb-base + +[![npm version](https://badge.fury.io/js/eslint-config-airbnb-base.svg)](http://badge.fury.io/js/eslint-config-airbnb-base) + +This package provides Airbnb's base JS .eslintrc (without React plugins) as an extensible shared config. + +## Usage + +We export two ESLint configurations for your usage. + +### eslint-config-airbnb-base + +Our default export contains all of our ESLint rules, including ECMAScript 6+. It requires `eslint` and `eslint-plugin-import`. + +1. Install the correct versions of each package, which are listed by the command: + + ```sh + npm info "eslint-config-airbnb-base@latest" peerDependencies + ``` + + If using **npm 5+**, use this shortcut + + ```sh + npx install-peerdeps --dev eslint-config-airbnb-base + ``` + + If using **yarn**, you can also use the shortcut described above if you have npm 5+ installed on your machine, as the command will detect that you are using yarn and will act accordingly. + Otherwise, run `npm info "eslint-config-airbnb-base@latest" peerDependencies` to list the peer dependencies and versions, then run `yarn add --dev @` for each listed peer dependency. + + + If using **npm < 5**, Linux/OSX users can run + + ```sh + ( + export PKG=eslint-config-airbnb-base; + npm info "$PKG@latest" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG@latest" + ) + ``` + + Which produces and runs a command like: + + ```sh + npm install --save-dev eslint-config-airbnb-base eslint@^#.#.# eslint-plugin-import@^#.#.# + ``` + + If using **npm < 5**, Windows users can either install all the peer dependencies manually, or use the [install-peerdeps](https://github.com/nathanhleung/install-peerdeps) cli tool. + + ```sh + npm install -g install-peerdeps + install-peerdeps --dev eslint-config-airbnb-base + ``` + + The cli will produce and run a command like: + + ```sh + npm install --save-dev eslint-config-airbnb-base eslint@^#.#.# eslint-plugin-import@^#.#.# + ``` + +2. Add `"extends": "airbnb-base"` to your .eslintrc. + +### eslint-config-airbnb-base/legacy + +Lints ES5 and below. Requires `eslint` and `eslint-plugin-import`. + +1. Install the correct versions of each package, which are listed by the command: + + ```sh + npm info "eslint-config-airbnb-base@latest" peerDependencies + ``` + + Linux/OSX users can run + ```sh + ( + export PKG=eslint-config-airbnb-base; + npm info "$PKG" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG" + ) + ``` + + Which produces and runs a command like: + + ```sh + npm install --save-dev eslint-config-airbnb-base eslint@^3.0.1 eslint-plugin-import@^1.10.3 + ``` + +2. Add `"extends": "airbnb-base/legacy"` to your .eslintrc + +See [Airbnb's overarching ESLint config](https://npmjs.com/eslint-config-airbnb), [Airbnb's JavaScript styleguide](https://github.com/airbnb/javascript), and the [ESlint config docs](https://eslint.org/docs/user-guide/configuring#extending-configuration-files) for more information. + +### eslint-config-airbnb-base/whitespace + +This entry point only errors on whitespace rules and sets all other rules to warnings. View the list of whitespace rules [here](https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb-base/whitespace.js). + +## Improving this config + +Consider adding test cases if you're making complicated rules changes, like anything involving regexes. Perhaps in a distant future, we could use literate programming to structure our README as test cases for our .eslintrc? + +You can run tests with `npm test`. + +You can make sure this module lints with itself using `npm run lint`. diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/index.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/index.js new file mode 100644 index 0000000..825456b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/index.js @@ -0,0 +1,17 @@ +module.exports = { + extends: [ + './rules/best-practices', + './rules/errors', + './rules/node', + './rules/style', + './rules/variables', + './rules/es6', + './rules/imports', + './rules/strict', + ].map(require.resolve), + parserOptions: { + ecmaVersion: 2018, + sourceType: 'module', + }, + rules: {}, +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/legacy.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/legacy.js new file mode 100644 index 0000000..18576f8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/legacy.js @@ -0,0 +1,33 @@ +module.exports = { + extends: [ + './rules/best-practices', + './rules/errors', + './rules/node', + './rules/style', + './rules/variables' + ].map(require.resolve), + env: { + browser: true, + node: true, + amd: false, + mocha: false, + jasmine: false + }, + rules: { + 'comma-dangle': ['error', 'never'], + 'prefer-numeric-literals': 'off', + 'no-restricted-properties': ['error', { + object: 'arguments', + property: 'callee', + message: 'arguments.callee is deprecated', + }, { + property: '__defineGetter__', + message: 'Please use Object.defineProperty instead.', + }, { + property: '__defineSetter__', + message: 'Please use Object.defineProperty instead.', + }], + 'no-var': 'off', + strict: ['error', 'safe'], + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/package.json b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/package.json new file mode 100644 index 0000000..c6c16a5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/package.json @@ -0,0 +1,107 @@ +{ + "_from": "eslint-config-airbnb-base@^14.1.0", + "_id": "eslint-config-airbnb-base@14.1.0", + "_inBundle": false, + "_integrity": "sha512-+XCcfGyCnbzOnktDVhwsCAx+9DmrzEmuwxyHUJpw+kqBVT744OUBrB09khgFKlK1lshVww6qXGsYPZpavoNjJw==", + "_location": "/eslint-config-airbnb-base", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "eslint-config-airbnb-base@^14.1.0", + "name": "eslint-config-airbnb-base", + "escapedName": "eslint-config-airbnb-base", + "rawSpec": "^14.1.0", + "saveSpec": null, + "fetchSpec": "^14.1.0" + }, + "_requiredBy": [ + "/eslint-config-airbnb" + ], + "_resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.1.0.tgz", + "_shasum": "2ba4592dd6843258221d9bff2b6831bd77c874e4", + "_spec": "eslint-config-airbnb-base@^14.1.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint-config-airbnb", + "author": { + "name": "Jake Teton-Landis", + "url": "https://twitter.com/@jitl" + }, + "bugs": { + "url": "https://github.com/airbnb/javascript/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Jake Teton-Landis", + "url": "https://twitter.com/jitl" + }, + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + { + "name": "Harrison Shoff", + "url": "https://twitter.com/hshoff" + } + ], + "dependencies": { + "confusing-browser-globals": "^1.0.9", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + }, + "deprecated": false, + "description": "Airbnb's base JS ESLint config, following our styleguide", + "devDependencies": { + "@babel/runtime": "^7.8.7", + "babel-preset-airbnb": "^4.4.0", + "babel-tape-runner": "^3.0.0", + "eclint": "^2.8.1", + "eslint": "^5.16.0 || ^6.8.0", + "eslint-find-rules": "^3.4.0", + "eslint-plugin-import": "^2.20.1", + "in-publish": "^2.0.0", + "safe-publish-latest": "^1.1.4", + "tape": "^5.0.0-next.4" + }, + "engines": { + "node": ">= 6" + }, + "homepage": "https://github.com/airbnb/javascript", + "keywords": [ + "eslint", + "eslintconfig", + "config", + "airbnb", + "javascript", + "styleguide", + "es2015", + "es2016", + "es2017", + "es2018" + ], + "license": "MIT", + "main": "index.js", + "name": "eslint-config-airbnb-base", + "peerDependencies": { + "eslint": "^5.16.0 || ^6.8.0", + "eslint-plugin-import": "^2.20.1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/airbnb/javascript.git" + }, + "scripts": { + "lint": "eslint --report-unused-disable-directives .", + "posttravis": ":", + "prelint": "eclint check * rules/* test/*", + "prepublish": "(in-install || eslint-find-rules --unused) && (not-in-publish || npm test) && safe-publish-latest", + "pretest": "npm run --silent lint", + "pretests-only": "node ./test/requires", + "pretravis": ":", + "test": "npm run --silent tests-only", + "tests-only": "babel-tape-runner ./test/test-*.js", + "travis": "npm run --silent tests-only" + }, + "version": "14.1.0" +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/best-practices.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/best-practices.js new file mode 100644 index 0000000..4cf2de4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/best-practices.js @@ -0,0 +1,355 @@ +module.exports = { + rules: { + // enforces getter/setter pairs in objects + 'accessor-pairs': 'off', + + // enforces return statements in callbacks of array's methods + // https://eslint.org/docs/rules/array-callback-return + 'array-callback-return': ['error', { allowImplicit: true }], + + // treat var statements as if they were block scoped + 'block-scoped-var': 'error', + + // specify the maximum cyclomatic complexity allowed in a program + complexity: ['off', 11], + + // enforce that class methods use "this" + // https://eslint.org/docs/rules/class-methods-use-this + 'class-methods-use-this': ['error', { + exceptMethods: [], + }], + + // require return statements to either always or never specify values + 'consistent-return': 'error', + + // specify curly brace conventions for all control statements + curly: ['error', 'multi-line'], // multiline + + // require default case in switch statements + 'default-case': ['error', { commentPattern: '^no default$' }], + + // https://eslint.org/docs/rules/default-param-last + // TODO: enable, semver-minor, when eslint v6.4 is required (which is a major) + 'default-param-last': 'off', + + // encourages use of dot notation whenever possible + 'dot-notation': ['error', { allowKeywords: true }], + + // enforces consistent newlines before or after dots + // https://eslint.org/docs/rules/dot-location + 'dot-location': ['error', 'property'], + + // require the use of === and !== + // https://eslint.org/docs/rules/eqeqeq + eqeqeq: ['error', 'always', { null: 'ignore' }], + + // Require grouped accessor pairs in object literals and classes + // https://eslint.org/docs/rules/grouped-accessor-pairs + // TODO: enable in next major, altho the guide forbids getters/setters anyways + 'grouped-accessor-pairs': 'off', + + // make sure for-in loops have an if statement + 'guard-for-in': 'error', + + // enforce a maximum number of classes per file + // https://eslint.org/docs/rules/max-classes-per-file + 'max-classes-per-file': ['error', 1], + + // disallow the use of alert, confirm, and prompt + 'no-alert': 'warn', + + // disallow use of arguments.caller or arguments.callee + 'no-caller': 'error', + + // disallow lexical declarations in case/default clauses + // https://eslint.org/docs/rules/no-case-declarations.html + 'no-case-declarations': 'error', + + // Disallow returning value in constructor + // https://eslint.org/docs/rules/no-constructor-return + // TODO: enable, semver-major + 'no-constructor-return': 'off', + + // disallow division operators explicitly at beginning of regular expression + // https://eslint.org/docs/rules/no-div-regex + 'no-div-regex': 'off', + + // disallow else after a return in an if + // https://eslint.org/docs/rules/no-else-return + 'no-else-return': ['error', { allowElseIf: false }], + + // disallow empty functions, except for standalone funcs/arrows + // https://eslint.org/docs/rules/no-empty-function + 'no-empty-function': ['error', { + allow: [ + 'arrowFunctions', + 'functions', + 'methods', + ] + }], + + // disallow empty destructuring patterns + // https://eslint.org/docs/rules/no-empty-pattern + 'no-empty-pattern': 'error', + + // disallow comparisons to null without a type-checking operator + 'no-eq-null': 'off', + + // disallow use of eval() + 'no-eval': 'error', + + // disallow adding to native types + 'no-extend-native': 'error', + + // disallow unnecessary function binding + 'no-extra-bind': 'error', + + // disallow Unnecessary Labels + // https://eslint.org/docs/rules/no-extra-label + 'no-extra-label': 'error', + + // disallow fallthrough of case statements + 'no-fallthrough': 'error', + + // disallow the use of leading or trailing decimal points in numeric literals + 'no-floating-decimal': 'error', + + // disallow reassignments of native objects or read-only globals + // https://eslint.org/docs/rules/no-global-assign + 'no-global-assign': ['error', { exceptions: [] }], + // deprecated in favor of no-global-assign + 'no-native-reassign': 'off', + + // disallow implicit type conversions + // https://eslint.org/docs/rules/no-implicit-coercion + 'no-implicit-coercion': ['off', { + boolean: false, + number: true, + string: true, + allow: [], + }], + + // disallow var and named functions in global scope + // https://eslint.org/docs/rules/no-implicit-globals + 'no-implicit-globals': 'off', + + // disallow use of eval()-like methods + 'no-implied-eval': 'error', + + // disallow this keywords outside of classes or class-like objects + 'no-invalid-this': 'off', + + // disallow usage of __iterator__ property + 'no-iterator': 'error', + + // disallow use of labels for anything other then loops and switches + 'no-labels': ['error', { allowLoop: false, allowSwitch: false }], + + // disallow unnecessary nested blocks + 'no-lone-blocks': 'error', + + // disallow creation of functions within loops + 'no-loop-func': 'error', + + // disallow magic numbers + // https://eslint.org/docs/rules/no-magic-numbers + 'no-magic-numbers': ['off', { + ignore: [], + ignoreArrayIndexes: true, + enforceConst: true, + detectObjects: false, + }], + + // disallow use of multiple spaces + 'no-multi-spaces': ['error', { + ignoreEOLComments: false, + }], + + // disallow use of multiline strings + 'no-multi-str': 'error', + + // disallow use of new operator when not part of the assignment or comparison + 'no-new': 'error', + + // disallow use of new operator for Function object + 'no-new-func': 'error', + + // disallows creating new instances of String, Number, and Boolean + 'no-new-wrappers': 'error', + + // disallow use of (old style) octal literals + 'no-octal': 'error', + + // disallow use of octal escape sequences in string literals, such as + // var foo = 'Copyright \251'; + 'no-octal-escape': 'error', + + // disallow reassignment of function parameters + // disallow parameter object manipulation except for specific exclusions + // rule: https://eslint.org/docs/rules/no-param-reassign.html + 'no-param-reassign': ['error', { + props: true, + ignorePropertyModificationsFor: [ + 'acc', // for reduce accumulators + 'accumulator', // for reduce accumulators + 'e', // for e.returnvalue + 'ctx', // for Koa routing + 'req', // for Express requests + 'request', // for Express requests + 'res', // for Express responses + 'response', // for Express responses + '$scope', // for Angular 1 scopes + 'staticContext', // for ReactRouter context + ] + }], + + // disallow usage of __proto__ property + 'no-proto': 'error', + + // disallow declaring the same variable more then once + 'no-redeclare': 'error', + + // disallow certain object properties + // https://eslint.org/docs/rules/no-restricted-properties + 'no-restricted-properties': ['error', { + object: 'arguments', + property: 'callee', + message: 'arguments.callee is deprecated', + }, { + object: 'global', + property: 'isFinite', + message: 'Please use Number.isFinite instead', + }, { + object: 'self', + property: 'isFinite', + message: 'Please use Number.isFinite instead', + }, { + object: 'window', + property: 'isFinite', + message: 'Please use Number.isFinite instead', + }, { + object: 'global', + property: 'isNaN', + message: 'Please use Number.isNaN instead', + }, { + object: 'self', + property: 'isNaN', + message: 'Please use Number.isNaN instead', + }, { + object: 'window', + property: 'isNaN', + message: 'Please use Number.isNaN instead', + }, { + property: '__defineGetter__', + message: 'Please use Object.defineProperty instead.', + }, { + property: '__defineSetter__', + message: 'Please use Object.defineProperty instead.', + }, { + object: 'Math', + property: 'pow', + message: 'Use the exponentiation operator (**) instead.', + }], + + // disallow use of assignment in return statement + 'no-return-assign': ['error', 'always'], + + // disallow redundant `return await` + 'no-return-await': 'error', + + // disallow use of `javascript:` urls. + 'no-script-url': 'error', + + // disallow self assignment + // https://eslint.org/docs/rules/no-self-assign + 'no-self-assign': ['error', { + props: true, + }], + + // disallow comparisons where both sides are exactly the same + 'no-self-compare': 'error', + + // disallow use of comma operator + 'no-sequences': 'error', + + // restrict what can be thrown as an exception + 'no-throw-literal': 'error', + + // disallow unmodified conditions of loops + // https://eslint.org/docs/rules/no-unmodified-loop-condition + 'no-unmodified-loop-condition': 'off', + + // disallow usage of expressions in statement position + 'no-unused-expressions': ['error', { + allowShortCircuit: false, + allowTernary: false, + allowTaggedTemplates: false, + }], + + // disallow unused labels + // https://eslint.org/docs/rules/no-unused-labels + 'no-unused-labels': 'error', + + // disallow unnecessary .call() and .apply() + 'no-useless-call': 'off', + + // Disallow unnecessary catch clauses + // https://eslint.org/docs/rules/no-useless-catch + 'no-useless-catch': 'error', + + // disallow useless string concatenation + // https://eslint.org/docs/rules/no-useless-concat + 'no-useless-concat': 'error', + + // disallow unnecessary string escaping + // https://eslint.org/docs/rules/no-useless-escape + 'no-useless-escape': 'error', + + // disallow redundant return; keywords + // https://eslint.org/docs/rules/no-useless-return + 'no-useless-return': 'error', + + // disallow use of void operator + // https://eslint.org/docs/rules/no-void + 'no-void': 'error', + + // disallow usage of configurable warning terms in comments: e.g. todo + 'no-warning-comments': ['off', { terms: ['todo', 'fixme', 'xxx'], location: 'start' }], + + // disallow use of the with statement + 'no-with': 'error', + + // require using Error objects as Promise rejection reasons + // https://eslint.org/docs/rules/prefer-promise-reject-errors + 'prefer-promise-reject-errors': ['error', { allowEmptyReject: true }], + + // Suggest using named capture group in regular expression + // https://eslint.org/docs/rules/prefer-named-capture-group + 'prefer-named-capture-group': 'off', + + // https://eslint.org/docs/rules/prefer-regex-literals + // TODO; enable, semver-minor, once eslint v6.4 is required (which is a major) + 'prefer-regex-literals': 'off', + + // require use of the second argument for parseInt() + radix: 'error', + + // require `await` in `async function` (note: this is a horrible rule that should never be used) + // https://eslint.org/docs/rules/require-await + 'require-await': 'off', + + // Enforce the use of u flag on RegExp + // https://eslint.org/docs/rules/require-unicode-regexp + 'require-unicode-regexp': 'off', + + // requires to declare all vars on top of their containing scope + 'vars-on-top': 'error', + + // require immediate function invocation to be wrapped in parentheses + // https://eslint.org/docs/rules/wrap-iife.html + 'wrap-iife': ['error', 'outside', { functionPrototypeMethods: false }], + + // require or disallow Yoda conditions + yoda: 'error' + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/errors.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/errors.js new file mode 100644 index 0000000..e4cd542 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/errors.js @@ -0,0 +1,154 @@ +module.exports = { + rules: { + // Enforce “for” loop update clause moving the counter in the right direction + // https://eslint.org/docs/rules/for-direction + 'for-direction': 'error', + + // Enforces that a return statement is present in property getters + // https://eslint.org/docs/rules/getter-return + 'getter-return': ['error', { allowImplicit: true }], + + // disallow using an async function as a Promise executor + // https://eslint.org/docs/rules/no-async-promise-executor + 'no-async-promise-executor': 'error', + + // Disallow await inside of loops + // https://eslint.org/docs/rules/no-await-in-loop + 'no-await-in-loop': 'error', + + // Disallow comparisons to negative zero + // https://eslint.org/docs/rules/no-compare-neg-zero + 'no-compare-neg-zero': 'error', + + // disallow assignment in conditional expressions + 'no-cond-assign': ['error', 'always'], + + // disallow use of console + 'no-console': 'warn', + + // disallow use of constant expressions in conditions + 'no-constant-condition': 'warn', + + // disallow control characters in regular expressions + 'no-control-regex': 'error', + + // disallow use of debugger + 'no-debugger': 'error', + + // disallow duplicate arguments in functions + 'no-dupe-args': 'error', + + // Disallow duplicate conditions in if-else-if chains + // https://eslint.org/docs/rules/no-dupe-else-if + // TODO: enable, semver-major + 'no-dupe-else-if': 'off', + + // disallow duplicate keys when creating object literals + 'no-dupe-keys': 'error', + + // disallow a duplicate case label. + 'no-duplicate-case': 'error', + + // disallow empty statements + 'no-empty': 'error', + + // disallow the use of empty character classes in regular expressions + 'no-empty-character-class': 'error', + + // disallow assigning to the exception in a catch block + 'no-ex-assign': 'error', + + // disallow double-negation boolean casts in a boolean context + // https://eslint.org/docs/rules/no-extra-boolean-cast + 'no-extra-boolean-cast': 'error', + + // disallow unnecessary parentheses + // https://eslint.org/docs/rules/no-extra-parens + 'no-extra-parens': ['off', 'all', { + conditionalAssign: true, + nestedBinaryExpressions: false, + returnAssign: false, + ignoreJSX: 'all', // delegate to eslint-plugin-react + enforceForArrowConditionals: false, + }], + + // disallow unnecessary semicolons + 'no-extra-semi': 'error', + + // disallow overwriting functions written as function declarations + 'no-func-assign': 'error', + + // https://eslint.org/docs/rules/no-import-assign + // TODO: enable, semver-minor, once eslint v6.4 is required (which is a major) + 'no-import-assign': 'off', + + // disallow function or variable declarations in nested blocks + 'no-inner-declarations': 'error', + + // disallow invalid regular expression strings in the RegExp constructor + 'no-invalid-regexp': 'error', + + // disallow irregular whitespace outside of strings and comments + 'no-irregular-whitespace': 'error', + + // Disallow characters which are made with multiple code points in character class syntax + // https://eslint.org/docs/rules/no-misleading-character-class + 'no-misleading-character-class': 'error', + + // disallow the use of object properties of the global object (Math and JSON) as functions + 'no-obj-calls': 'error', + + // disallow use of Object.prototypes builtins directly + // https://eslint.org/docs/rules/no-prototype-builtins + 'no-prototype-builtins': 'error', + + // disallow multiple spaces in a regular expression literal + 'no-regex-spaces': 'error', + + // Disallow returning values from setters + // https://eslint.org/docs/rules/no-setter-return + // TODO: enable, semver-major (altho the guide forbids getters/setters already) + 'no-setter-return': 'off', + + // disallow sparse arrays + 'no-sparse-arrays': 'error', + + // Disallow template literal placeholder syntax in regular strings + // https://eslint.org/docs/rules/no-template-curly-in-string + 'no-template-curly-in-string': 'error', + + // Avoid code that looks like two expressions but is actually one + // https://eslint.org/docs/rules/no-unexpected-multiline + 'no-unexpected-multiline': 'error', + + // disallow unreachable statements after a return, throw, continue, or break statement + 'no-unreachable': 'error', + + // disallow return/throw/break/continue inside finally blocks + // https://eslint.org/docs/rules/no-unsafe-finally + 'no-unsafe-finally': 'error', + + // disallow negating the left operand of relational operators + // https://eslint.org/docs/rules/no-unsafe-negation + 'no-unsafe-negation': 'error', + // disallow negation of the left operand of an in expression + // deprecated in favor of no-unsafe-negation + 'no-negated-in-lhs': 'off', + + // Disallow assignments that can lead to race conditions due to usage of await or yield + // https://eslint.org/docs/rules/require-atomic-updates + // TODO: enable, semver-major + 'require-atomic-updates': 'off', + + // disallow comparisons with the value NaN + 'use-isnan': 'error', + + // ensure JSDoc comments are valid + // https://eslint.org/docs/rules/valid-jsdoc + 'valid-jsdoc': 'off', + + // ensure that the results of typeof are compared against a valid string + // https://eslint.org/docs/rules/valid-typeof + 'valid-typeof': ['error', { requireStringLiterals: true }], + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/es6.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/es6.js new file mode 100644 index 0000000..bfdc6d2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/es6.js @@ -0,0 +1,176 @@ +module.exports = { + env: { + es6: true + }, + parserOptions: { + ecmaVersion: 6, + sourceType: 'module', + ecmaFeatures: { + generators: false, + objectLiteralDuplicateProperties: false + } + }, + + rules: { + // enforces no braces where they can be omitted + // https://eslint.org/docs/rules/arrow-body-style + // TODO: enable requireReturnForObjectLiteral? + 'arrow-body-style': ['error', 'as-needed', { + requireReturnForObjectLiteral: false, + }], + + // require parens in arrow function arguments + // https://eslint.org/docs/rules/arrow-parens + 'arrow-parens': ['error', 'always'], + + // require space before/after arrow function's arrow + // https://eslint.org/docs/rules/arrow-spacing + 'arrow-spacing': ['error', { before: true, after: true }], + + // verify super() callings in constructors + 'constructor-super': 'error', + + // enforce the spacing around the * in generator functions + // https://eslint.org/docs/rules/generator-star-spacing + 'generator-star-spacing': ['error', { before: false, after: true }], + + // disallow modifying variables of class declarations + // https://eslint.org/docs/rules/no-class-assign + 'no-class-assign': 'error', + + // disallow arrow functions where they could be confused with comparisons + // https://eslint.org/docs/rules/no-confusing-arrow + 'no-confusing-arrow': ['error', { + allowParens: true, + }], + + // disallow modifying variables that are declared using const + 'no-const-assign': 'error', + + // disallow duplicate class members + // https://eslint.org/docs/rules/no-dupe-class-members + 'no-dupe-class-members': 'error', + + // disallow importing from the same path more than once + // https://eslint.org/docs/rules/no-duplicate-imports + // replaced by https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md + 'no-duplicate-imports': 'off', + + // disallow symbol constructor + // https://eslint.org/docs/rules/no-new-symbol + 'no-new-symbol': 'error', + + // disallow specific imports + // https://eslint.org/docs/rules/no-restricted-imports + 'no-restricted-imports': ['off', { + paths: [], + patterns: [] + }], + + // disallow to use this/super before super() calling in constructors. + // https://eslint.org/docs/rules/no-this-before-super + 'no-this-before-super': 'error', + + // disallow useless computed property keys + // https://eslint.org/docs/rules/no-useless-computed-key + 'no-useless-computed-key': 'error', + + // disallow unnecessary constructor + // https://eslint.org/docs/rules/no-useless-constructor + 'no-useless-constructor': 'error', + + // disallow renaming import, export, and destructured assignments to the same name + // https://eslint.org/docs/rules/no-useless-rename + 'no-useless-rename': ['error', { + ignoreDestructuring: false, + ignoreImport: false, + ignoreExport: false, + }], + + // require let or const instead of var + 'no-var': 'error', + + // require method and property shorthand syntax for object literals + // https://eslint.org/docs/rules/object-shorthand + 'object-shorthand': ['error', 'always', { + ignoreConstructors: false, + avoidQuotes: true, + }], + + // suggest using arrow functions as callbacks + 'prefer-arrow-callback': ['error', { + allowNamedFunctions: false, + allowUnboundThis: true, + }], + + // suggest using of const declaration for variables that are never modified after declared + 'prefer-const': ['error', { + destructuring: 'any', + ignoreReadBeforeAssign: true, + }], + + // Prefer destructuring from arrays and objects + // https://eslint.org/docs/rules/prefer-destructuring + 'prefer-destructuring': ['error', { + VariableDeclarator: { + array: false, + object: true, + }, + AssignmentExpression: { + array: true, + object: false, + }, + }, { + enforceForRenamedProperties: false, + }], + + // disallow parseInt() in favor of binary, octal, and hexadecimal literals + // https://eslint.org/docs/rules/prefer-numeric-literals + 'prefer-numeric-literals': 'error', + + // suggest using Reflect methods where applicable + // https://eslint.org/docs/rules/prefer-reflect + 'prefer-reflect': 'off', + + // use rest parameters instead of arguments + // https://eslint.org/docs/rules/prefer-rest-params + 'prefer-rest-params': 'error', + + // suggest using the spread operator instead of .apply() + // https://eslint.org/docs/rules/prefer-spread + 'prefer-spread': 'error', + + // suggest using template literals instead of string concatenation + // https://eslint.org/docs/rules/prefer-template + 'prefer-template': 'error', + + // disallow generator functions that do not have yield + // https://eslint.org/docs/rules/require-yield + 'require-yield': 'error', + + // enforce spacing between object rest-spread + // https://eslint.org/docs/rules/rest-spread-spacing + 'rest-spread-spacing': ['error', 'never'], + + // import sorting + // https://eslint.org/docs/rules/sort-imports + 'sort-imports': ['off', { + ignoreCase: false, + ignoreDeclarationSort: false, + ignoreMemberSort: false, + memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'], + }], + + // require a Symbol description + // https://eslint.org/docs/rules/symbol-description + 'symbol-description': 'error', + + // enforce usage of spacing in template strings + // https://eslint.org/docs/rules/template-curly-spacing + 'template-curly-spacing': 'error', + + // enforce spacing around the * in yield* expressions + // https://eslint.org/docs/rules/yield-star-spacing + 'yield-star-spacing': ['error', 'after'] + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/imports.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/imports.js new file mode 100644 index 0000000..b88ace5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/imports.js @@ -0,0 +1,262 @@ +module.exports = { + env: { + es6: true + }, + parserOptions: { + ecmaVersion: 6, + sourceType: 'module' + }, + plugins: [ + 'import' + ], + + settings: { + 'import/resolver': { + node: { + extensions: ['.mjs', '.js', '.json'] + } + }, + 'import/extensions': [ + '.js', + '.mjs', + '.jsx', + ], + 'import/core-modules': [ + ], + 'import/ignore': [ + 'node_modules', + '\\.(coffee|scss|css|less|hbs|svg|json)$', + ], + }, + + rules: { + // Static analysis: + + // ensure imports point to files/modules that can be resolved + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md + 'import/no-unresolved': ['error', { commonjs: true, caseSensitive: true }], + + // ensure named imports coupled with named exports + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/named.md#when-not-to-use-it + 'import/named': 'error', + + // ensure default import coupled with default export + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/default.md#when-not-to-use-it + 'import/default': 'off', + + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/namespace.md + 'import/namespace': 'off', + + // Helpful warnings: + + // disallow invalid exports, e.g. multiple defaults + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/export.md + 'import/export': 'error', + + // do not allow a default import name to match a named export + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default.md + 'import/no-named-as-default': 'error', + + // warn on accessing default export property names that are also named exports + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-as-default-member.md + 'import/no-named-as-default-member': 'error', + + // disallow use of jsdoc-marked-deprecated imports + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-deprecated.md + 'import/no-deprecated': 'off', + + // Forbid the use of extraneous packages + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-extraneous-dependencies.md + // paths are treated both as absolute paths, and relative to process.cwd() + 'import/no-extraneous-dependencies': ['error', { + devDependencies: [ + 'test/**', // tape, common npm pattern + 'tests/**', // also common npm pattern + 'spec/**', // mocha, rspec-like pattern + '**/__tests__/**', // jest pattern + '**/__mocks__/**', // jest pattern + 'test.{js,jsx}', // repos with a single test file + 'test-*.{js,jsx}', // repos with multiple top-level test files + '**/*{.,_}{test,spec}.{js,jsx}', // tests where the extension or filename suffix denotes that it is a test + '**/jest.config.js', // jest config + '**/jest.setup.js', // jest setup + '**/vue.config.js', // vue-cli config + '**/webpack.config.js', // webpack config + '**/webpack.config.*.js', // webpack config + '**/rollup.config.js', // rollup config + '**/rollup.config.*.js', // rollup config + '**/gulpfile.js', // gulp config + '**/gulpfile.*.js', // gulp config + '**/Gruntfile{,.js}', // grunt config + '**/protractor.conf.js', // protractor config + '**/protractor.conf.*.js', // protractor config + '**/karma.conf.js' // karma config + ], + optionalDependencies: false, + }], + + // Forbid mutable exports + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-mutable-exports.md + 'import/no-mutable-exports': 'error', + + // Module systems: + + // disallow require() + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-commonjs.md + 'import/no-commonjs': 'off', + + // disallow AMD require/define + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-amd.md + 'import/no-amd': 'error', + + // No Node.js builtin modules + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-nodejs-modules.md + // TODO: enable? + 'import/no-nodejs-modules': 'off', + + // Style guide: + + // disallow non-import statements appearing before import statements + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/first.md + 'import/first': 'error', + + // disallow non-import statements appearing before import statements + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/imports-first.md + // deprecated: use `import/first` + 'import/imports-first': 'off', + + // disallow duplicate imports + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-duplicates.md + 'import/no-duplicates': 'error', + + // disallow namespace imports + // TODO: enable? + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-namespace.md + 'import/no-namespace': 'off', + + // Ensure consistent use of file extension within the import path + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/extensions.md + 'import/extensions': ['error', 'ignorePackages', { + js: 'never', + mjs: 'never', + jsx: 'never', + }], + + // ensure absolute imports are above relative imports and that unassigned imports are ignored + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/order.md + // TODO: enforce a stricter convention in module import order? + 'import/order': ['error', { groups: [['builtin', 'external', 'internal']] }], + + // Require a newline after the last import/require in a group + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/newline-after-import.md + 'import/newline-after-import': 'error', + + // Require modules with a single export to use a default export + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/prefer-default-export.md + 'import/prefer-default-export': 'error', + + // Restrict which files can be imported in a given folder + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-restricted-paths.md + 'import/no-restricted-paths': 'off', + + // Forbid modules to have too many dependencies + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/max-dependencies.md + 'import/max-dependencies': ['off', { max: 10 }], + + // Forbid import of modules using absolute paths + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-absolute-path.md + 'import/no-absolute-path': 'error', + + // Forbid require() calls with expressions + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md + 'import/no-dynamic-require': 'error', + + // prevent importing the submodules of other modules + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-internal-modules.md + 'import/no-internal-modules': ['off', { + allow: [], + }], + + // Warn if a module could be mistakenly parsed as a script by a consumer + // leveraging Unambiguous JavaScript Grammar + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/unambiguous.md + // this should not be enabled until this proposal has at least been *presented* to TC39. + // At the moment, it's not a thing. + 'import/unambiguous': 'off', + + // Forbid Webpack loader syntax in imports + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-webpack-loader-syntax.md + 'import/no-webpack-loader-syntax': 'error', + + // Prevent unassigned imports + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-unassigned-import.md + // importing for side effects is perfectly acceptable, if you need side effects. + 'import/no-unassigned-import': 'off', + + // Prevent importing the default as if it were named + // https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-named-default.md + 'import/no-named-default': 'error', + + // Reports if a module's default export is unnamed + // https://github.com/benmosher/eslint-plugin-import/blob/d9b712ac7fd1fddc391f7b234827925c160d956f/docs/rules/no-anonymous-default-export.md + 'import/no-anonymous-default-export': ['off', { + allowArray: false, + allowArrowFunction: false, + allowAnonymousClass: false, + allowAnonymousFunction: false, + allowLiteral: false, + allowObject: false, + }], + + // This rule enforces that all exports are declared at the bottom of the file. + // https://github.com/benmosher/eslint-plugin-import/blob/98acd6afd04dcb6920b81330114e146dc8532ea4/docs/rules/exports-last.md + // TODO: enable? + 'import/exports-last': 'off', + + // Reports when named exports are not grouped together in a single export declaration + // or when multiple assignments to CommonJS module.exports or exports object are present + // in a single file. + // https://github.com/benmosher/eslint-plugin-import/blob/44a038c06487964394b1e15b64f3bd34e5d40cde/docs/rules/group-exports.md + 'import/group-exports': 'off', + + // forbid default exports. this is a terrible rule, do not use it. + // https://github.com/benmosher/eslint-plugin-import/blob/44a038c06487964394b1e15b64f3bd34e5d40cde/docs/rules/no-default-export.md + 'import/no-default-export': 'off', + + // Prohibit named exports. this is a terrible rule, do not use it. + // https://github.com/benmosher/eslint-plugin-import/blob/1ec80fa35fa1819e2d35a70e68fb6a149fb57c5e/docs/rules/no-named-export.md + 'import/no-named-export': 'off', + + // Forbid a module from importing itself + // https://github.com/benmosher/eslint-plugin-import/blob/44a038c06487964394b1e15b64f3bd34e5d40cde/docs/rules/no-self-import.md + 'import/no-self-import': 'error', + + // Forbid cyclical dependencies between modules + // https://github.com/benmosher/eslint-plugin-import/blob/d81f48a2506182738409805f5272eff4d77c9348/docs/rules/no-cycle.md + 'import/no-cycle': ['error', { maxDepth: Infinity }], + + // Ensures that there are no useless path segments + // https://github.com/benmosher/eslint-plugin-import/blob/ebafcbf59ec9f653b2ac2a0156ca3bcba0a7cf57/docs/rules/no-useless-path-segments.md + 'import/no-useless-path-segments': ['error', { commonjs: true }], + + // dynamic imports require a leading comment with a webpackChunkName + // https://github.com/benmosher/eslint-plugin-import/blob/ebafcbf59ec9f653b2ac2a0156ca3bcba0a7cf57/docs/rules/dynamic-import-chunkname.md + 'import/dynamic-import-chunkname': ['off', { + importFunctions: [], + webpackChunknameFormat: '[0-9a-zA-Z-_/.]+', + }], + + // Use this rule to prevent imports to folders in relative parent paths. + // https://github.com/benmosher/eslint-plugin-import/blob/c34f14f67f077acd5a61b3da9c0b0de298d20059/docs/rules/no-relative-parent-imports.md + 'import/no-relative-parent-imports': 'off', + + // Reports modules without any exports, or with unused exports + // https://github.com/benmosher/eslint-plugin-import/blob/f63dd261809de6883b13b6b5b960e6d7f42a7813/docs/rules/no-unused-modules.md + // TODO: enable, semver-major + 'import/no-unused-modules': ['off', { + ignoreExports: [], + missingExports: true, + unusedExports: true, + }], + }, +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/node.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/node.js new file mode 100644 index 0000000..b178d7f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/node.js @@ -0,0 +1,43 @@ +module.exports = { + env: { + node: true + }, + + rules: { + // enforce return after a callback + 'callback-return': 'off', + + // require all requires be top-level + // https://eslint.org/docs/rules/global-require + 'global-require': 'error', + + // enforces error handling in callbacks (node environment) + 'handle-callback-err': 'off', + + // disallow use of the Buffer() constructor + // https://eslint.org/docs/rules/no-buffer-constructor + 'no-buffer-constructor': 'error', + + // disallow mixing regular variable and require declarations + 'no-mixed-requires': ['off', false], + + // disallow use of new operator with the require function + 'no-new-require': 'error', + + // disallow string concatenation with __dirname and __filename + // https://eslint.org/docs/rules/no-path-concat + 'no-path-concat': 'error', + + // disallow use of process.env + 'no-process-env': 'off', + + // disallow process.exit() + 'no-process-exit': 'off', + + // restrict usage of specified node modules + 'no-restricted-modules': 'off', + + // disallow use of synchronous methods (off by default) + 'no-sync': 'off', + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/strict.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/strict.js new file mode 100644 index 0000000..67cfd5e --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/strict.js @@ -0,0 +1,6 @@ +module.exports = { + rules: { + // babel inserts `'use strict';` for us + strict: ['error', 'never'] + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/style.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/style.js new file mode 100644 index 0000000..e5ff42a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/style.js @@ -0,0 +1,528 @@ +module.exports = { + rules: { + // enforce line breaks after opening and before closing array brackets + // https://eslint.org/docs/rules/array-bracket-newline + // TODO: enable? semver-major + 'array-bracket-newline': ['off', 'consistent'], // object option alternative: { multiline: true, minItems: 3 } + + // enforce line breaks between array elements + // https://eslint.org/docs/rules/array-element-newline + // TODO: enable? semver-major + 'array-element-newline': ['off', { multiline: true, minItems: 3 }], + + // enforce spacing inside array brackets + 'array-bracket-spacing': ['error', 'never'], + + // enforce spacing inside single-line blocks + // https://eslint.org/docs/rules/block-spacing + 'block-spacing': ['error', 'always'], + + // enforce one true brace style + 'brace-style': ['error', '1tbs', { allowSingleLine: true }], + + // require camel case names + camelcase: ['error', { properties: 'never', ignoreDestructuring: false }], + + // enforce or disallow capitalization of the first letter of a comment + // https://eslint.org/docs/rules/capitalized-comments + 'capitalized-comments': ['off', 'never', { + line: { + ignorePattern: '.*', + ignoreInlineComments: true, + ignoreConsecutiveComments: true, + }, + block: { + ignorePattern: '.*', + ignoreInlineComments: true, + ignoreConsecutiveComments: true, + }, + }], + + // require trailing commas in multiline object literals + 'comma-dangle': ['error', { + arrays: 'always-multiline', + objects: 'always-multiline', + imports: 'always-multiline', + exports: 'always-multiline', + functions: 'always-multiline', + }], + + // enforce spacing before and after comma + 'comma-spacing': ['error', { before: false, after: true }], + + // enforce one true comma style + 'comma-style': ['error', 'last', { + exceptions: { + ArrayExpression: false, + ArrayPattern: false, + ArrowFunctionExpression: false, + CallExpression: false, + FunctionDeclaration: false, + FunctionExpression: false, + ImportDeclaration: false, + ObjectExpression: false, + ObjectPattern: false, + VariableDeclaration: false, + NewExpression: false, + } + }], + + // disallow padding inside computed properties + 'computed-property-spacing': ['error', 'never'], + + // enforces consistent naming when capturing the current execution context + 'consistent-this': 'off', + + // enforce newline at the end of file, with no multiple empty lines + 'eol-last': ['error', 'always'], + + // https://eslint.org/docs/rules/function-call-argument-newline + // TODO: enable, semver-minor, once eslint v6.2 is required (which is a major) + 'function-call-argument-newline': ['off', 'consistent'], + + // enforce spacing between functions and their invocations + // https://eslint.org/docs/rules/func-call-spacing + 'func-call-spacing': ['error', 'never'], + + // requires function names to match the name of the variable or property to which they are + // assigned + // https://eslint.org/docs/rules/func-name-matching + 'func-name-matching': ['off', 'always', { + includeCommonJSModuleExports: false, + considerPropertyDescriptor: true, + }], + + // require function expressions to have a name + // https://eslint.org/docs/rules/func-names + 'func-names': 'warn', + + // enforces use of function declarations or expressions + // https://eslint.org/docs/rules/func-style + // TODO: enable + 'func-style': ['off', 'expression'], + + // enforce consistent line breaks inside function parentheses + // https://eslint.org/docs/rules/function-paren-newline + 'function-paren-newline': ['error', 'consistent'], + + // Blacklist certain identifiers to prevent them being used + // https://eslint.org/docs/rules/id-blacklist + 'id-blacklist': 'off', + + // this option enforces minimum and maximum identifier lengths + // (variable names, property names etc.) + 'id-length': 'off', + + // require identifiers to match the provided regular expression + 'id-match': 'off', + + // Enforce the location of arrow function bodies with implicit returns + // https://eslint.org/docs/rules/implicit-arrow-linebreak + 'implicit-arrow-linebreak': ['error', 'beside'], + + // this option sets a specific tab width for your code + // https://eslint.org/docs/rules/indent + indent: ['error', 2, { + SwitchCase: 1, + VariableDeclarator: 1, + outerIIFEBody: 1, + // MemberExpression: null, + FunctionDeclaration: { + parameters: 1, + body: 1 + }, + FunctionExpression: { + parameters: 1, + body: 1 + }, + CallExpression: { + arguments: 1 + }, + ArrayExpression: 1, + ObjectExpression: 1, + ImportDeclaration: 1, + flatTernaryExpressions: false, + // list derived from https://github.com/benjamn/ast-types/blob/HEAD/def/jsx.js + ignoredNodes: ['JSXElement', 'JSXElement > *', 'JSXAttribute', 'JSXIdentifier', 'JSXNamespacedName', 'JSXMemberExpression', 'JSXSpreadAttribute', 'JSXExpressionContainer', 'JSXOpeningElement', 'JSXClosingElement', 'JSXFragment', 'JSXOpeningFragment', 'JSXClosingFragment', 'JSXText', 'JSXEmptyExpression', 'JSXSpreadChild'], + ignoreComments: false + }], + + // specify whether double or single quotes should be used in JSX attributes + // https://eslint.org/docs/rules/jsx-quotes + 'jsx-quotes': ['off', 'prefer-double'], + + // enforces spacing between keys and values in object literal properties + 'key-spacing': ['error', { beforeColon: false, afterColon: true }], + + // require a space before & after certain keywords + 'keyword-spacing': ['error', { + before: true, + after: true, + overrides: { + return: { after: true }, + throw: { after: true }, + case: { after: true } + } + }], + + // enforce position of line comments + // https://eslint.org/docs/rules/line-comment-position + // TODO: enable? + 'line-comment-position': ['off', { + position: 'above', + ignorePattern: '', + applyDefaultPatterns: true, + }], + + // disallow mixed 'LF' and 'CRLF' as linebreaks + // https://eslint.org/docs/rules/linebreak-style + 'linebreak-style': ['error', 'unix'], + + // require or disallow an empty line between class members + // https://eslint.org/docs/rules/lines-between-class-members + 'lines-between-class-members': ['error', 'always', { exceptAfterSingleLine: false }], + + // enforces empty lines around comments + 'lines-around-comment': 'off', + + // require or disallow newlines around directives + // https://eslint.org/docs/rules/lines-around-directive + 'lines-around-directive': ['error', { + before: 'always', + after: 'always', + }], + + // specify the maximum depth that blocks can be nested + 'max-depth': ['off', 4], + + // specify the maximum length of a line in your program + // https://eslint.org/docs/rules/max-len + 'max-len': ['error', 100, 2, { + ignoreUrls: true, + ignoreComments: false, + ignoreRegExpLiterals: true, + ignoreStrings: true, + ignoreTemplateLiterals: true, + }], + + // specify the max number of lines in a file + // https://eslint.org/docs/rules/max-lines + 'max-lines': ['off', { + max: 300, + skipBlankLines: true, + skipComments: true + }], + + // enforce a maximum function length + // https://eslint.org/docs/rules/max-lines-per-function + 'max-lines-per-function': ['off', { + max: 50, + skipBlankLines: true, + skipComments: true, + IIFEs: true, + }], + + // specify the maximum depth callbacks can be nested + 'max-nested-callbacks': 'off', + + // limits the number of parameters that can be used in the function declaration. + 'max-params': ['off', 3], + + // specify the maximum number of statement allowed in a function + 'max-statements': ['off', 10], + + // restrict the number of statements per line + // https://eslint.org/docs/rules/max-statements-per-line + 'max-statements-per-line': ['off', { max: 1 }], + + // enforce a particular style for multiline comments + // https://eslint.org/docs/rules/multiline-comment-style + 'multiline-comment-style': ['off', 'starred-block'], + + // require multiline ternary + // https://eslint.org/docs/rules/multiline-ternary + // TODO: enable? + 'multiline-ternary': ['off', 'never'], + + // require a capital letter for constructors + 'new-cap': ['error', { + newIsCap: true, + newIsCapExceptions: [], + capIsNew: false, + capIsNewExceptions: ['Immutable.Map', 'Immutable.Set', 'Immutable.List'], + }], + + // disallow the omission of parentheses when invoking a constructor with no arguments + // https://eslint.org/docs/rules/new-parens + 'new-parens': 'error', + + // allow/disallow an empty newline after var statement + 'newline-after-var': 'off', + + // https://eslint.org/docs/rules/newline-before-return + 'newline-before-return': 'off', + + // enforces new line after each method call in the chain to make it + // more readable and easy to maintain + // https://eslint.org/docs/rules/newline-per-chained-call + 'newline-per-chained-call': ['error', { ignoreChainWithDepth: 4 }], + + // disallow use of the Array constructor + 'no-array-constructor': 'error', + + // disallow use of bitwise operators + // https://eslint.org/docs/rules/no-bitwise + 'no-bitwise': 'error', + + // disallow use of the continue statement + // https://eslint.org/docs/rules/no-continue + 'no-continue': 'error', + + // disallow comments inline after code + 'no-inline-comments': 'off', + + // disallow if as the only statement in an else block + // https://eslint.org/docs/rules/no-lonely-if + 'no-lonely-if': 'error', + + // disallow un-paren'd mixes of different operators + // https://eslint.org/docs/rules/no-mixed-operators + 'no-mixed-operators': ['error', { + // the list of arthmetic groups disallows mixing `%` and `**` + // with other arithmetic operators. + groups: [ + ['%', '**'], + ['%', '+'], + ['%', '-'], + ['%', '*'], + ['%', '/'], + ['/', '*'], + ['&', '|', '<<', '>>', '>>>'], + ['==', '!=', '===', '!=='], + ['&&', '||'], + ], + allowSamePrecedence: false + }], + + // disallow mixed spaces and tabs for indentation + 'no-mixed-spaces-and-tabs': 'error', + + // disallow use of chained assignment expressions + // https://eslint.org/docs/rules/no-multi-assign + 'no-multi-assign': ['error'], + + // disallow multiple empty lines, only one newline at the end, and no new lines at the beginning + // https://eslint.org/docs/rules/no-multiple-empty-lines + 'no-multiple-empty-lines': ['error', { max: 2, maxBOF: 1, maxEOF: 0 }], + + // disallow negated conditions + // https://eslint.org/docs/rules/no-negated-condition + 'no-negated-condition': 'off', + + // disallow nested ternary expressions + 'no-nested-ternary': 'error', + + // disallow use of the Object constructor + 'no-new-object': 'error', + + // disallow use of unary operators, ++ and -- + // https://eslint.org/docs/rules/no-plusplus + 'no-plusplus': 'error', + + // disallow certain syntax forms + // https://eslint.org/docs/rules/no-restricted-syntax + 'no-restricted-syntax': [ + 'error', + { + selector: 'ForInStatement', + message: 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.', + }, + { + selector: 'ForOfStatement', + message: 'iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.', + }, + { + selector: 'LabeledStatement', + message: 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.', + }, + { + selector: 'WithStatement', + message: '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.', + }, + ], + + // disallow space between function identifier and application + 'no-spaced-func': 'error', + + // disallow tab characters entirely + 'no-tabs': 'error', + + // disallow the use of ternary operators + 'no-ternary': 'off', + + // disallow trailing whitespace at the end of lines + 'no-trailing-spaces': ['error', { + skipBlankLines: false, + ignoreComments: false, + }], + + // disallow dangling underscores in identifiers + // https://eslint.org/docs/rules/no-underscore-dangle + 'no-underscore-dangle': ['error', { + allow: [], + allowAfterThis: false, + allowAfterSuper: false, + enforceInMethodNames: true, + }], + + // disallow the use of Boolean literals in conditional expressions + // also, prefer `a || b` over `a ? a : b` + // https://eslint.org/docs/rules/no-unneeded-ternary + 'no-unneeded-ternary': ['error', { defaultAssignment: false }], + + // disallow whitespace before properties + // https://eslint.org/docs/rules/no-whitespace-before-property + 'no-whitespace-before-property': 'error', + + // enforce the location of single-line statements + // https://eslint.org/docs/rules/nonblock-statement-body-position + 'nonblock-statement-body-position': ['error', 'beside', { overrides: {} }], + + // require padding inside curly braces + 'object-curly-spacing': ['error', 'always'], + + // enforce line breaks between braces + // https://eslint.org/docs/rules/object-curly-newline + 'object-curly-newline': ['error', { + ObjectExpression: { minProperties: 4, multiline: true, consistent: true }, + ObjectPattern: { minProperties: 4, multiline: true, consistent: true }, + ImportDeclaration: { minProperties: 4, multiline: true, consistent: true }, + ExportDeclaration: { minProperties: 4, multiline: true, consistent: true }, + }], + + // enforce "same line" or "multiple line" on object properties. + // https://eslint.org/docs/rules/object-property-newline + 'object-property-newline': ['error', { + allowAllPropertiesOnSameLine: true, + }], + + // allow just one var statement per function + 'one-var': ['error', 'never'], + + // require a newline around variable declaration + // https://eslint.org/docs/rules/one-var-declaration-per-line + 'one-var-declaration-per-line': ['error', 'always'], + + // require assignment operator shorthand where possible or prohibit it entirely + // https://eslint.org/docs/rules/operator-assignment + 'operator-assignment': ['error', 'always'], + + // Requires operator at the beginning of the line in multiline statements + // https://eslint.org/docs/rules/operator-linebreak + 'operator-linebreak': ['error', 'before', { overrides: { '=': 'none' } }], + + // disallow padding within blocks + 'padded-blocks': ['error', { + blocks: 'never', + classes: 'never', + switches: 'never', + }, { + allowSingleLineBlocks: true, + }], + + // Require or disallow padding lines between statements + // https://eslint.org/docs/rules/padding-line-between-statements + 'padding-line-between-statements': 'off', + + // Disallow the use of Math.pow in favor of the ** operator + // https://eslint.org/docs/rules/prefer-exponentiation-operator + // TODO: enable, semver-major when eslint 5 is dropped + 'prefer-exponentiation-operator': 'off', + + // Prefer use of an object spread over Object.assign + // https://eslint.org/docs/rules/prefer-object-spread + 'prefer-object-spread': 'error', + + // require quotes around object literal property names + // https://eslint.org/docs/rules/quote-props.html + 'quote-props': ['error', 'as-needed', { keywords: false, unnecessary: true, numbers: false }], + + // specify whether double or single quotes should be used + quotes: ['error', 'single', { avoidEscape: true }], + + // do not require jsdoc + // https://eslint.org/docs/rules/require-jsdoc + 'require-jsdoc': 'off', + + // require or disallow use of semicolons instead of ASI + semi: ['error', 'always'], + + // enforce spacing before and after semicolons + 'semi-spacing': ['error', { before: false, after: true }], + + // Enforce location of semicolons + // https://eslint.org/docs/rules/semi-style + 'semi-style': ['error', 'last'], + + // requires object keys to be sorted + 'sort-keys': ['off', 'asc', { caseSensitive: false, natural: true }], + + // sort variables within the same declaration block + 'sort-vars': 'off', + + // require or disallow space before blocks + 'space-before-blocks': 'error', + + // require or disallow space before function opening parenthesis + // https://eslint.org/docs/rules/space-before-function-paren + 'space-before-function-paren': ['error', { + anonymous: 'always', + named: 'never', + asyncArrow: 'always' + }], + + // require or disallow spaces inside parentheses + 'space-in-parens': ['error', 'never'], + + // require spaces around operators + 'space-infix-ops': 'error', + + // Require or disallow spaces before/after unary operators + // https://eslint.org/docs/rules/space-unary-ops + 'space-unary-ops': ['error', { + words: true, + nonwords: false, + overrides: { + }, + }], + + // require or disallow a space immediately following the // or /* in a comment + // https://eslint.org/docs/rules/spaced-comment + 'spaced-comment': ['error', 'always', { + line: { + exceptions: ['-', '+'], + markers: ['=', '!'], // space here to support sprockets directives + }, + block: { + exceptions: ['-', '+'], + markers: ['=', '!', ':', '::'], // space here to support sprockets directives and flow comment types + balanced: true, + } + }], + + // Enforce spacing around colons of switch statements + // https://eslint.org/docs/rules/switch-colon-spacing + 'switch-colon-spacing': ['error', { after: true, before: false }], + + // Require or disallow spacing between template tags and their literals + // https://eslint.org/docs/rules/template-tag-spacing + 'template-tag-spacing': ['error', 'never'], + + // require or disallow the Unicode Byte Order Mark + // https://eslint.org/docs/rules/unicode-bom + 'unicode-bom': ['error', 'never'], + + // require regex literals to be wrapped in parentheses + 'wrap-regex': 'off' + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/variables.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/variables.js new file mode 100644 index 0000000..701340a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/rules/variables.js @@ -0,0 +1,44 @@ +const confusingBrowserGlobals = require('confusing-browser-globals'); + +module.exports = { + rules: { + // enforce or disallow variable initializations at definition + 'init-declarations': 'off', + + // disallow the catch clause parameter name being the same as a variable in the outer scope + 'no-catch-shadow': 'off', + + // disallow deletion of variables + 'no-delete-var': 'error', + + // disallow labels that share a name with a variable + // https://eslint.org/docs/rules/no-label-var + 'no-label-var': 'error', + + // disallow specific globals + 'no-restricted-globals': ['error', 'isFinite', 'isNaN'].concat(confusingBrowserGlobals), + + // disallow declaration of variables already declared in the outer scope + 'no-shadow': 'error', + + // disallow shadowing of names such as arguments + 'no-shadow-restricted-names': 'error', + + // disallow use of undeclared variables unless mentioned in a /*global */ block + 'no-undef': 'error', + + // disallow use of undefined when initializing variables + 'no-undef-init': 'error', + + // disallow use of undefined variable + // https://eslint.org/docs/rules/no-undefined + // TODO: enable? + 'no-undefined': 'off', + + // disallow declaration of variables that are not used in the code + 'no-unused-vars': ['error', { vars: 'all', args: 'after-used', ignoreRestSiblings: true }], + + // disallow use of variables before they are defined + 'no-use-before-define': ['error', { functions: true, classes: true, variables: true }], + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/.eslintrc b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/.eslintrc new file mode 100644 index 0000000..5808be6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/.eslintrc @@ -0,0 +1,8 @@ +{ + "rules": { + // disabled because I find it tedious to write tests while following this rule + "no-shadow": 0, + // tests uses `t` for tape + "id-length": [2, {"min": 2, "properties": "never", "exceptions": ["t"]}], + } +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/requires.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/requires.js new file mode 100644 index 0000000..8176480 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/requires.js @@ -0,0 +1,13 @@ +/* eslint strict: 0, global-require: 0 */ + +'use strict'; + +const test = require('tape'); + +test('all entry points parse', (t) => { + t.doesNotThrow(() => require('..'), 'index does not throw'); + t.doesNotThrow(() => require('../legacy'), 'legacy does not throw'); + t.doesNotThrow(() => require('../whitespace'), 'whitespace does not throw'); + + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/test-base.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/test-base.js new file mode 100644 index 0000000..181e04f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/test/test-base.js @@ -0,0 +1,32 @@ +import fs from 'fs'; +import path from 'path'; +import test from 'tape'; + +import index from '..'; + +const files = { ...{ index } }; // object spread is to test parsing + +fs.readdirSync(path.join(__dirname, '../rules')).forEach((name) => { + // eslint-disable-next-line import/no-dynamic-require + files[name] = require(`../rules/${name}`); // eslint-disable-line global-require +}); + +Object.keys(files).forEach(( + name, // trailing function comma is to test parsing +) => { + const config = files[name]; + + test(`${name}: does not reference react`, (t) => { + t.plan(2); + + // scan plugins for react and fail if it is found + const hasReactPlugin = Object.prototype.hasOwnProperty.call(config, 'plugins') + && config.plugins.indexOf('react') !== -1; + t.notOk(hasReactPlugin, 'there is no react plugin'); + + // scan rules for react/ and fail if any exist + const reactRuleIds = Object.keys(config.rules) + .filter((ruleId) => ruleId.indexOf('react/') === 0); + t.deepEquals(reactRuleIds, [], 'there are no react/ rules'); + }); +}); diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/whitespace.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/whitespace.js new file mode 100644 index 0000000..0b7bda8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb-base/whitespace.js @@ -0,0 +1,91 @@ +const assign = require('object.assign'); +const entries = require('object.entries'); +const { CLIEngine } = require('eslint'); + +const baseConfig = require('.'); + +const severities = ['off', 'warn', 'error']; + +function getSeverity(ruleConfig) { + if (Array.isArray(ruleConfig)) { + return getSeverity(ruleConfig[0]); + } + if (typeof ruleConfig === 'number') { + return severities[ruleConfig]; + } + return ruleConfig; +} + +function onlyErrorOnRules(rulesToError, config) { + const errorsOnly = assign({}, config); + const cli = new CLIEngine({ baseConfig: config, useEslintrc: false }); + const baseRules = cli.getConfigForFile(require.resolve('./')).rules; + + entries(baseRules).forEach((rule) => { + const ruleName = rule[0]; + const ruleConfig = rule[1]; + const severity = getSeverity(ruleConfig); + + if (rulesToError.indexOf(ruleName) === -1 && severity === 'error') { + if (Array.isArray(ruleConfig)) { + errorsOnly.rules[ruleName] = ['warn'].concat(ruleConfig.slice(1)); + } else if (typeof ruleConfig === 'number') { + errorsOnly.rules[ruleName] = 1; + } else { + errorsOnly.rules[ruleName] = 'warn'; + } + } + }); + + return errorsOnly; +} + +module.exports = onlyErrorOnRules([ + 'array-bracket-newline', + 'array-bracket-spacing', + 'array-element-newline', + 'arrow-spacing', + 'block-spacing', + 'comma-spacing', + 'computed-property-spacing', + 'dot-location', + 'eol-last', + 'func-call-spacing', + 'function-paren-newline', + 'generator-star-spacing', + 'implicit-arrow-linebreak', + 'indent', + 'key-spacing', + 'keyword-spacing', + 'line-comment-position', + 'linebreak-style', + 'multiline-ternary', + 'newline-per-chained-call', + 'no-irregular-whitespace', + 'no-mixed-spaces-and-tabs', + 'no-multi-spaces', + 'no-regex-spaces', + 'no-spaced-func', + 'no-trailing-spaces', + 'no-whitespace-before-property', + 'nonblock-statement-body-position', + 'object-curly-newline', + 'object-curly-spacing', + 'object-property-newline', + 'one-var-declaration-per-line', + 'operator-linebreak', + 'padded-blocks', + 'padding-line-between-statements', + 'rest-spread-spacing', + 'semi-spacing', + 'semi-style', + 'space-before-blocks', + 'space-before-function-paren', + 'space-in-parens', + 'space-infix-ops', + 'space-unary-ops', + 'spaced-comment', + 'switch-colon-spacing', + 'template-tag-spacing', + 'import/newline-after-import', +], baseConfig); diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/.babelrc b/tic-tac-toe-app/node_modules/eslint-config-airbnb/.babelrc new file mode 100644 index 0000000..e0aceaa --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/.babelrc @@ -0,0 +1,3 @@ +{ + "presets": ["airbnb"] +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/.eslintrc b/tic-tac-toe-app/node_modules/eslint-config-airbnb/.eslintrc new file mode 100644 index 0000000..ab2c306 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/.eslintrc @@ -0,0 +1,8 @@ +{ + "extends": "./index.js", + "rules": { + // disable requiring trailing commas because it might be nice to revert to + // being JSON at some point, and I don't want to make big changes now. + "comma-dangle": 0, + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/CHANGELOG.md b/tic-tac-toe-app/node_modules/eslint-config-airbnb/CHANGELOG.md new file mode 100644 index 0000000..4bb3083 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/CHANGELOG.md @@ -0,0 +1,424 @@ +18.1.0 / 2020-03-12 +================== + - [minor] Support eslint-plugin-react-hooks@2 (#2090) + - [minor] add new disabled rules, update eslint + - [fix] `whitespace`: only set erroring rules to "warn" + - [patch] Remove duplicate `componentDidCatch` (#2108) + - [patch] Add `static-variables` to `sort-comp` rule (#2109) + - [readme] clarify hooks section in readme (#2074) + - [deps] update `eslint`, `eslint-plugin-react`, `eslint-plugin-react-hooks`, `eslint-config-airbnb-base`, `eslint-plugin-import`, `object.entries` + - [dev deps] update `@babel/runtime`, `babel-preset-airbnb`, `safe-publish-latest`, `tape` + - [tests] re-enable eslint rule `prefer-destructuring` internally (#2110) + - [tests] fix eslint errors from c66cfc3 (#2112) + +18.0.1 / 2019-08-13 +================== + - [patch] `react/state-in-constructor`: fix incorrect configuration + +18.0.0 / 2019-08-10 +================== + - [breaking] add eslint v6, drop eslint v4 + - [deps] [breaking] update `eslint-config-airbnb-base`, `eslint-plugin-react`, `eslint-find-rules`, `eslint-plugin-import` + - [breaking] Remove rules/strict from 'extends' (#1962) + - [breaking] set react version to "detect" + - [breaking] disable `label-has-for`; enable `control-has-associated-label` + - [breaking] enable `react/jsx-props-no-spreading` + - [breaking] enable `react/jsx-fragments` + - [minor] enable `react/static-property-placement` + - [minor] enable `react/state-in-constructor` + - [minor] enable `react/jsx-curly-newline` + - [react] Add missing/unsafe lifecycle methods to react/sort-comp rule (#2043) + - [react] add componentDidCatch to lifecycle for react/sort-comp (#2060) + - [react] add `react-hooks` plugin (#2022) + - [dev deps] update babel-related deps to latest + - [tests] only run tests in non-lint per-package travis job + - [tests] use `eclint` instead of `editorconfig-tools` + - [meta] add disabled config for new react and a11y rules + + +17.1.1 / 2019-07-01 +================== + - [patch] Turn off `react/no-multi-comp` (#2006) + - [patch] extend `no-underscore-dangle` to allow for redux dev tools in the main config instead (#1996) + - [meta] add disabled `jsx-fragments` rule + - [deps] update `eslint-config-airbnb-base`, `object.entries`, `eslint-plugin-import`, `eslint-plugin-react`, `eslint-plugin-jsx-a11y`, `babel-preset-airbnb`, `tape` (#2005, etc) + - [docs] correct JavaScript capitalization (#2046) + - [docs] fix docs for whitespace config (#1914, #1871) + - [readme] Improve eslint config setup instructions for yarn (#2001) + +17.1.0 / 2018-08-13 +================== +- [new] add eslint v5 support +- [minor] enable `label-has-associated-control` rule +- [patch] re-enabling `jsx-one-expression-per-line` allowing single children, ignore DOM components on `jsx-no-bind` +- [deps] update `eslint`, `eslint-config-airbnb-base`, `eslint-plugin-react`, `eslint-plugin-import`, `safe-publish-latest`, `eslint-plugin-jsx-a11y`, `eslint-find-rules` +- [docs] fix readme typo (#1855) + +17.0.0 / 2018-06-21 +================== +- [breaking] update `eslint-config-airbnb-base` to v13 +- [breaking] enable `no-useless-path-segments` (#1743) +- [breaking] update `eslint-plugin-react` to `v7.6`; update rule configs (#1737) +- [breaking] bump react pragma to v16; update `class-methods-use-this`'s `exceptMethods` to include `componentDidCatch` (#1704) +- [new] Adds config entry point with only whitespace rules enabled (#1749, #1751) +- [patch] set `forbid-foreign-prop-types` to "warn" +- [patch] Add new methods introduced in react@16.3 (#1831) +- [patch] `label-has-for`: Remove redundant component (#1802) +- [patch] Add 'to' as a specialLink to the 'anchor-is-valid' a11y rule (#1648) +- [patch] disable `no-did-mount-set-state`, since it’s necessary for server-rendering. +- [deps] update `eslint`, `eslint-plugin-react`, `eslint-plugin-import`, +- [dev deps] update `babel-preset-airbnb`, `tape`, `eslint-find-rules` +- [meta] add ES2015-2018 in npm package keywords (#1587) +- [meta] Add licenses to sub packages (#1746) +- [docs] add `npx` shortcut (#1694) +- [docs] Use HTTPS for links to ESLint documentation (#1628) + +16.1.0 / 2017-10-16 +================== +- [deps] update `eslint-config-airbnb-base`, `eslint` to v4.9 + +16.0.0 / 2017-10-06 +================== +- [breaking] [deps] require `eslint` `v4`, update `eslint-config-airbnb-base` +- [breaking] [deps] Upgrade `eslint-plugin-jsx-a11y` to `v6`; enable more a11y rules (#1482) +- [breaking] enable/add react rules: `react/jsx-curly-brace-presence`, `react/no-typos`, `react/no-unused-state`, `react/no-redundant-should-component-update`, `react/default-props-match-prop-types` +- [new] add `propWrapperFunctions` default settings for `eslint-plugin-react` +- [new] Enable `react/jsx-closing-tag-location` (#1533) +- [deps] update `eslint` v4, `eslint-plugin-react`, `tape` +- [docs] Specify yarn-specific install instructions (#1511) + +15.1.0 / 2017-07-24 +================== +- [deps] allow eslint v3 or v4 (#1447) +- [deps] update `eslint-plugin-import`, `eslint-config-airbnb-base` + +15.0.2 / 2017-07-04 +================== +- [fix] jsx should be enabled via parserOptions, not via a root ecmaFeatures +- [deps] update `babel-preset-airbnb`, `eslint-find-rules`, `eslint-plugin-import`, `eslint-plugin-jsx-a11y`, `eslint-plugin-react`, `tape` + +15.0.1 / 2017-05-15 +================== +- [fix] set default React version to 15.0 (#1415) + +15.0.0 / 2017-05-14 +================== +- [breaking] set default React version to 0.15 +- [breaking] `update eslint-plugin-jsx-a11y` to v5, enable new rules +- [breaking] `update eslint-plugin-react` to v7, enable new rules +- [minor] enable rules: `jsx-max-props-per-line`, `void-dom-elements-no-children` +- [patch] Turn `ignorePureComponents` option on for react/prefer-stateless-function (#1378, #1398) +- [deps] update `eslint`, `eslint-plugin-react`, `eslint-config-airbnb-base` + +14.1.0 / 2017-02-05 +================== +- [patch] allow `eslint-plugin-jsx-a11y` to be v3 or v4. Remove `no-marquee` rule temporarily. +- [deps] update `eslint-config-airbnb-base`, `babel-preset-airbnb`, `eslint` + +14.0.0 / 2017-01-08 +================== +- [breaking] enable `react/no-array-index-key`, `react/require-default-props` +- [breaking] [deps] update `eslint`, `eslint-plugin-import`, `eslint-plugin-react`, `eslint-config-airbnb-base` +- [breaking] [deps] update `eslint-plugin-jsx-a11y` to v3 (#1166) +- [docs] add note about `install-peerdeps` (#1234) +- [docs] Updated instructions to support non-bash users (#1214) + +13.0.0 / 2016-11-06 +================== +- [breaking] Enable `import/no-webpack-loader-syntax` rule (#1123) +- [patch] `class-methods-use-this`: exempt React `getChildContext` (#1094) +- [patch] set `react/no-unused-prop-types` skipShapeProps (#1099) +- [deps] [breaking] update `eslint`, `eslint-config-airbnb-base`, `eslint-plugin-jsx-a11y`, `eslint-plugin-react`, `eslint-plugin-import` +- [dev deps] update `babel-preset-airbnb`, `eslint`, `eslint-find-rules`, `tape`, `safe-publish-latest` +- [Tests] on `node` `v7` +- [docs] ensure latest version of config is installed (#1121) + +12.0.0 / 2016-09-24 +================== +- [breaking] Enable react rules: `react/no-unescaped-entities`, `react/no-children-prop` +- [breaking] [deps] update `eslint-config-airbnb-base` +- [patch] disable deprecated and redundant `react/require-extension` rule (#978) + +11.2.0 / 2016-09-23 +================== +- [new] set `ecmaVersion` to 2017; enable object rest/spread; update `babel-preset-airbnb` +- [deps] update `eslint`, `eslint-config-airbnb-base`, `eslint-plugin-import`, `eslint-plugin-jsx-a11y`, `eslint-plugin-react`, `eslint-find-rules`, `safe-publish-latest` + +11.1.0 / 2016-09-11 +================== +- [deps] update `eslint-config-airbnb-base`, `eslint` + +11.0.0 / 2016-09-08 +================== +- [breaking] enable `react` rules: `react/no-danger-with-children`, `react/no-unused-prop-types`, `react/style-prop-object`, `react/forbid-prop-types`, `react/jsx-no-duplicate-props`; set `react/no-danger` to “warn” +- [breaking] enable `jsx-a11y` rules: `jsx-a11y/anchor-has-content`, `jsx-a11y/tabindex-no-positive`, `jsx-a11y/no-static-element-interactions` +- [deps] update `eslint`, `eslint-plugin-react`, `eslint-config-airbnb-base`, `eslint-find-rules`, `eslint-plugin-import`, `eslint-plugin-jsx-a11y` +- [patch] set `ignoreCase` to `true` in disabled rules. +- [docs] use “#” in example command rather than version numbers (#984) + +10.0.1 / 2016-08-12 +================== +- [deps] update `eslint`, `eslint-find-rules`, `eslint-plugin-jsx-a11y`, `eslint-plugin-import`, `eslint-config-airbnb-base` + +10.0.0 / 2016-08-01 +================== +- [breaking] enable jsx-a11y rules: + - `jsx-a11y/heading-has-content` + - `jsx-a11y/html-has-lang` + - `jsx-a11y/lang` + - `jsx-a11y/no-marquee` + - `jsx-a11y/scope` + - `jsx-a11y/href-no-hash` + - `jsx-a11y/label-has-for` +- [breaking] enable aria rules: + - `jsx-a11y/aria-props` + - `jsx-a11y/aria-proptypes` + - `jsx-a11y/aria-unsupported-elements` + - `jsx-a11y/role-has-required-aria-props` + - `jsx-a11y/role-supports-aria-props` +- [breaking] enable react rules: + - `react/jsx-filename-extension` + - `react/jsx-no-comment-textnodes` + - `react/jsx-no-target-blank` + - `react/require-extension` + - `react/no-render-return-value` + - `react/no-find-dom-node` + - `react/no-deprecated` +- [deps] [breaking] update `eslint` to v3, `eslint-config-airbnb-base` to v5, `eslint-find-rules`, `eslint-plugin-import`, `eslint-plugin-jsx-a11y` to v2, `eslint-plugin-react` to v6, `tape`. drop node < 4 support. +- [deps] update `eslint-config-airbnb-base`, `eslint-plugin-react`, `eslint-plugin-import`, `eslint-plugin-jsx-a11y`, `babel-tape-runner`, add `babel-preset-airbnb`. ensure react is `>=` 0.13.0 +- [patch] loosen `jsx-pascal-case` rule to allow all caps component names +- [tests] stop testing < node 4 +- [tests] use `in-publish` because coffeescript screwed up the prepublish script for everyone +- [tests] Only run `eslint-find-rules` on prepublish, not in tests +- [tests] Even though the base config may not be up to date in the main package, let’s `npm link` the base package into the main one for the sake of travis-ci tests +- [docs] update the peer dep install command to dynamically look up the right version numbers when installing peer deps +- add `safe-publish-latest` to `prepublish` + +9.0.1 / 2016-05-08 +================== +- [patch] update `eslint-config-airbnb-base` to v3.0.1 + +9.0.0 / 2016-05-07 +================== +- [breaking] update `eslint-config-airbnb-base` to v3 +- [deps] update `eslint-find-rules`, `eslint-plugin-import`, `eslint-plugin-jsx-a11y` + +8.0.0 / 2016-04-21 +================== +- [breaking] Migrate non-React rules to a separate linter config (`eslint-config-airbnb-base`) +- [breaking] disallow empty methods +- [breaking] disallow empty restructuring patterns +- [breaking] enable `no-restricted-syntax` rule +- [breaking] enable `global-require` rule +- [breaking] [react] enable `react/jsx-curly-spacing` rule ([#693](https://github.com/airbnb/javascript/issues/693)) +- [semver-minor] [react] Add `react/jsx-first-prop-new-line` rule +- [semver-minor] [react] enable `jsx-equals-spacing` rule +- [semver-minor] [react] enable `jsx-indent` rule +- [semver-minor] enforce spacing inside single-line blocks +- [semver-minor] enforce `no-underscore-dangle` +- [semver-minor] Enable import/no-unresolved and import/export rules ([#825](https://github.com/airbnb/javascript/issues/825)) +- [semver-patch] Enable `no-useless-concat` rule which `prefer-template` already covers +- [semver-patch] Allow `== null` ([#542](https://github.com/airbnb/javascript/issues/542)) +- [dev deps / peer deps] update `eslint`, `eslint-plugin-react`, `eslint-plugin-import` +- [dev deps / peer deps] update `eslint-plugin-jsx-a11y` and rename rules ([#838](https://github.com/airbnb/javascript/issues/838)) +- [refactor] [react] separate a11y rules to their own file +- [refactor] Add missing disabled rules. +- [tests] Add `eslint-find-rules` to prevent missing rules + +7.0.0 / 2016-04-11 +================== +- [react] [breaking] Add accessibility rules to the React style guide + `eslint-plugin-a11y` +- [breaking] enable `react/require-render-return` +- [breaking] Add `no-dupe-class-members` rule + section ([#785](https://github.com/airbnb/javascript/issues/785)) +- [breaking] error on debugger statements +- [breaking] add `no-useless-escape` rule +- [breaking] add `no-duplicate-imports` rule +- [semver-minor] enable `jsx-pascal-case` rule +- [deps] update `eslint`, `react` +- [dev deps] update `eslint`, `eslint-plugin-react` + +6.2.0 / 2016-03-22 +================== +- [new] Allow arrow functions in JSX props +- [fix] re-enable `no-confusing-arrow` rule, with `allowParens` option enabled ([#752](https://github.com/airbnb/javascript/issues/752), [#791](https://github.com/airbnb/javascript/issues/791)) +- [dev deps] update `tape`, `eslint`, `eslint-plugin-react` +- [peer deps] update `eslint`, `eslint-plugin-react` + +6.1.0 / 2016-02-22 +================== +- [new] enable [`react/prefer-stateless-function`][react/prefer-stateless-function] +- [dev deps] update `react-plugin-eslint`, `eslint`, `tape` + +6.0.2 / 2016-02-22 +================== +- [fix] disable [`no-confusing-arrow`][no-confusing-arrow] due to an `eslint` bug ([#752](https://github.com/airbnb/javascript/issues/752)) + +6.0.1 / 2016-02-21 +================== +- [fix] disable [`newline-per-chained-call`][newline-per-chained-call] due to an `eslint` bug ([#748](https://github.com/airbnb/javascript/issues/748)) + +6.0.0 / 2016-02-21 +================== +- [breaking] enable [`array-callback-return`][array-callback-return] +- [breaking] enable [`no-confusing-arrow`][no-confusing-arrow] +- [breaking] enable [`no-new-symbol`][no-new-symbol] +- [breaking] enable [`no-restricted-imports`][no-restricted-imports] +- [breaking] enable [`no-useless-constructor`][no-useless-constructor] +- [breaking] enable [`prefer-rest-params`][prefer-rest-params] +- [breaking] enable [`template-curly-spacing`][template-curly-spacing] +- [breaking] enable [`newline-per-chained-call`][newline-per-chained-call] +- [breaking] enable [`one-var-declaration-per-line`][one-var-declaration-per-line] +- [breaking] enable [`no-self-assign`][no-self-assign] +- [breaking] enable [`no-whitespace-before-property`][no-whitespace-before-property] +- [breaking] [react] enable [`react/jsx-space-before-closing`][react/jsx-space-before-closing] +- [breaking] [react] enable `static-methods` at top of [`react/sort-comp`][react/sort-comp] +- [breaking] [react] don't `ignoreTranspilerName` for [`react/display-name`][react/display-name] +- [peer+dev deps] update `eslint`, `eslint-plugin-react` ([#730](https://github.com/airbnb/javascript/issues/730)) + +5.0.1 / 2016-02-13 +================== +- [fix] `eslint` peerDep should not include breaking changes + +5.0.0 / 2016-02-03 +================== +- [breaking] disallow unneeded ternary expressions +- [breaking] Avoid lexical declarations in case/default clauses +- [dev deps] update `babel-tape-runner`, `eslint-plugin-react`, `react`, `tape` + +4.0.0 / 2016-01-22 +================== +- [breaking] require outer IIFE wrapping; flesh out guide section +- [minor] Add missing [`arrow-body-style`][arrow-body-style], [`prefer-template`][prefer-template] rules ([#678](https://github.com/airbnb/javascript/issues/678)) +- [minor] Add [`prefer-arrow-callback`][prefer-arrow-callback] to ES6 rules (to match the guide) ([#677](https://github.com/airbnb/javascript/issues/677)) +- [Tests] run `npm run lint` as part of tests; fix errors +- [Tests] use `parallelshell` to parallelize npm run-scripts + +3.1.0 / 2016-01-07 +================== +- [minor] Allow multiple stateless components in a single file + +3.0.2 / 2016-01-06 +================== +- [fix] Ignore URLs in [`max-len`][max-len] ([#664](https://github.com/airbnb/javascript/issues/664)) + +3.0.1 / 2016-01-06 +================== +- [fix] because we use babel, keywords should not be quoted + +3.0.0 / 2016-01-04 +================== +- [breaking] enable [`quote-props`][quote-props] rule ([#632](https://github.com/airbnb/javascript/issues/632)) +- [breaking] Define a max line length of 100 characters ([#639](https://github.com/airbnb/javascript/issues/639)) +- [breaking] [react] Minor cleanup for the React styleguide, add [`react/jsx-no-bind`][react/jsx-no-bind] ([#619](https://github.com/airbnb/javascript/issues/619)) +- [breaking] update best-practices config to prevent parameter object manipulation ([#627](https://github.com/airbnb/javascript/issues/627)) +- [minor] Enable [`react/no-is-mounted`][react/no-is-mounted] rule (#635, #633) +- [minor] Sort [`react/prefer-es6-class`][react/prefer-es6-class] alphabetically ([#634](https://github.com/airbnb/javascript/issues/634)) +- [minor] enable [`react/prefer-es6-class`][react/prefer-es6-class] rule +- Permit strict mode in "legacy" config +- [react] add missing rules from `eslint-plugin-react` (enforcing where necessary) ([#581](https://github.com/airbnb/javascript/issues/581)) +- [dev deps] update `eslint-plugin-react` + +2.1.1 / 2015-12-15 +================== +- [fix] Remove deprecated [`react/jsx-quotes`][react/jsx-quotes] ([#622](https://github.com/airbnb/javascript/issues/622)) + +2.1.0 / 2015-12-15 +================== +- [fix] use `require.resolve` to allow nested `extend`s ([#582](https://github.com/airbnb/javascript/issues/582)) +- [new] enable [`object-shorthand`][object-shorthand] rule ([#621](https://github.com/airbnb/javascript/issues/621)) +- [new] enable [`arrow-spacing`][arrow-spacing] rule ([#517](https://github.com/airbnb/javascript/issues/517)) +- [docs] flesh out react rule defaults ([#618](https://github.com/airbnb/javascript/issues/618)) + +2.0.0 / 2015-12-03 +================== +- [breaking] [`space-before-function-paren`][space-before-function-paren]: require function spacing: `function (` ([#605](https://github.com/airbnb/javascript/issues/605)) +- [breaking] [`indent`][indent]: Fix switch statement indentation rule ([#606](https://github.com/airbnb/javascript/issues/606)) +- [breaking] [`array-bracket-spacing`][array-bracket-spacing], [`computed-property-spacing`][computed-property-spacing]: disallow spacing inside brackets ([#594](https://github.com/airbnb/javascript/issues/594)) +- [breaking] [`object-curly-spacing`][object-curly-spacing]: require padding inside curly braces ([#594](https://github.com/airbnb/javascript/issues/594)) +- [breaking] [`space-in-parens`][space-in-parens]: disallow spaces in parens ([#594](https://github.com/airbnb/javascript/issues/594)) + +1.0.2 / 2015-11-25 +================== +- [breaking] [`no-multiple-empty-lines`][no-multiple-empty-lines]: only allow 1 blank line at EOF ([#578](https://github.com/airbnb/javascript/issues/578)) +- [new] `restParams`: enable rest params ([#592](https://github.com/airbnb/javascript/issues/592)) + +1.0.1 / 2015-11-25 +================== +- *erroneous publish* + +1.0.0 / 2015-11-08 +================== +- require `eslint` `v1.0.0` or higher +- remove `babel-eslint` dependency + +0.1.1 / 2015-11-05 +================== +- remove [`id-length`][id-length] rule ([#569](https://github.com/airbnb/javascript/issues/569)) +- enable [`no-mixed-spaces-and-tabs`][no-mixed-spaces-and-tabs] ([#539](https://github.com/airbnb/javascript/issues/539)) +- enable [`no-const-assign`][no-const-assign] ([#560](https://github.com/airbnb/javascript/issues/560)) +- enable [`space-before-keywords`][space-before-keywords] ([#554](https://github.com/airbnb/javascript/issues/554)) + +0.1.0 / 2015-11-05 +================== +- switch to modular rules files courtesy the [eslint-config-default][ecd] project and [@taion][taion]. [PR][pr-modular] +- export `eslint-config-airbnb/legacy` for ES5-only users. `eslint-config-airbnb/legacy` does not require the `babel-eslint` parser. [PR][pr-legacy] + +0.0.9 / 2015-09-24 +================== +- add rule [`no-undef`][no-undef] +- add rule [`id-length`][id-length] + +0.0.8 / 2015-08-21 +================== +- now has a changelog +- now is modular (see instructions above for with react and without react versions) + +0.0.7 / 2015-07-30 +================== +- TODO: fill in + + +[ecd]: https://github.com/walmartlabs/eslint-config-defaults +[taion]: https://github.com/taion +[pr-modular]: https://github.com/airbnb/javascript/pull/526 +[pr-legacy]: https://github.com/airbnb/javascript/pull/527 + +[array-bracket-spacing]: https://eslint.org/docs/rules/array-bracket-spacing +[array-callback-return]: https://eslint.org/docs/rules/array-callback-return +[arrow-body-style]: https://eslint.org/docs/rules/arrow-body-style +[arrow-spacing]: https://eslint.org/docs/rules/arrow-spacing +[computed-property-spacing]: https://eslint.org/docs/rules/computed-property-spacing +[id-length]: https://eslint.org/docs/rules/id-length +[indent]: https://eslint.org/docs/rules/indent +[max-len]: https://eslint.org/docs/rules/max-len +[newline-per-chained-call]: https://eslint.org/docs/rules/newline-per-chained-call +[no-confusing-arrow]: https://eslint.org/docs/rules/no-confusing-arrow +[no-const-assign]: https://eslint.org/docs/rules/no-const-assign +[no-mixed-spaces-and-tabs]: https://eslint.org/docs/rules/no-mixed-spaces-and-tabs +[no-multiple-empty-lines]: https://eslint.org/docs/rules/no-multiple-empty-lines +[no-new-symbol]: https://eslint.org/docs/rules/no-new-symbol +[no-restricted-imports]: https://eslint.org/docs/rules/no-restricted-imports +[no-self-assign]: https://eslint.org/docs/rules/no-self-assign +[no-undef]: https://eslint.org/docs/rules/no-undef +[no-useless-constructor]: https://eslint.org/docs/rules/no-useless-constructor +[no-whitespace-before-property]: https://eslint.org/docs/rules/no-whitespace-before-property +[object-curly-spacing]: https://eslint.org/docs/rules/object-curly-spacing +[object-shorthand]: https://eslint.org/docs/rules/object-shorthand +[one-var-declaration-per-line]: https://eslint.org/docs/rules/one-var-declaration-per-line +[prefer-arrow-callback]: https://eslint.org/docs/rules/prefer-arrow-callback +[prefer-rest-params]: https://eslint.org/docs/rules/prefer-rest-params +[prefer-template]: https://eslint.org/docs/rules/prefer-template +[quote-props]: https://eslint.org/docs/rules/quote-props +[space-before-function-paren]: https://eslint.org/docs/rules/space-before-function-paren +[space-before-keywords]: https://eslint.org/docs/rules/space-before-keywords +[space-in-parens]: https://eslint.org/docs/rules/space-in-parens +[template-curly-spacing]: https://eslint.org/docs/rules/template-curly-spacing + +[react/jsx-space-before-closing]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-space-before-closing.md +[react/sort-comp]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/sort-comp.md +[react/display-name]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/display-name.md +[react/jsx-no-bind]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md +[react/no-is-mounted]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md +[react/prefer-es6-class]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md +[react/jsx-quotes]: https://github.com/yannickcr/eslint-plugin-react/blob/f817e37beddddc84b4788969f07c524fa7f0823b/docs/rules/jsx-quotes.md +[react/prefer-stateless-function]: https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/LICENSE.md b/tic-tac-toe-app/node_modules/eslint-config-airbnb/LICENSE.md new file mode 100644 index 0000000..69d80c0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012 Airbnb + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/README.md b/tic-tac-toe-app/node_modules/eslint-config-airbnb/README.md new file mode 100644 index 0000000..94e4ac5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/README.md @@ -0,0 +1,85 @@ +# eslint-config-airbnb + +[![npm version](https://badge.fury.io/js/eslint-config-airbnb.svg)](http://badge.fury.io/js/eslint-config-airbnb) + +This package provides Airbnb's .eslintrc as an extensible shared config. + +## Usage + +We export three ESLint configurations for your usage. + +### eslint-config-airbnb + +Our default export contains all of our ESLint rules, including ECMAScript 6+ and React. It requires `eslint`, `eslint-plugin-import`, `eslint-plugin-react`, `eslint-plugin-react-hooks`, and `eslint-plugin-jsx-a11y`. If you don't need React, see [eslint-config-airbnb-base](https://npmjs.com/eslint-config-airbnb-base). + +1. Install the correct versions of each package, which are listed by the command: + + ```sh + npm info "eslint-config-airbnb@latest" peerDependencies + ``` + + If using **npm 5+**, use this shortcut + + ```sh + npx install-peerdeps --dev eslint-config-airbnb + ``` + + If using **yarn**, you can also use the shortcut described above if you have npm 5+ installed on your machine, as the command will detect that you are using yarn and will act accordingly. + Otherwise, run `npm info "eslint-config-airbnb@latest" peerDependencies` to list the peer dependencies and versions, then run `yarn add --dev @` for each listed peer dependency. + + If using **npm < 5**, Linux/OSX users can run + + ```sh + ( + export PKG=eslint-config-airbnb; + npm info "$PKG@latest" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG@latest" + ) + ``` + + Which produces and runs a command like: + + ```sh + npm install --save-dev eslint-config-airbnb eslint@^#.#.# eslint-plugin-jsx-a11y@^#.#.# eslint-plugin-import@^#.#.# eslint-plugin-react@^#.#.# eslint-plugin-react-hooks@^#.#.# + ``` + + If using **npm < 5**, Windows users can either install all the peer dependencies manually, or use the [install-peerdeps](https://github.com/nathanhleung/install-peerdeps) cli tool. + + ```sh + npm install -g install-peerdeps + install-peerdeps --dev eslint-config-airbnb + ``` + The cli will produce and run a command like: + + ```sh + npm install --save-dev eslint-config-airbnb eslint@^#.#.# eslint-plugin-jsx-a11y@^#.#.# eslint-plugin-import@^#.#.# eslint-plugin-react@^#.#.# eslint-plugin-react-hooks@^#.#.# + ``` + +2. Add `"extends": "airbnb"` to your `.eslintrc` + +### eslint-config/airbnb/hooks + +This entry point enables the linting rules for React hooks (requires v16.8+). To use, add `"extends": ["airbnb", "airbnb/hooks"]` to your `.eslintrc` + +### eslint-config-airbnb/whitespace + +This entry point only errors on whitespace rules and sets all other rules to warnings. View the list of whitespace rules [here](https://github.com/airbnb/javascript/blob/master/packages/eslint-config-airbnb/whitespace.js). + +### eslint-config-airbnb/base + +This entry point is deprecated. See [eslint-config-airbnb-base](https://npmjs.com/eslint-config-airbnb-base). + +### eslint-config-airbnb/legacy + +This entry point is deprecated. See [eslint-config-airbnb-base](https://npmjs.com/eslint-config-airbnb-base). + +See [Airbnb's JavaScript styleguide](https://github.com/airbnb/javascript) and +the [ESlint config docs](https://eslint.org/docs/user-guide/configuring#extending-configuration-files) +for more information. + +## Improving this config + +Consider adding test cases if you're making complicated rules changes, like anything involving regexes. Perhaps in a distant future, we could use literate programming to structure our README as test cases for our .eslintrc? + +You can run tests with `npm test`. + +You can make sure this module lints with itself using `npm run lint`. diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/base.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/base.js new file mode 100644 index 0000000..bb1ea39 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/base.js @@ -0,0 +1,4 @@ +module.exports = { + extends: ['eslint-config-airbnb-base'].map(require.resolve), + rules: {}, +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/hooks.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/hooks.js new file mode 100644 index 0000000..a7f7028 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/hooks.js @@ -0,0 +1,6 @@ +module.exports = { + extends: [ + './rules/react-hooks.js', + ].map(require.resolve), + rules: {} +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/index.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/index.js new file mode 100644 index 0000000..6432e10 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/index.js @@ -0,0 +1,8 @@ +module.exports = { + extends: [ + 'eslint-config-airbnb-base', + './rules/react', + './rules/react-a11y', + ].map(require.resolve), + rules: {} +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/legacy.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/legacy.js new file mode 100644 index 0000000..e88f712 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/legacy.js @@ -0,0 +1,4 @@ +module.exports = { + extends: ['eslint-config-airbnb-base/legacy'].map(require.resolve), + rules: {}, +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/package.json b/tic-tac-toe-app/node_modules/eslint-config-airbnb/package.json new file mode 100644 index 0000000..2b0d0e6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/package.json @@ -0,0 +1,115 @@ +{ + "_from": "eslint-config-airbnb@^18.1.0", + "_id": "eslint-config-airbnb@18.1.0", + "_inBundle": false, + "_integrity": "sha512-kZFuQC/MPnH7KJp6v95xsLBf63G/w7YqdPfQ0MUanxQ7zcKUNG8j+sSY860g3NwCBOa62apw16J6pRN+AOgXzw==", + "_location": "/eslint-config-airbnb", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "eslint-config-airbnb@^18.1.0", + "name": "eslint-config-airbnb", + "escapedName": "eslint-config-airbnb", + "rawSpec": "^18.1.0", + "saveSpec": null, + "fetchSpec": "^18.1.0" + }, + "_requiredBy": [ + "#DEV:/" + ], + "_resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-18.1.0.tgz", + "_shasum": "724d7e93dadd2169492ff5363c5aaa779e01257d", + "_spec": "eslint-config-airbnb@^18.1.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app", + "author": { + "name": "Jake Teton-Landis", + "url": "https://twitter.com/@jitl" + }, + "bugs": { + "url": "https://github.com/airbnb/javascript/issues" + }, + "bundleDependencies": false, + "contributors": [ + { + "name": "Jake Teton-Landis", + "url": "https://twitter.com/jitl" + }, + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + { + "name": "Harrison Shoff", + "url": "https://twitter.com/hshoff" + } + ], + "dependencies": { + "eslint-config-airbnb-base": "^14.1.0", + "object.assign": "^4.1.0", + "object.entries": "^1.1.1" + }, + "deprecated": false, + "description": "Airbnb's ESLint config, following our styleguide", + "devDependencies": { + "@babel/runtime": "^7.8.7", + "babel-preset-airbnb": "^4.4.0", + "babel-tape-runner": "^3.0.0", + "eclint": "^2.8.1", + "eslint": "^5.16.0 || ^6.8.0", + "eslint-find-rules": "^3.4.0", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-react-hooks": "^2.5.0 || ^1.7.0", + "in-publish": "^2.0.0", + "react": ">= 0.13.0", + "safe-publish-latest": "^1.1.4", + "tape": "^5.0.0-next.4" + }, + "engines": { + "node": ">= 6" + }, + "homepage": "https://github.com/airbnb/javascript", + "keywords": [ + "eslint", + "eslintconfig", + "config", + "airbnb", + "javascript", + "styleguide", + "es2015", + "es2016", + "es2017", + "es2018" + ], + "license": "MIT", + "main": "index.js", + "name": "eslint-config-airbnb", + "peerDependencies": { + "eslint": "^5.16.0 || ^6.8.0", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.19.0", + "eslint-plugin-react-hooks": "^2.5.0 || ^1.7.0" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/airbnb/javascript.git" + }, + "scripts": { + "link:eslint": "cd node_modules/eslint && npm link --production && cd -", + "lint": "eslint .", + "posttravis": "npm unlink --no-save eslint-config-airbnb-base eslint >/dev/null &", + "prelint": "eclint check * rules/* test/*", + "prepublish": "(in-install || eslint-find-rules --unused) && (not-in-publish || npm test) && safe-publish-latest", + "pretest": "npm run --silent lint", + "pretests-only": "node ./test/requires", + "pretravis": "npm run link:eslint && cd ../eslint-config-airbnb-base && npm link eslint && npm install && npm link && cd - && npm link --no-save eslint-config-airbnb-base", + "test": "npm run --silent tests-only", + "tests-only": "babel-tape-runner ./test/test-*.js", + "travis": "npm run --silent tests-only" + }, + "version": "18.1.0" +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-a11y.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-a11y.js new file mode 100644 index 0000000..69cf63b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-a11y.js @@ -0,0 +1,240 @@ +module.exports = { + plugins: [ + 'jsx-a11y', + 'react' + ], + + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + + rules: { + // Enforce that anchors have content + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/anchor-has-content.md + 'jsx-a11y/anchor-has-content': ['error', { components: [] }], + + // Require ARIA roles to be valid and non-abstract + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-role.md + 'jsx-a11y/aria-role': ['error', { ignoreNonDom: false }], + + // Enforce all aria-* props are valid. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-props.md + 'jsx-a11y/aria-props': 'error', + + // Enforce ARIA state and property values are valid. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-proptypes.md + 'jsx-a11y/aria-proptypes': 'error', + + // Enforce that elements that do not support ARIA roles, states, and + // properties do not have those attributes. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-unsupported-elements.md + 'jsx-a11y/aria-unsupported-elements': 'error', + + // Enforce that all elements that require alternative text have meaningful information + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/alt-text.md + 'jsx-a11y/alt-text': ['error', { + elements: ['img', 'object', 'area', 'input[type="image"]'], + img: [], + object: [], + area: [], + 'input[type="image"]': [], + }], + + // Prevent img alt text from containing redundant words like "image", "picture", or "photo" + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/img-redundant-alt.md + 'jsx-a11y/img-redundant-alt': 'error', + + // require that JSX labels use "htmlFor" + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/label-has-for.md + // deprecated: replaced by `label-has-associated-control` rule + 'jsx-a11y/label-has-for': ['off', { + components: [], + required: { + every: ['nesting', 'id'], + }, + allowChildren: false, + }], + + // Enforce that a label tag has a text label and an associated control. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/b800f40a2a69ad48015ae9226fbe879f946757ed/docs/rules/label-has-associated-control.md + 'jsx-a11y/label-has-associated-control': ['error', { + labelComponents: [], + labelAttributes: [], + controlComponents: [], + assert: 'both', + depth: 25 + }], + + // Enforce that a control (an interactive element) has a text label. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/control-has-associated-label.md + 'jsx-a11y/control-has-associated-label': ['error', { + labelAttributes: ['label'], + controlComponents: [], + ignoreElements: [ + 'audio', + 'canvas', + 'embed', + 'input', + 'textarea', + 'tr', + 'video', + ], + ignoreRoles: [ + 'grid', + 'listbox', + 'menu', + 'menubar', + 'radiogroup', + 'row', + 'tablist', + 'toolbar', + 'tree', + 'treegrid', + ], + depth: 5, + }], + + // require that mouseover/out come with focus/blur, for keyboard-only users + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/mouse-events-have-key-events.md + 'jsx-a11y/mouse-events-have-key-events': 'error', + + // Prevent use of `accessKey` + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-access-key.md + 'jsx-a11y/no-access-key': 'error', + + // require onBlur instead of onChange + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-onchange.md + 'jsx-a11y/no-onchange': 'off', + + // Elements with an interactive role and interaction handlers must be focusable + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/interactive-supports-focus.md + 'jsx-a11y/interactive-supports-focus': 'error', + + // Enforce that elements with ARIA roles must have all required attributes + // for that role. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/role-has-required-aria-props.md + 'jsx-a11y/role-has-required-aria-props': 'error', + + // Enforce that elements with explicit or implicit roles defined contain + // only aria-* properties supported by that role. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/role-supports-aria-props.md + 'jsx-a11y/role-supports-aria-props': 'error', + + // Enforce tabIndex value is not greater than zero. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/tabindex-no-positive.md + 'jsx-a11y/tabindex-no-positive': 'error', + + // ensure tags have content and are not aria-hidden + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/heading-has-content.md + 'jsx-a11y/heading-has-content': ['error', { components: [''] }], + + // require HTML elements to have a "lang" prop + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/html-has-lang.md + 'jsx-a11y/html-has-lang': 'error', + + // require HTML element's lang prop to be valid + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/lang.md + 'jsx-a11y/lang': 'error', + + // prevent distracting elements, like and + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-distracting-elements.md + 'jsx-a11y/no-distracting-elements': ['error', { + elements: ['marquee', 'blink'], + }], + + // only allow to have the "scope" attr + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/scope.md + 'jsx-a11y/scope': 'error', + + // require onClick be accompanied by onKeyUp/onKeyDown/onKeyPress + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/click-events-have-key-events.md + 'jsx-a11y/click-events-have-key-events': 'error', + + // Enforce that DOM elements without semantic behavior not have interaction handlers + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-static-element-interactions.md + 'jsx-a11y/no-static-element-interactions': ['error', { + handlers: [ + 'onClick', + 'onMouseDown', + 'onMouseUp', + 'onKeyPress', + 'onKeyDown', + 'onKeyUp', + ] + }], + + // A non-interactive element does not support event handlers (mouse and key handlers) + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-noninteractive-element-interactions.md + 'jsx-a11y/no-noninteractive-element-interactions': ['error', { + handlers: [ + 'onClick', + 'onMouseDown', + 'onMouseUp', + 'onKeyPress', + 'onKeyDown', + 'onKeyUp', + ] + }], + + // ensure emoji are accessible + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/accessible-emoji.md + 'jsx-a11y/accessible-emoji': 'error', + + // elements with aria-activedescendant must be tabbable + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/aria-activedescendant-has-tabindex.md + 'jsx-a11y/aria-activedescendant-has-tabindex': 'error', + + // ensure iframe elements have a unique title + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/iframe-has-title.md + 'jsx-a11y/iframe-has-title': 'error', + + // prohibit autoFocus prop + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md + 'jsx-a11y/no-autofocus': ['error', { ignoreNonDOM: true }], + + // ensure HTML elements do not specify redundant ARIA roles + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-redundant-roles.md + 'jsx-a11y/no-redundant-roles': 'error', + + // media elements must have captions + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/media-has-caption.md + 'jsx-a11y/media-has-caption': ['error', { + audio: [], + video: [], + track: [], + }], + + // WAI-ARIA roles should not be used to convert an interactive element to non-interactive + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-interactive-element-to-noninteractive-role.md + 'jsx-a11y/no-interactive-element-to-noninteractive-role': ['error', { + tr: ['none', 'presentation'], + }], + + // WAI-ARIA roles should not be used to convert a non-interactive element to interactive + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-noninteractive-element-to-interactive-role.md + 'jsx-a11y/no-noninteractive-element-to-interactive-role': ['error', { + ul: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + ol: ['listbox', 'menu', 'menubar', 'radiogroup', 'tablist', 'tree', 'treegrid'], + li: ['menuitem', 'option', 'row', 'tab', 'treeitem'], + table: ['grid'], + td: ['gridcell'], + }], + + // Tab key navigation should be limited to elements on the page that can be interacted with. + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-noninteractive-tabindex.md + 'jsx-a11y/no-noninteractive-tabindex': ['error', { + tags: [], + roles: ['tabpanel'], + }], + + // ensure tags are valid + // https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/0745af376cdc8686d85a361ce36952b1fb1ccf6e/docs/rules/anchor-is-valid.md + 'jsx-a11y/anchor-is-valid': ['error', { + components: ['Link'], + specialLink: ['to'], + aspects: ['noHref', 'invalidHref', 'preferButton'], + }], + }, +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-hooks.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-hooks.js new file mode 100644 index 0000000..be17c9a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react-hooks.js @@ -0,0 +1,21 @@ +module.exports = { + plugins: [ + 'react-hooks', + ], + + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + + rules: { + // Enforce Rules of Hooks + // https://github.com/facebook/react/blob/c11015ff4f610ac2924d1fc6d569a17657a404fd/packages/eslint-plugin-react-hooks/src/RulesOfHooks.js + 'react-hooks/rules-of-hooks': 'error', + + // Verify the list of the dependencies for Hooks like useEffect and similar + // https://github.com/facebook/react/blob/1204c789776cb01fbaf3e9f032e7e2ba85a44137/packages/eslint-plugin-react-hooks/src/ExhaustiveDeps.js + 'react-hooks/exhaustive-deps': 'error', + }, +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react.js new file mode 100644 index 0000000..e712f0d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/rules/react.js @@ -0,0 +1,550 @@ +const assign = require('object.assign'); +const baseStyleRules = require('eslint-config-airbnb-base/rules/style').rules; + +const dangleRules = baseStyleRules['no-underscore-dangle']; + +module.exports = { + plugins: [ + 'react', + ], + + parserOptions: { + ecmaFeatures: { + jsx: true, + }, + }, + + // View link below for react rules documentation + // https://github.com/yannickcr/eslint-plugin-react#list-of-supported-rules + rules: { + 'no-underscore-dangle': [dangleRules[0], assign({}, dangleRules[1], { + allow: dangleRules[1].allow.concat(['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__']), + })], + + // Specify whether double or single quotes should be used in JSX attributes + // https://eslint.org/docs/rules/jsx-quotes + 'jsx-quotes': ['error', 'prefer-double'], + + 'class-methods-use-this': ['error', { + exceptMethods: [ + 'render', + 'getInitialState', + 'getDefaultProps', + 'getChildContext', + 'componentWillMount', + 'UNSAFE_componentWillMount', + 'componentDidMount', + 'componentWillReceiveProps', + 'UNSAFE_componentWillReceiveProps', + 'shouldComponentUpdate', + 'componentWillUpdate', + 'UNSAFE_componentWillUpdate', + 'componentDidUpdate', + 'componentWillUnmount', + 'componentDidCatch', + 'getSnapshotBeforeUpdate' + ], + }], + + // Prevent missing displayName in a React component definition + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/display-name.md + 'react/display-name': ['off', { ignoreTranspilerName: false }], + + // Forbid certain propTypes (any, array, object) + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/forbid-prop-types.md + 'react/forbid-prop-types': ['error', { + forbid: ['any', 'array', 'object'], + checkContextTypes: true, + checkChildContextTypes: true, + }], + + // Forbid certain props on DOM Nodes + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/forbid-dom-props.md + 'react/forbid-dom-props': ['off', { forbid: [] }], + + // Enforce boolean attributes notation in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-boolean-value.md + 'react/jsx-boolean-value': ['error', 'never', { always: [] }], + + // Validate closing bracket location in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-bracket-location.md + 'react/jsx-closing-bracket-location': ['error', 'line-aligned'], + + // Validate closing tag location in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-closing-tag-location.md + 'react/jsx-closing-tag-location': 'error', + + // Enforce or disallow spaces inside of curly braces in JSX attributes + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-spacing.md + 'react/jsx-curly-spacing': ['error', 'never', { allowMultiline: true }], + + // Enforce event handler naming conventions in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-handler-names.md + 'react/jsx-handler-names': ['off', { + eventHandlerPrefix: 'handle', + eventHandlerPropPrefix: 'on', + }], + + // Validate props indentation in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-indent-props.md + 'react/jsx-indent-props': ['error', 2], + + // Validate JSX has key prop when in array or iterator + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-key.md + 'react/jsx-key': 'off', + + // Limit maximum of props on a single line in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-max-props-per-line.md + 'react/jsx-max-props-per-line': ['error', { maximum: 1, when: 'multiline' }], + + // Prevent usage of .bind() in JSX props + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-bind.md + 'react/jsx-no-bind': ['error', { + ignoreRefs: true, + allowArrowFunctions: true, + allowFunctions: false, + allowBind: false, + ignoreDOMComponents: true, + }], + + // Prevent duplicate props in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-duplicate-props.md + 'react/jsx-no-duplicate-props': ['error', { ignoreCase: true }], + + // Prevent usage of unwrapped JSX strings + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-literals.md + 'react/jsx-no-literals': ['off', { noStrings: true }], + + // Disallow undeclared variables in JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-undef.md + 'react/jsx-no-undef': 'error', + + // Enforce PascalCase for user-defined JSX components + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-pascal-case.md + 'react/jsx-pascal-case': ['error', { + allowAllCaps: true, + ignore: [], + }], + + // Enforce propTypes declarations alphabetical sorting + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/sort-prop-types.md + 'react/sort-prop-types': ['off', { + ignoreCase: true, + callbacksLast: false, + requiredFirst: false, + sortShapeProp: true, + }], + + // Deprecated in favor of react/jsx-sort-props + 'react/jsx-sort-prop-types': 'off', + + // Enforce props alphabetical sorting + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-sort-props.md + 'react/jsx-sort-props': ['off', { + ignoreCase: true, + callbacksLast: false, + shorthandFirst: false, + shorthandLast: false, + noSortAlphabetically: false, + reservedFirst: true, + }], + + // Enforce defaultProps declarations alphabetical sorting + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/jsx-sort-default-props.md + 'react/jsx-sort-default-props': ['off', { + ignoreCase: true, + }], + + // Prevent React to be incorrectly marked as unused + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-uses-react.md + 'react/jsx-uses-react': ['error'], + + // Prevent variables used in JSX to be incorrectly marked as unused + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-uses-vars.md + 'react/jsx-uses-vars': 'error', + + // Prevent usage of dangerous JSX properties + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-danger.md + 'react/no-danger': 'warn', + + // Prevent usage of deprecated methods + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-deprecated.md + 'react/no-deprecated': ['error'], + + // Prevent usage of setState in componentDidMount + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-did-mount-set-state.md + // this is necessary for server-rendering + 'react/no-did-mount-set-state': 'off', + + // Prevent usage of setState in componentDidUpdate + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-did-update-set-state.md + 'react/no-did-update-set-state': 'error', + + // Prevent usage of setState in componentWillUpdate + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-will-update-set-state.md + 'react/no-will-update-set-state': 'error', + + // Prevent direct mutation of this.state + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-direct-mutation-state.md + 'react/no-direct-mutation-state': 'off', + + // Prevent usage of isMounted + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-is-mounted.md + 'react/no-is-mounted': 'error', + + // Prevent multiple component definition per file + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-multi-comp.md + 'react/no-multi-comp': 'off', + + // Prevent usage of setState + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-set-state.md + 'react/no-set-state': 'off', + + // Prevent using string references + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-string-refs.md + 'react/no-string-refs': 'error', + + // Prevent usage of unknown DOM property + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md + 'react/no-unknown-property': 'error', + + // Require ES6 class declarations over React.createClass + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-es6-class.md + 'react/prefer-es6-class': ['error', 'always'], + + // Require stateless functions when not using lifecycle methods, setState or ref + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-stateless-function.md + 'react/prefer-stateless-function': ['error', { ignorePureComponents: true }], + + // Prevent missing props validation in a React component definition + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prop-types.md + 'react/prop-types': ['error', { + ignore: [], + customValidators: [], + skipUndeclared: false + }], + + // Prevent missing React when using JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/react-in-jsx-scope.md + 'react/react-in-jsx-scope': 'error', + + // Require render() methods to return something + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/require-render-return.md + 'react/require-render-return': 'error', + + // Prevent extra closing tags for components without children + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/self-closing-comp.md + 'react/self-closing-comp': 'error', + + // Enforce component methods order + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/sort-comp.md + 'react/sort-comp': ['error', { + order: [ + 'static-variables', + 'static-methods', + 'instance-variables', + 'lifecycle', + '/^on.+$/', + 'getters', + 'setters', + '/^(get|set)(?!(InitialState$|DefaultProps$|ChildContext$)).+$/', + 'instance-methods', + 'everything-else', + 'rendering', + ], + groups: { + lifecycle: [ + 'displayName', + 'propTypes', + 'contextTypes', + 'childContextTypes', + 'mixins', + 'statics', + 'defaultProps', + 'constructor', + 'getDefaultProps', + 'getInitialState', + 'state', + 'getChildContext', + 'getDerivedStateFromProps', + 'componentWillMount', + 'UNSAFE_componentWillMount', + 'componentDidMount', + 'componentWillReceiveProps', + 'UNSAFE_componentWillReceiveProps', + 'shouldComponentUpdate', + 'componentWillUpdate', + 'UNSAFE_componentWillUpdate', + 'getSnapshotBeforeUpdate', + 'componentDidUpdate', + 'componentDidCatch', + 'componentWillUnmount' + ], + rendering: [ + '/^render.+$/', + 'render' + ], + }, + }], + + // Prevent missing parentheses around multilines JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/jsx-wrap-multilines.md + 'react/jsx-wrap-multilines': ['error', { + declaration: 'parens-new-line', + assignment: 'parens-new-line', + return: 'parens-new-line', + arrow: 'parens-new-line', + condition: 'parens-new-line', + logical: 'parens-new-line', + prop: 'parens-new-line', + }], + + // Require that the first prop in a JSX element be on a new line when the element is multiline + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-first-prop-new-line.md + 'react/jsx-first-prop-new-line': ['error', 'multiline-multiprop'], + + // Enforce spacing around jsx equals signs + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-equals-spacing.md + 'react/jsx-equals-spacing': ['error', 'never'], + + // Enforce JSX indentation + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-indent.md + 'react/jsx-indent': ['error', 2], + + // Disallow target="_blank" on links + // https://github.com/yannickcr/eslint-plugin-react/blob/ac102885765be5ff37847a871f239c6703e1c7cc/docs/rules/jsx-no-target-blank.md + 'react/jsx-no-target-blank': ['error', { enforceDynamicLinks: 'always' }], + + // only .jsx files may have JSX + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-filename-extension.md + 'react/jsx-filename-extension': ['error', { extensions: ['.jsx'] }], + + // prevent accidental JS comments from being injected into JSX as text + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-comment-textnodes.md + 'react/jsx-no-comment-textnodes': 'error', + + // disallow using React.render/ReactDOM.render's return value + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-render-return-value.md + 'react/no-render-return-value': 'error', + + // require a shouldComponentUpdate method, or PureRenderMixin + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/require-optimization.md + 'react/require-optimization': ['off', { allowDecorators: [] }], + + // warn against using findDOMNode() + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-find-dom-node.md + 'react/no-find-dom-node': 'error', + + // Forbid certain props on Components + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/forbid-component-props.md + 'react/forbid-component-props': ['off', { forbid: [] }], + + // Forbid certain elements + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/forbid-elements.md + 'react/forbid-elements': ['off', { forbid: [], }], + + // Prevent problem with children and props.dangerouslySetInnerHTML + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-danger-with-children.md + 'react/no-danger-with-children': 'error', + + // Prevent unused propType definitions + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unused-prop-types.md + 'react/no-unused-prop-types': ['error', { + customValidators: [ + ], + skipShapeProps: true, + }], + + // Require style prop value be an object or var + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/style-prop-object.md + 'react/style-prop-object': 'error', + + // Prevent invalid characters from appearing in markup + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-unescaped-entities.md + 'react/no-unescaped-entities': 'error', + + // Prevent passing of children as props + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-children-prop.md + 'react/no-children-prop': 'error', + + // Validate whitespace in and around the JSX opening and closing brackets + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/jsx-tag-spacing.md + 'react/jsx-tag-spacing': ['error', { + closingSlash: 'never', + beforeSelfClosing: 'always', + afterOpening: 'never', + beforeClosing: 'never', + }], + + // Enforce spaces before the closing bracket of self-closing JSX elements + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-space-before-closing.md + // Deprecated in favor of jsx-tag-spacing + 'react/jsx-space-before-closing': ['off', 'always'], + + // Prevent usage of Array index in keys + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md + 'react/no-array-index-key': 'error', + + // Enforce a defaultProps definition for every prop that is not a required prop + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/require-default-props.md + 'react/require-default-props': ['error', { + forbidDefaultForRequired: true, + }], + + // Forbids using non-exported propTypes + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/forbid-foreign-prop-types.md + // this is intentionally set to "warn". it would be "error", + // but it's only critical if you're stripping propTypes in production. + 'react/forbid-foreign-prop-types': ['warn', { allowInPropTypes: true }], + + // Prevent void DOM elements from receiving children + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/void-dom-elements-no-children.md + 'react/void-dom-elements-no-children': 'error', + + // Enforce all defaultProps have a corresponding non-required PropType + // https://github.com/yannickcr/eslint-plugin-react/blob/9e13ae2c51e44872b45cc15bf1ac3a72105bdd0e/docs/rules/default-props-match-prop-types.md + 'react/default-props-match-prop-types': ['error', { allowRequiredDefaults: false }], + + // Prevent usage of shouldComponentUpdate when extending React.PureComponent + // https://github.com/yannickcr/eslint-plugin-react/blob/9e13ae2c51e44872b45cc15bf1ac3a72105bdd0e/docs/rules/no-redundant-should-component-update.md + 'react/no-redundant-should-component-update': 'error', + + // Prevent unused state values + // https://github.com/yannickcr/eslint-plugin-react/pull/1103/ + 'react/no-unused-state': 'error', + + // Enforces consistent naming for boolean props + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/boolean-prop-naming.md + 'react/boolean-prop-naming': ['off', { + propTypeNames: ['bool', 'mutuallyExclusiveTrueProps'], + rule: '^(is|has)[A-Z]([A-Za-z0-9]?)+', + message: '', + }], + + // Prevents common casing typos + // https://github.com/yannickcr/eslint-plugin-react/blob/73abadb697034b5ccb514d79fb4689836fe61f91/docs/rules/no-typos.md + 'react/no-typos': 'error', + + // Enforce curly braces or disallow unnecessary curly braces in JSX props and/or children + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-brace-presence.md + 'react/jsx-curly-brace-presence': ['error', { props: 'never', children: 'never' }], + + // One JSX Element Per Line + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/jsx-one-expression-per-line.md + 'react/jsx-one-expression-per-line': ['error', { allow: 'single-child' }], + + // Enforce consistent usage of destructuring assignment of props, state, and context + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/destructuring-assignment.md + 'react/destructuring-assignment': ['error', 'always'], + + // Prevent using this.state within a this.setState + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/no-access-state-in-setstate.md + 'react/no-access-state-in-setstate': 'error', + + // Prevent usage of button elements without an explicit type attribute + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/button-has-type.md + 'react/button-has-type': ['error', { + button: true, + submit: true, + reset: false, + }], + + // Ensures inline tags are not rendered without spaces between them + 'react/jsx-child-element-spacing': 'off', + + // Prevent this from being used in stateless functional components + // https://github.com/yannickcr/eslint-plugin-react/blob/843d71a432baf0f01f598d7cf1eea75ad6896e4b/docs/rules/no-this-in-sfc.md + 'react/no-this-in-sfc': 'error', + + // Validate JSX maximum depth + // https://github.com/yannickcr/eslint-plugin-react/blob/abe8381c0d6748047224c430ce47f02e40160ed0/docs/rules/jsx-max-depth.md + 'react/jsx-max-depth': 'off', + + // Disallow multiple spaces between inline JSX props + // https://github.com/yannickcr/eslint-plugin-react/blob/ac102885765be5ff37847a871f239c6703e1c7cc/docs/rules/jsx-props-no-multi-spaces.md + 'react/jsx-props-no-multi-spaces': 'error', + + // Prevent usage of UNSAFE_ methods + // https://github.com/yannickcr/eslint-plugin-react/blob/157cc932be2cfaa56b3f5b45df6f6d4322a2f660/docs/rules/no-unsafe.md + 'react/no-unsafe': 'off', + + // Enforce shorthand or standard form for React fragments + // https://github.com/yannickcr/eslint-plugin-react/blob/bc976b837abeab1dffd90ac6168b746a83fc83cc/docs/rules/jsx-fragments.md + 'react/jsx-fragments': ['error', 'syntax'], + + // Enforce linebreaks in curly braces in JSX attributes and expressions. + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-curly-newline.md + 'react/jsx-curly-newline': ['error', { + multiline: 'consistent', + singleline: 'consistent', + }], + + // Enforce state initialization style + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/state-in-constructor.md + // TODO: set to "never" once babel-preset-airbnb supports public class fields + 'react/state-in-constructor': ['error', 'always'], + + // Enforces where React component static properties should be positioned + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/static-property-placement.md + // TODO: set to "static public field" once babel-preset-airbnb supports public class fields + 'react/static-property-placement': ['error', 'property assignment'], + + // Disallow JSX props spreading + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-props-no-spreading.md + 'react/jsx-props-no-spreading': ['error', { + html: 'enforce', + custom: 'enforce', + exceptions: [], + }], + + // Enforce that props are read-only + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/prefer-read-only-props.md + 'react/prefer-read-only-props': 'off', + + // Prevent usage of `javascript:` URLs + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-script-url.md + // TODO: enable, semver-major + 'react/jsx-no-script-url': ['off', [ + { + name: 'Link', + props: ['to'], + }, + ]], + + // Disallow unnecessary fragments + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/jsx-no-useless-fragment.md + // TODO: enable, semver-major + 'react/jsx-no-useless-fragment': 'off', + + // Prevent adjacent inline elements not separated by whitespace + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-adjacent-inline-elements.md + // TODO: enable? semver-major + 'react/no-adjacent-inline-elements': 'off', + + // Enforce a specific function type for function components + // https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/function-component-definition.md + // TODO: enable! semver-minor, but do it in a major to be safe + // TODO: investigate if setting namedComponents to expression vs declaration is problematic + 'react/function-component-definition': ['off', { + namedComponents: 'function-expression', + unnamedComponents: 'function-expression', + }], + }, + + settings: { + 'import/resolver': { + node: { + extensions: ['.js', '.jsx', '.json'] + } + }, + react: { + pragma: 'React', + version: 'detect', + }, + propWrapperFunctions: [ + 'forbidExtraProps', // https://www.npmjs.com/package/airbnb-prop-types + 'exact', // https://www.npmjs.com/package/prop-types-exact + 'Object.freeze', // https://tc39.github.io/ecma262/#sec-object.freeze + ], + } +}; diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/.eslintrc b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/.eslintrc new file mode 100644 index 0000000..9c23197 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/.eslintrc @@ -0,0 +1,9 @@ +{ + "rules": { + // disabled because I find it tedious to write tests while following this rule + "no-shadow": 0, + + // tests uses `t` for tape + "id-length": [2, {"min": 2, "properties": "never", "exceptions": ["t"]}] + } +} diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/requires.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/requires.js new file mode 100644 index 0000000..72f4ab8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/requires.js @@ -0,0 +1,15 @@ +/* eslint strict: 0, global-require: 0 */ + +'use strict'; + +const test = require('tape'); + +test('all entry points parse', (t) => { + t.doesNotThrow(() => require('..'), 'index does not throw'); + t.doesNotThrow(() => require('../base'), 'base does not throw'); + t.doesNotThrow(() => require('../legacy'), 'legacy does not throw'); + t.doesNotThrow(() => require('../whitespace'), 'whitespace does not throw'); + t.doesNotThrow(() => require('../hooks'), 'hooks does not throw'); + + t.end(); +}); diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-base.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-base.js new file mode 100644 index 0000000..c283c34 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-base.js @@ -0,0 +1,34 @@ +import fs from 'fs'; +import path from 'path'; +import test from 'tape'; + +const base = require('../base'); + +const files = { base }; + +fs.readdirSync(path.join(__dirname, '../rules')).forEach((name) => { + if (name === 'react.js' || name === 'react-a11y.js') { + return; + } + + // eslint-disable-next-line import/no-dynamic-require + files[name] = require(`../rules/${name}`); // eslint-disable-line global-require +}); + +Object.keys(files).forEach((name) => { + const config = files[name]; + + test(`${name}: does not reference react`, (t) => { + t.plan(2); + + // scan plugins for react and fail if it is found + const hasReactPlugin = Object.prototype.hasOwnProperty.call(config, 'plugins') + && config.plugins.indexOf('react') !== -1; + t.notOk(hasReactPlugin, 'there is no react plugin'); + + // scan rules for react/ and fail if any exist + const reactRuleIds = Object.keys(config.rules) + .filter((ruleId) => ruleId.indexOf('react/') === 0); + t.deepEquals(reactRuleIds, [], 'there are no react/ rules'); + }); +}); diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-react-order.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-react-order.js new file mode 100644 index 0000000..6289973 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/test/test-react-order.js @@ -0,0 +1,91 @@ +import test from 'tape'; +import { CLIEngine } from 'eslint'; +import eslintrc from '..'; +import reactRules from '../rules/react'; +import reactA11yRules from '../rules/react-a11y'; + +const cli = new CLIEngine({ + useEslintrc: false, + baseConfig: eslintrc, + + rules: { + // It is okay to import devDependencies in tests. + 'import/no-extraneous-dependencies': [2, { devDependencies: true }], + // this doesn't matter for tests + 'lines-between-class-members': 0, + }, +}); + +function lint(text) { + // @see https://eslint.org/docs/developer-guide/nodejs-api.html#executeonfiles + // @see https://eslint.org/docs/developer-guide/nodejs-api.html#executeontext + const linter = cli.executeOnText(text); + return linter.results[0]; +} + +function wrapComponent(body) { + return ` +import React from 'react'; + +export default class MyComponent extends React.Component { +/* eslint no-empty-function: 0, class-methods-use-this: 0 */ +${body}} +`; +} + +test('validate react prop order', (t) => { + t.test('make sure our eslintrc has React and JSX linting dependencies', (t) => { + t.plan(2); + t.deepEqual(reactRules.plugins, ['react']); + t.deepEqual(reactA11yRules.plugins, ['jsx-a11y', 'react']); + }); + + t.test('passes a good component', (t) => { + t.plan(3); + const result = lint(wrapComponent(` + componentDidMount() {} + setFoo() {} + getFoo() {} + setBar() {} + someMethod() {} + renderDogs() {} + render() { return
; } +`)); + + t.notOk(result.warningCount, 'no warnings'); + t.deepEquals(result.messages, [], 'no messages in results'); + t.notOk(result.errorCount, 'no errors'); + }); + + t.test('order: when random method is first', (t) => { + t.plan(2); + const result = lint(wrapComponent(` + someMethod() {} + componentDidMount() {} + setFoo() {} + getFoo() {} + setBar() {} + renderDogs() {} + render() { return
; } +`)); + + t.ok(result.errorCount, 'fails'); + t.deepEqual(result.messages.map((msg) => msg.ruleId), ['react/sort-comp'], 'fails due to sort'); + }); + + t.test('order: when random method after lifecycle methods', (t) => { + t.plan(2); + const result = lint(wrapComponent(` + componentDidMount() {} + someMethod() {} + setFoo() {} + getFoo() {} + setBar() {} + renderDogs() {} + render() { return
; } +`)); + + t.ok(result.errorCount, 'fails'); + t.deepEqual(result.messages.map((msg) => msg.ruleId), ['react/sort-comp'], 'fails due to sort'); + }); +}); diff --git a/tic-tac-toe-app/node_modules/eslint-config-airbnb/whitespace.js b/tic-tac-toe-app/node_modules/eslint-config-airbnb/whitespace.js new file mode 100644 index 0000000..48445ad --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-config-airbnb/whitespace.js @@ -0,0 +1,105 @@ +const assign = require('object.assign'); +const entries = require('object.entries'); +const { CLIEngine } = require('eslint'); + +const baseConfig = require('.'); + +const severities = ['off', 'warn', 'error']; + +function getSeverity(ruleConfig) { + if (Array.isArray(ruleConfig)) { + return getSeverity(ruleConfig[0]); + } + if (typeof ruleConfig === 'number') { + return severities[ruleConfig]; + } + return ruleConfig; +} + +function onlyErrorOnRules(rulesToError, config) { + const errorsOnly = assign({}, config); + const cli = new CLIEngine({ baseConfig: config, useEslintrc: false }); + const baseRules = cli.getConfigForFile(require.resolve('./')).rules; + + entries(baseRules).forEach((rule) => { + const ruleName = rule[0]; + const ruleConfig = rule[1]; + const severity = getSeverity(ruleConfig); + + if (rulesToError.indexOf(ruleName) === -1 && severity === 'error') { + if (Array.isArray(ruleConfig)) { + errorsOnly.rules[ruleName] = ['warn'].concat(ruleConfig.slice(1)); + } else if (typeof ruleConfig === 'number') { + errorsOnly.rules[ruleName] = 1; + } else { + errorsOnly.rules[ruleName] = 'warn'; + } + } + }); + + return errorsOnly; +} + +module.exports = onlyErrorOnRules([ + 'array-bracket-newline', + 'array-bracket-spacing', + 'array-element-newline', + 'arrow-spacing', + 'block-spacing', + 'comma-spacing', + 'computed-property-spacing', + 'dot-location', + 'eol-last', + 'func-call-spacing', + 'function-paren-newline', + 'generator-star-spacing', + 'implicit-arrow-linebreak', + 'indent', + 'key-spacing', + 'keyword-spacing', + 'line-comment-position', + 'linebreak-style', + 'multiline-ternary', + 'newline-per-chained-call', + 'no-irregular-whitespace', + 'no-mixed-spaces-and-tabs', + 'no-multi-spaces', + 'no-regex-spaces', + 'no-spaced-func', + 'no-trailing-spaces', + 'no-whitespace-before-property', + 'nonblock-statement-body-position', + 'object-curly-newline', + 'object-curly-spacing', + 'object-property-newline', + 'one-var-declaration-per-line', + 'operator-linebreak', + 'padded-blocks', + 'padding-line-between-statements', + 'rest-spread-spacing', + 'semi-spacing', + 'semi-style', + 'space-before-blocks', + 'space-before-function-paren', + 'space-in-parens', + 'space-infix-ops', + 'space-unary-ops', + 'spaced-comment', + 'switch-colon-spacing', + 'template-tag-spacing', + 'import/newline-after-import', + // eslint-plugin-react rules + 'react/jsx-child-element-spacing', + 'react/jsx-closing-bracket-location', + 'react/jsx-closing-tag-location', + 'react/jsx-curly-spacing', + 'react/jsx-equals-spacing', + 'react/jsx-first-prop-newline', + 'react/jsx-indent', + 'react/jsx-indent-props', + 'react/jsx-max-props-per-line', + 'react/jsx-one-expression-per-line', + 'react/jsx-space-before-closing', + 'react/jsx-tag-spacing', + 'react/jsx-wrap-multilines', +], baseConfig); diff --git a/tic-tac-toe-app/node_modules/eslint-import-resolver-node/CHANGELOG.md b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/CHANGELOG.md new file mode 100644 index 0000000..f0d2358 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/CHANGELOG.md @@ -0,0 +1,52 @@ +# Change Log +All notable changes to this resolver will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). +This change log adheres to standards from [Keep a CHANGELOG](http://keepachangelog.com). + +## Unreleased + +## v0.3.2 - 2018-01-05 +### Added +- `.mjs` extension detected by default to support `experimental-modules` (#939) + +### Deps +- update `debug`, `resolve` + +## v0.3.1 - 2017-06-23 +### Changed +- bumped `debug` dep to match other packages + +## v0.3.0 - 2016-12-15 +### Changed +- bumped `resolve` to fix issues with Node builtins (thanks [@SkeLLLa] and [@ljharb]) + +### Fixed +- use `files` in `package.json` to ship only `index.js` ([#531], thanks for noticing [@lukeapage]) + +## v0.2.3 - 2016-08-20 +### Added +- debug logging (use `DEBUG=eslint-plugin-import:resolver:node eslint [...]`) + +## v0.2.2 - 2016-07-14 +### Fixed +- Node resolver no longer declares the import plugin as a `peerDependency`. See [#437] + for a well-articulated and thoughtful expression of why this doesn't make sense. + Thanks [@jasonkarns] for the issue and the PR to fix it ([#438]). + + Also, apologies to the others who expressed this before, but I never understood + what the problem was.😅 + +## v0.2.1 +### Fixed +- find files with `.json` extensions (#333, thanks for noticing @jfmengels) + +[#438]: https://github.com/benmosher/eslint-plugin-import/pull/438 + +[#939]: https://github.com/benmosher/eslint-plugin-import/issues/939 +[#531]: https://github.com/benmosher/eslint-plugin-import/issues/531 +[#437]: https://github.com/benmosher/eslint-plugin-import/issues/437 + +[@jasonkarns]: https://github.com/jasonkarns +[@lukeapage]: https://github.com/lukeapage +[@SkeLLLa]: https://github.com/SkeLLLa +[@ljharb]: https://github.com/ljharb diff --git a/tic-tac-toe-app/node_modules/eslint-import-resolver-node/LICENSE b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/LICENSE new file mode 100644 index 0000000..c6ade2a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Ben Mosher + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/tic-tac-toe-app/node_modules/eslint-import-resolver-node/README.md b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/README.md new file mode 100644 index 0000000..20fe1e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/README.md @@ -0,0 +1,44 @@ +# eslint-import-resolver-node + +[![npm](https://img.shields.io/npm/v/eslint-import-resolver-node.svg)](https://www.npmjs.com/package/eslint-import-resolver-node) + +Default Node-style module resolution plugin for [`eslint-plugin-import`](https://www.npmjs.com/package/eslint-plugin-import). + +Published separately to allow pegging to a specific version in case of breaking +changes. + +Config is passed directly through to [`resolve`](https://www.npmjs.com/package/resolve#resolve-sync-id-opts) as options: + +```yaml +settings: + import/resolver: + node: + extensions: + # if unset, default is just '.js', but it must be re-added explicitly if set + - .js + - .jsx + - .es6 + - .coffee + + paths: + # an array of absolute paths which will also be searched + # think NODE_PATH + - /usr/local/share/global_modules + + # this is technically for identifying `node_modules` alternate names + moduleDirectory: + + - node_modules # defaults to 'node_modules', but... + - bower_components + + - project/src # can add a path segment here that will act like + # a source root, for in-project aliasing (i.e. + # `import MyStore from 'stores/my-store'`) +``` + +or to use the default options: + +```yaml +settings: + import/resolver: node +``` diff --git a/tic-tac-toe-app/node_modules/eslint-import-resolver-node/index.js b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/index.js new file mode 100644 index 0000000..b5a1537 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/index.js @@ -0,0 +1,47 @@ +var resolve = require('resolve') + , path = require('path') + +var log = require('debug')('eslint-plugin-import:resolver:node') + +exports.interfaceVersion = 2 + +exports.resolve = function (source, file, config) { + log('Resolving:', source, 'from:', file) + var resolvedPath + + if (resolve.isCore(source)) { + log('resolved to core') + return { found: true, path: null } + } + + try { + resolvedPath = resolve.sync(source, opts(file, config)) + log('Resolved to:', resolvedPath) + return { found: true, path: resolvedPath } + } catch (err) { + log('resolve threw error:', err) + return { found: false } + } +} + +function opts(file, config) { + return Object.assign({ + // more closely matches Node (#333) + // plus 'mjs' for native modules! (#939) + extensions: ['.mjs', '.js', '.json'], + }, + config, + { + // path.resolve will handle paths relative to CWD + basedir: path.dirname(path.resolve(file)), + packageFilter: packageFilter, + + }) +} + +function packageFilter(pkg) { + if (pkg['jsnext:main']) { + pkg['main'] = pkg['jsnext:main'] + } + return pkg +} diff --git a/tic-tac-toe-app/node_modules/eslint-import-resolver-node/package.json b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/package.json new file mode 100644 index 0000000..9dccc62 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-import-resolver-node/package.json @@ -0,0 +1,74 @@ +{ + "_from": "eslint-import-resolver-node@^0.3.2", + "_id": "eslint-import-resolver-node@0.3.3", + "_inBundle": false, + "_integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "_location": "/eslint-import-resolver-node", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "eslint-import-resolver-node@^0.3.2", + "name": "eslint-import-resolver-node", + "escapedName": "eslint-import-resolver-node", + "rawSpec": "^0.3.2", + "saveSpec": null, + "fetchSpec": "^0.3.2" + }, + "_requiredBy": [ + "/eslint-plugin-import" + ], + "_resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "_shasum": "dbaa52b6b2816b50bc6711af75422de808e98404", + "_spec": "eslint-import-resolver-node@^0.3.2", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint-plugin-import", + "author": { + "name": "Ben Mosher", + "url": "me@benmosher.com" + }, + "bugs": { + "url": "https://github.com/benmosher/eslint-plugin-import/issues" + }, + "bundleDependencies": false, + "dependencies": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "deprecated": false, + "description": "Node default behavior import resolution plugin for eslint-plugin-import.", + "devDependencies": { + "chai": "^3.5.0", + "coveralls": "^3.0.0", + "mocha": "^3.5.3", + "nyc": "^11.7.1" + }, + "files": [ + "index.js" + ], + "homepage": "https://github.com/benmosher/eslint-plugin-import", + "keywords": [ + "eslint", + "eslintplugin", + "esnext", + "modules", + "eslint-plugin-import" + ], + "license": "MIT", + "main": "index.js", + "name": "eslint-import-resolver-node", + "nyc": { + "exclude": [ + "test/" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/benmosher/eslint-plugin-import.git" + }, + "scripts": { + "coveralls": "nyc report --reporter lcovonly && cd ../.. && coveralls < ./resolvers/node/coverage/lcov.info", + "prepublishOnly": "cp ../../{LICENSE,.npmrc} ./", + "test": "nyc mocha" + }, + "version": "0.3.3" +} diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/.eslintrc.yml b/tic-tac-toe-app/node_modules/eslint-module-utils/.eslintrc.yml new file mode 100644 index 0000000..d30c264 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/.eslintrc.yml @@ -0,0 +1,3 @@ +--- +rules: + no-console: 1 diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/CHANGELOG.md b/tic-tac-toe-app/node_modules/eslint-module-utils/CHANGELOG.md new file mode 100644 index 0000000..f337d38 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/CHANGELOG.md @@ -0,0 +1,103 @@ +# Change Log +All notable changes to this module will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). +This change log adheres to standards from [Keep a CHANGELOG](http://keepachangelog.com). + +## Unreleased + +## v2.6.0 - 2020-03-28 + +### Added +[New] Print more helpful info if parsing fails ([#1671], thanks [@kaiyoma]) + +## v2.5.2 - 2020-01-12 + +### Fixed +- Makes the loader resolution more tolerant ([#1606], thanks [@arcanis]) +- Use `createRequire` instead of `createRequireFromPath` if available ([#1602], thanks [@iamnapo]) + +## v2.5.1 - 2020-01-11 + +### Fixed +- Uses createRequireFromPath to resolve loaders ([#1591], thanks [@arcanis]) +- report the error stack on a resolution error ([#599], thanks [@sompylasar]) + +## v2.5.0 - 2019-12-07 + +### Added +- support `parseForESLint` from custom parser ([#1435], thanks [@JounQin]) + +### Changed + - Avoid superfluous calls and code ([#1551], thanks [@brettz9]) + +## v2.4.1 - 2019-07-19 + +### Fixed + - Improve parse perf when using `@typescript-eslint/parser` ([#1409], thanks [@bradzacher]) + - Improve support for TypeScript declare structures ([#1356], thanks [@christophercurrie]) + +## v2.4.0 - 2019-04-13 + +### Added + - no-useless-path-segments: Add noUselessIndex option ([#1290], thanks [@timkraut]) + +### Fixed + - Fix overwriting of dynamic import() CallExpression ([`no-cycle`], [`no-relative-parent-import`], [`no-unresolved`], [`no-useless-path-segments`]) ([#1218], [#1166], [#1035], thanks [@vikr01]) + + +## v2.3.0 - 2019-01-22 +### Fixed +- use `process.hrtime()` for cache dates ([#1160], thanks [@hulkish]) + +## v2.2.0 - 2018-03-29 +### Changed +- `parse`: attach node locations by default. +- `moduleVisitor`: visitor now gets the full `import` statement node as a second + argument, so rules may report against the full statement / `require` call instead + of only the string literal node. + +## v2.1.1 - 2017-06-22 + +Re-releasing v2.1.0 after vetting (again) and unable to reproduce issue. + + +## v2.1.0 - 2017-06-02 [YANKED] + +Yanked due to critical issue with cache key resulting from #839. + +### Added +- `parse` now additionally passes `filePath` to `parser` in `parserOptions` like `eslint` core does + +## v2.0.0 - 2016-11-07 +### Changed +- `unambiguous` no longer exposes fast test regex + +### Fixed +- `unambiguous.test()` regex is now properly in multiline mode + +[#1671]: https://github.com/benmosher/eslint-plugin-import/pull/1671 +[#1606]: https://github.com/benmosher/eslint-plugin-import/pull/1606 +[#1602]: https://github.com/benmosher/eslint-plugin-import/pull/1602 +[#1591]: https://github.com/benmosher/eslint-plugin-import/pull/1591 +[#1551]: https://github.com/benmosher/eslint-plugin-import/pull/1551 +[#1435]: https://github.com/benmosher/eslint-plugin-import/pull/1435 +[#1409]: https://github.com/benmosher/eslint-plugin-import/pull/1409 +[#1356]: https://github.com/benmosher/eslint-plugin-import/pull/1356 +[#1290]: https://github.com/benmosher/eslint-plugin-import/pull/1290 +[#1218]: https://github.com/benmosher/eslint-plugin-import/pull/1218 +[#1166]: https://github.com/benmosher/eslint-plugin-import/issues/1166 +[#1160]: https://github.com/benmosher/eslint-plugin-import/pull/1160 +[#1035]: https://github.com/benmosher/eslint-plugin-import/issues/1035 +[#599]: https://github.com/benmosher/eslint-plugin-import/pull/599 + +[@hulkish]: https://github.com/hulkish +[@timkraut]: https://github.com/timkraut +[@vikr01]: https://github.com/vikr01 +[@bradzacher]: https://github.com/bradzacher +[@christophercurrie]: https://github.com/christophercurrie +[@brettz9]: https://github.com/brettz9 +[@JounQin]: https://github.com/JounQin +[@arcanis]: https://github.com/arcanis +[@sompylasar]: https://github.com/sompylasar +[@iamnapo]: https://github.com/iamnapo +[@kaiyoma]: https://github.com/kaiyoma diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/LICENSE b/tic-tac-toe-app/node_modules/eslint-module-utils/LICENSE new file mode 100644 index 0000000..c6ade2a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Ben Mosher + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/ModuleCache.js b/tic-tac-toe-app/node_modules/eslint-module-utils/ModuleCache.js new file mode 100644 index 0000000..b910a58 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/ModuleCache.js @@ -0,0 +1,47 @@ +'use strict' +exports.__esModule = true + +const log = require('debug')('eslint-module-utils:ModuleCache') + +class ModuleCache { + constructor(map) { + this.map = map || new Map() + } + + /** + * returns value for returning inline + * @param {[type]} cacheKey [description] + * @param {[type]} result [description] + */ + set(cacheKey, result) { + this.map.set(cacheKey, { result, lastSeen: process.hrtime() }) + log('setting entry for', cacheKey) + return result + } + + get(cacheKey, settings) { + if (this.map.has(cacheKey)) { + const f = this.map.get(cacheKey) + // check freshness + if (process.hrtime(f.lastSeen)[0] < settings.lifetime) return f.result + } else log('cache miss for', cacheKey) + // cache miss + return undefined + } + +} + +ModuleCache.getSettings = function (settings) { + const cacheSettings = Object.assign({ + lifetime: 30, // seconds + }, settings['import/cache']) + + // parse infinity + if (cacheSettings.lifetime === '∞' || cacheSettings.lifetime === 'Infinity') { + cacheSettings.lifetime = Infinity + } + + return cacheSettings +} + +exports.default = ModuleCache diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/declaredScope.js b/tic-tac-toe-app/node_modules/eslint-module-utils/declaredScope.js new file mode 100644 index 0000000..904279a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/declaredScope.js @@ -0,0 +1,14 @@ +'use strict' +exports.__esModule = true + +exports.default = function declaredScope(context, name) { + let references = context.getScope().references + , i + for (i = 0; i < references.length; i++) { + if (references[i].identifier.name === name) { + break + } + } + if (!references[i]) return undefined + return references[i].resolved.scope.type +} diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/hash.js b/tic-tac-toe-app/node_modules/eslint-module-utils/hash.js new file mode 100644 index 0000000..d69dd4d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/hash.js @@ -0,0 +1,59 @@ +/** + * utilities for hashing config objects. + * basically iteratively updates hash with a JSON-like format + */ +'use strict' +exports.__esModule = true + +const createHash = require('crypto').createHash + +const stringify = JSON.stringify + +function hashify(value, hash) { + if (!hash) hash = createHash('sha256') + + if (value instanceof Array) { + hashArray(value, hash) + } else if (value instanceof Object) { + hashObject(value, hash) + } else { + hash.update(stringify(value) || 'undefined') + } + + return hash +} +exports.default = hashify + +function hashArray(array, hash) { + if (!hash) hash = createHash('sha256') + + hash.update('[') + for (let i = 0; i < array.length; i++) { + hashify(array[i], hash) + hash.update(',') + } + hash.update(']') + + return hash +} +hashify.array = hashArray +exports.hashArray = hashArray + +function hashObject(object, hash) { + if (!hash) hash = createHash('sha256') + + hash.update('{') + Object.keys(object).sort().forEach(key => { + hash.update(stringify(key)) + hash.update(':') + hashify(object[key], hash) + hash.update(',') + }) + hash.update('}') + + return hash +} +hashify.object = hashObject +exports.hashObject = hashObject + + diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/ignore.js b/tic-tac-toe-app/node_modules/eslint-module-utils/ignore.js new file mode 100644 index 0000000..47af812 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/ignore.js @@ -0,0 +1,60 @@ +'use strict' +exports.__esModule = true + +const extname = require('path').extname + +const log = require('debug')('eslint-plugin-import:utils:ignore') + +// one-shot memoized +let cachedSet, lastSettings +function validExtensions(context) { + if (cachedSet && context.settings === lastSettings) { + return cachedSet + } + + lastSettings = context.settings + cachedSet = makeValidExtensionSet(context.settings) + return cachedSet +} + +function makeValidExtensionSet(settings) { + // start with explicit JS-parsed extensions + const exts = new Set(settings['import/extensions'] || [ '.js' ]) + + // all alternate parser extensions are also valid + if ('import/parsers' in settings) { + for (let parser in settings['import/parsers']) { + const parserSettings = settings['import/parsers'][parser] + if (!Array.isArray(parserSettings)) { + throw new TypeError('"settings" for ' + parser + ' must be an array') + } + parserSettings.forEach(ext => exts.add(ext)) + } + } + + return exts +} +exports.getFileExtensions = makeValidExtensionSet + +exports.default = function ignore(path, context) { + // check extension whitelist first (cheap) + if (!hasValidExtension(path, context)) return true + + if (!('import/ignore' in context.settings)) return false + const ignoreStrings = context.settings['import/ignore'] + + for (let i = 0; i < ignoreStrings.length; i++) { + const regex = new RegExp(ignoreStrings[i]) + if (regex.test(path)) { + log(`ignoring ${path}, matched pattern /${ignoreStrings[i]}/`) + return true + } + } + + return false +} + +function hasValidExtension(path, context) { + return validExtensions(context).has(extname(path)) +} +exports.hasValidExtension = hasValidExtension diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/module-require.js b/tic-tac-toe-app/node_modules/eslint-module-utils/module-require.js new file mode 100644 index 0000000..6894506 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/module-require.js @@ -0,0 +1,30 @@ +'use strict' +exports.__esModule = true + +const Module = require('module') +const path = require('path') + +// borrowed from babel-eslint +function createModule(filename) { + const mod = new Module(filename) + mod.filename = filename + mod.paths = Module._nodeModulePaths(path.dirname(filename)) + return mod +} + +exports.default = function moduleRequire(p) { + try { + // attempt to get espree relative to eslint + const eslintPath = require.resolve('eslint') + const eslintModule = createModule(eslintPath) + return require(Module._resolveFilename(p, eslintModule)) + } catch(err) { /* ignore */ } + + try { + // try relative to entry point + return require.main.require(p) + } catch(err) { /* ignore */ } + + // finally, try from here + return require(p) +} diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/moduleVisitor.js b/tic-tac-toe-app/node_modules/eslint-module-utils/moduleVisitor.js new file mode 100644 index 0000000..bc8c91b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/moduleVisitor.js @@ -0,0 +1,141 @@ +'use strict' +exports.__esModule = true + +/** + * Returns an object of node visitors that will call + * 'visitor' with every discovered module path. + * + * todo: correct function prototype for visitor + * @param {Function(String)} visitor [description] + * @param {[type]} options [description] + * @return {object} + */ +exports.default = function visitModules(visitor, options) { + // if esmodule is not explicitly disabled, it is assumed to be enabled + options = Object.assign({ esmodule: true }, options) + + let ignoreRegExps = [] + if (options.ignore != null) { + ignoreRegExps = options.ignore.map(p => new RegExp(p)) + } + + function checkSourceValue(source, importer) { + if (source == null) return //? + + // handle ignore + if (ignoreRegExps.some(re => re.test(source.value))) return + + // fire visitor + visitor(source, importer) + } + + // for import-y declarations + function checkSource(node) { + checkSourceValue(node.source, node) + } + + // for esmodule dynamic `import()` calls + function checkImportCall(node) { + if (node.callee.type !== 'Import') return + if (node.arguments.length !== 1) return + + const modulePath = node.arguments[0] + if (modulePath.type !== 'Literal') return + if (typeof modulePath.value !== 'string') return + + checkSourceValue(modulePath, node) + } + + // for CommonJS `require` calls + // adapted from @mctep: http://git.io/v4rAu + function checkCommon(call) { + if (call.callee.type !== 'Identifier') return + if (call.callee.name !== 'require') return + if (call.arguments.length !== 1) return + + const modulePath = call.arguments[0] + if (modulePath.type !== 'Literal') return + if (typeof modulePath.value !== 'string') return + + checkSourceValue(modulePath, call) + } + + function checkAMD(call) { + if (call.callee.type !== 'Identifier') return + if (call.callee.name !== 'require' && + call.callee.name !== 'define') return + if (call.arguments.length !== 2) return + + const modules = call.arguments[0] + if (modules.type !== 'ArrayExpression') return + + for (let element of modules.elements) { + if (element.type !== 'Literal') continue + if (typeof element.value !== 'string') continue + + if (element.value === 'require' || + element.value === 'exports') continue // magic modules: http://git.io/vByan + + checkSourceValue(element, element) + } + } + + const visitors = {} + if (options.esmodule) { + Object.assign(visitors, { + 'ImportDeclaration': checkSource, + 'ExportNamedDeclaration': checkSource, + 'ExportAllDeclaration': checkSource, + 'CallExpression': checkImportCall, + }) + } + + if (options.commonjs || options.amd) { + const currentCallExpression = visitors['CallExpression'] + visitors['CallExpression'] = function (call) { + if (currentCallExpression) currentCallExpression(call) + if (options.commonjs) checkCommon(call) + if (options.amd) checkAMD(call) + } + } + + return visitors +} + +/** + * make an options schema for the module visitor, optionally + * adding extra fields. + */ +function makeOptionsSchema(additionalProperties) { + const base = { + 'type': 'object', + 'properties': { + 'commonjs': { 'type': 'boolean' }, + 'amd': { 'type': 'boolean' }, + 'esmodule': { 'type': 'boolean' }, + 'ignore': { + 'type': 'array', + 'minItems': 1, + 'items': { 'type': 'string' }, + 'uniqueItems': true, + }, + }, + 'additionalProperties': false, + } + + if (additionalProperties){ + for (let key in additionalProperties) { + base.properties[key] = additionalProperties[key] + } + } + + return base +} +exports.makeOptionsSchema = makeOptionsSchema + +/** + * json schema object for options parameter. can be used to build + * rule options schema object. + * @type {Object} + */ +exports.optionsSchema = makeOptionsSchema() diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/package.json b/tic-tac-toe-app/node_modules/eslint-module-utils/package.json new file mode 100644 index 0000000..121d65b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/package.json @@ -0,0 +1,60 @@ +{ + "_from": "eslint-module-utils@^2.4.1", + "_id": "eslint-module-utils@2.6.0", + "_inBundle": false, + "_integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "_location": "/eslint-module-utils", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "eslint-module-utils@^2.4.1", + "name": "eslint-module-utils", + "escapedName": "eslint-module-utils", + "rawSpec": "^2.4.1", + "saveSpec": null, + "fetchSpec": "^2.4.1" + }, + "_requiredBy": [ + "/eslint-plugin-import" + ], + "_resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "_shasum": "579ebd094f56af7797d19c9866c9c9486629bfa6", + "_spec": "eslint-module-utils@^2.4.1", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint-plugin-import", + "author": { + "name": "Ben Mosher", + "email": "me@benmosher.com" + }, + "bugs": { + "url": "https://github.com/benmosher/eslint-plugin-import/issues" + }, + "bundleDependencies": false, + "dependencies": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "deprecated": false, + "description": "Core utilities to support eslint-plugin-import and other module-related plugins.", + "engines": { + "node": ">=4" + }, + "homepage": "https://github.com/benmosher/eslint-plugin-import#readme", + "keywords": [ + "eslint-plugin-import", + "eslint", + "modules", + "esmodules" + ], + "license": "MIT", + "name": "eslint-module-utils", + "repository": { + "type": "git", + "url": "git+https://github.com/benmosher/eslint-plugin-import.git" + }, + "scripts": { + "prepublishOnly": "cp ../{LICENSE,.npmrc} ./", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "version": "2.6.0" +} diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/parse.js b/tic-tac-toe-app/node_modules/eslint-module-utils/parse.js new file mode 100644 index 0000000..b3a4692 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/parse.js @@ -0,0 +1,82 @@ +'use strict' +exports.__esModule = true + +const moduleRequire = require('./module-require').default +const extname = require('path').extname + +const log = require('debug')('eslint-plugin-import:parse') + +exports.default = function parse(path, content, context) { + + if (context == null) throw new Error('need context to parse properly') + + let parserOptions = context.parserOptions + const parserPath = getParserPath(path, context) + + if (!parserPath) throw new Error('parserPath is required!') + + // hack: espree blows up with frozen options + parserOptions = Object.assign({}, parserOptions) + parserOptions.ecmaFeatures = Object.assign({}, parserOptions.ecmaFeatures) + + // always include comments and tokens (for doc parsing) + parserOptions.comment = true + parserOptions.attachComment = true // keeping this for backward-compat with older parsers + parserOptions.tokens = true + + // attach node locations + parserOptions.loc = true + parserOptions.range = true + + // provide the `filePath` like eslint itself does, in `parserOptions` + // https://github.com/eslint/eslint/blob/3ec436ee/lib/linter.js#L637 + parserOptions.filePath = path + + // @typescript-eslint/parser will parse the entire project with typechecking if you provide + // "project" or "projects" in parserOptions. Removing these options means the parser will + // only parse one file in isolate mode, which is much, much faster. + // https://github.com/benmosher/eslint-plugin-import/issues/1408#issuecomment-509298962 + delete parserOptions.project + delete parserOptions.projects + + // require the parser relative to the main module (i.e., ESLint) + const parser = moduleRequire(parserPath) + + if (typeof parser.parseForESLint === 'function') { + let ast + try { + ast = parser.parseForESLint(content, parserOptions).ast + } catch (e) { + console.warn() + console.warn('Error while parsing ' + parserOptions.filePath) + console.warn('Line ' + e.lineNumber + ', column ' + e.column + ': ' + e.message) + } + if (!ast || typeof ast !== 'object') { + console.warn( + '`parseForESLint` from parser `' + + parserPath + + '` is invalid and will just be ignored' + ) + } else { + return ast + } + } + + return parser.parse(content, parserOptions) +} + +function getParserPath(path, context) { + const parsers = context.settings['import/parsers'] + if (parsers != null) { + const extension = extname(path) + for (let parserPath in parsers) { + if (parsers[parserPath].indexOf(extension) > -1) { + // use this alternate parser + log('using alt parser:', parserPath) + return parserPath + } + } + } + // default to use ESLint parser + return context.parserPath +} diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/resolve.js b/tic-tac-toe-app/node_modules/eslint-module-utils/resolve.js new file mode 100644 index 0000000..3138194 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/resolve.js @@ -0,0 +1,241 @@ +'use strict' +exports.__esModule = true + +const pkgDir = require('pkg-dir') + +const fs = require('fs') +const Module = require('module') +const path = require('path') + +const hashObject = require('./hash').hashObject + , ModuleCache = require('./ModuleCache').default + +const CASE_SENSITIVE_FS = !fs.existsSync(path.join(__dirname, 'reSOLVE.js')) +exports.CASE_SENSITIVE_FS = CASE_SENSITIVE_FS + +const ERROR_NAME = 'EslintPluginImportResolveError' + +const fileExistsCache = new ModuleCache() + +// Polyfill Node's `Module.createRequireFromPath` if not present (added in Node v10.12.0) +// Use `Module.createRequire` if available (added in Node v12.2.0) +const createRequire = Module.createRequire || Module.createRequireFromPath || function (filename) { + const mod = new Module(filename, null) + mod.filename = filename + mod.paths = Module._nodeModulePaths(path.dirname(filename)) + + mod._compile(`module.exports = require;`, filename) + + return mod.exports +} + +function tryRequire(target, sourceFile) { + let resolved + try { + // Check if the target exists + if (sourceFile != null) { + try { + resolved = createRequire(path.resolve(sourceFile)).resolve(target) + } catch (e) { + resolved = require.resolve(target) + } + } else { + resolved = require.resolve(target) + } + } catch(e) { + // If the target does not exist then just return undefined + return undefined + } + + // If the target exists then return the loaded module + return require(resolved) +} + +// http://stackoverflow.com/a/27382838 +exports.fileExistsWithCaseSync = function fileExistsWithCaseSync(filepath, cacheSettings) { + // don't care if the FS is case-sensitive + if (CASE_SENSITIVE_FS) return true + + // null means it resolved to a builtin + if (filepath === null) return true + if (filepath.toLowerCase() === process.cwd().toLowerCase()) return true + const parsedPath = path.parse(filepath) + , dir = parsedPath.dir + + let result = fileExistsCache.get(filepath, cacheSettings) + if (result != null) return result + + // base case + if (dir === '' || parsedPath.root === filepath) { + result = true + } else { + const filenames = fs.readdirSync(dir) + if (filenames.indexOf(parsedPath.base) === -1) { + result = false + } else { + result = fileExistsWithCaseSync(dir, cacheSettings) + } + } + fileExistsCache.set(filepath, result) + return result +} + +function relative(modulePath, sourceFile, settings) { + return fullResolve(modulePath, sourceFile, settings).path +} + +function fullResolve(modulePath, sourceFile, settings) { + // check if this is a bonus core module + const coreSet = new Set(settings['import/core-modules']) + if (coreSet.has(modulePath)) return { found: true, path: null } + + const sourceDir = path.dirname(sourceFile) + , cacheKey = sourceDir + hashObject(settings).digest('hex') + modulePath + + const cacheSettings = ModuleCache.getSettings(settings) + + const cachedPath = fileExistsCache.get(cacheKey, cacheSettings) + if (cachedPath !== undefined) return { found: true, path: cachedPath } + + function cache(resolvedPath) { + fileExistsCache.set(cacheKey, resolvedPath) + } + + function withResolver(resolver, config) { + + function v1() { + try { + const resolved = resolver.resolveImport(modulePath, sourceFile, config) + if (resolved === undefined) return { found: false } + return { found: true, path: resolved } + } catch (err) { + return { found: false } + } + } + + function v2() { + return resolver.resolve(modulePath, sourceFile, config) + } + + switch (resolver.interfaceVersion) { + case 2: + return v2() + + default: + case 1: + return v1() + } + } + + const configResolvers = (settings['import/resolver'] + || { 'node': settings['import/resolve'] }) // backward compatibility + + const resolvers = resolverReducer(configResolvers, new Map()) + + for (let pair of resolvers) { + let name = pair[0] + , config = pair[1] + const resolver = requireResolver(name, sourceFile) + , resolved = withResolver(resolver, config) + + if (!resolved.found) continue + + // else, counts + cache(resolved.path) + return resolved + } + + // failed + // cache(undefined) + return { found: false } +} +exports.relative = relative + +function resolverReducer(resolvers, map) { + if (resolvers instanceof Array) { + resolvers.forEach(r => resolverReducer(r, map)) + return map + } + + if (typeof resolvers === 'string') { + map.set(resolvers, null) + return map + } + + if (typeof resolvers === 'object') { + for (let key in resolvers) { + map.set(key, resolvers[key]) + } + return map + } + + const err = new Error('invalid resolver config') + err.name = ERROR_NAME + throw err +} + +function getBaseDir(sourceFile) { + return pkgDir.sync(sourceFile) || process.cwd() +} +function requireResolver(name, sourceFile) { + // Try to resolve package with conventional name + let resolver = tryRequire(`eslint-import-resolver-${name}`, sourceFile) || + tryRequire(name, sourceFile) || + tryRequire(path.resolve(getBaseDir(sourceFile), name)) + + if (!resolver) { + const err = new Error(`unable to load resolver "${name}".`) + err.name = ERROR_NAME + throw err + } + if (!isResolverValid(resolver)) { + const err = new Error(`${name} with invalid interface loaded as resolver`) + err.name = ERROR_NAME + throw err + } + + return resolver +} + +function isResolverValid(resolver) { + if (resolver.interfaceVersion === 2) { + return resolver.resolve && typeof resolver.resolve === 'function' + } else { + return resolver.resolveImport && typeof resolver.resolveImport === 'function' + } +} + +const erroredContexts = new Set() + +/** + * Given + * @param {string} p - module path + * @param {object} context - ESLint context + * @return {string} - the full module filesystem path; + * null if package is core; + * undefined if not found + */ +function resolve(p, context) { + try { + return relative( p + , context.getFilename() + , context.settings + ) + } catch (err) { + if (!erroredContexts.has(context)) { + // The `err.stack` string starts with `err.name` followed by colon and `err.message`. + // We're filtering out the default `err.name` because it adds little value to the message. + let errMessage = err.message + if (err.name !== ERROR_NAME && err.stack) { + errMessage = err.stack.replace(/^Error: /, '') + } + context.report({ + message: `Resolve error: ${errMessage}`, + loc: { line: 1, column: 0 }, + }) + erroredContexts.add(context) + } + } +} +resolve.relative = relative +exports.default = resolve diff --git a/tic-tac-toe-app/node_modules/eslint-module-utils/unambiguous.js b/tic-tac-toe-app/node_modules/eslint-module-utils/unambiguous.js new file mode 100644 index 0000000..1dae1d6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-module-utils/unambiguous.js @@ -0,0 +1,30 @@ +'use strict' +exports.__esModule = true + + +const pattern = /(^|;)\s*(export|import)((\s+\w)|(\s*[{*=]))/m +/** + * detect possible imports/exports without a full parse. + * + * A negative test means that a file is definitely _not_ a module. + * A positive test means it _could_ be. + * + * Not perfect, just a fast way to disqualify large non-ES6 modules and + * avoid a parse. + * @type {RegExp} + */ +exports.test = function isMaybeUnambiguousModule(content) { + return pattern.test(content) +} + +// future-/Babel-proof at the expense of being a little loose +const unambiguousNodeType = /^(?:(?:Exp|Imp)ort.*Declaration|TSExportAssignment)$/ + +/** + * Given an AST, return true if the AST unambiguously represents a module. + * @param {Program node} ast + * @return {Boolean} + */ +exports.isModule = function isUnambiguousModule(ast) { + return ast.body.some(node => unambiguousNodeType.test(node.type)) +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/CHANGELOG.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/CHANGELOG.md new file mode 100644 index 0000000..4b76324 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/CHANGELOG.md @@ -0,0 +1,1124 @@ +# Change Log + +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). +This change log adheres to standards from [Keep a CHANGELOG](http://keepachangelog.com). + +## [Unreleased] + +## [2.20.2] - 2020-03-28 +### Fixed +- [`order`]: fix `isExternalModule` detect on windows ([#1651], thanks [@fisker]) +- [`order`]: recognize ".." as a "parent" path ([#1658], thanks [@golopot]) +- [`no-duplicates`]: fix fixer on cases with default import ([#1666], thanks [@golopot]) +- [`no-unused-modules`]: Handle `export { default } from` syntax ([#1631], thanks [@richardxia]) +- [`first`]: Add a way to disable `absolute-first` explicitly ([#1664], thanks [@TheCrueltySage]) + +## [2.20.1] - 2020-02-01 +### Fixed +- [`export`]: Handle function overloading in `*.d.ts` ([#1619], thanks [@IvanGoncharov]) +- [`no-absolute-path`]: fix a crash with invalid import syntax ([#1616], thanks [@ljharb]) +- [`import/external-module-folders` setting] now correctly works with directories containing modules symlinked from `node_modules` ([#1605], thanks [@skozin]) +- [`extensions`]: for invalid code where `name` does not exist, do not crash ([#1613], thanks [@ljharb]) +- [`extensions`]: Fix scope regex ([#1611], thanks [@yordis]) +- [`no-duplicates`]: allow duplicate imports if one is a namespace and the other not ([#1612], thanks [@sveyret]) +- Add some missing rule meta schemas and types ([#1620], thanks [@bmish]) +- [`named`]: for importing from a module which re-exports named exports from a `node_modules` module ([#1569], [#1447], thanks [@redbugz], [@kentcdodds]) +- [`order`]: Fix alphabetize for mixed requires and imports ([#5625], thanks [@wschurman]) + +### Changed +- [`import/external-module-folders` setting] behavior is more strict now: it will only match complete path segments ([#1605], thanks [@skozin]) +- [meta] fix "files" field to include/exclude the proper files ([#1635], thanks [@ljharb]) + +## [2.20.0] - 2020-01-10 +### Added +- [`order`]: added `caseInsensitive` as an additional option to `alphabetize` ([#1586], thanks [@dbrewer5]) +- [`no-restricted-paths`]: New `except` option per `zone`, allowing exceptions to be defined for a restricted zone ([#1238], thanks [@rsolomon]) +- [`order`]: add option pathGroupsExcludedImportTypes to allow ordering of external import types ([#1565], thanks [@Mairu]) + +### Fixed +- [`no-unused-modules`]: fix usage of `import/extensions` settings ([#1560], thanks [@stekycz]) +- [`extensions`]: ignore non-main modules ([#1563], thanks [@saschanaz]) +- TypeScript config: lookup for external modules in @types folder ([#1526], thanks [@joaovieira]) +- [`no-extraneous-dependencies`]: ensure `node.source` is truthy ([#1589], thanks [@ljharb]) +- [`extensions`]: Ignore query strings when checking for extensions ([#1572], thanks [@pcorpet]) + +### Docs +- [`extensions`]: improve `ignorePackages` docs ([#1248], thanks [@ivo-stefchev]) + +## [2.19.1] - 2019-12-08 +### Fixed +- [`no-extraneous-dependencies`]: ensure `node.source` exists + +## [2.19.0] - 2019-12-08 +### Added +- [`internal-regex` setting]: regex pattern for marking packages "internal" ([#1491], thanks [@Librazy]) +- [`group-exports`]: make aggregate module exports valid ([#1472], thanks [@atikenny]) +- [`no-namespace`]: Make rule fixable ([#1401], thanks [@TrevorBurnham]) +- support `parseForESLint` from custom parser ([#1435], thanks [@JounQin]) +- [`no-extraneous-dependencies`]: Implement support for [bundledDependencies](https://npm.github.io/using-pkgs-docs/package-json/types/bundleddependencies.html) ([#1436], thanks [@schmidsi])) +- [`no-unused-modules`]: add flow type support ([#1542], thanks [@rfermann]) +- [`order`]: Adds support for pathGroups to allow ordering by defined patterns ([#795], [#1386], thanks [@Mairu]) +- [`no-duplicates`]: Add `considerQueryString` option : allow duplicate imports with different query strings ([#1107], thanks [@pcorpet]). +- [`order`]: Add support for alphabetical sorting of import paths within import groups ([#1360], [#1105], [#629], thanks [@duncanbeevers], [@stropho], [@luczsoma], [@randallreedjr]) +- [`no-commonjs`]: add `allowConditionalRequire` option ([#1439], thanks [@Pessimistress]) + +### Fixed +- [`default`]: make error message less confusing ([#1470], thanks [@golopot]) +- Improve performance of `ExportMap.for` by only loading paths when necessary. ([#1519], thanks [@brendo]) +- Support export of a merged TypeScript namespace declaration ([#1495], thanks [@benmunro]) +- [`order`]: fix autofix to not move imports across fn calls ([#1253], thanks [@tihonove]) +- [`prefer-default-export`]: fix false positive with type export ([#1506], thanks [@golopot]) +- [`extensions`]: Fix `ignorePackages` to produce errors ([#1521], thanks [@saschanaz]) +- [`no-unused-modules`]: fix crash due to `export *` ([#1496], thanks [@Taranys]) +- [`no-cycle`]: should not warn for Flow imports ([#1494], thanks [@maxmalov]) +- [`order`]: fix `@someModule` considered as `unknown` instead of `internal` ([#1493], thanks [@aamulumi]) +- [`no-extraneous-dependencies`]: Check `export from` ([#1049], thanks [@marcusdarmstrong]) + +### Docs +- [`no-useless-path-segments`]: add docs for option `commonjs` ([#1507], thanks [@golopot]) + +### Changed +- [`no-unused-modules`]/`eslint-module-utils`: Avoid superfluous calls and code ([#1551], thanks [@brettz9]) + +## [2.18.2] - 2019-07-19 +### Fixed +- Skip warning on type interfaces ([#1425], thanks [@lencioni]) + +## [2.18.1] - 2019-07-18 +### Fixed +- Improve parse perf when using `@typescript-eslint/parser` ([#1409], thanks [@bradzacher]) +- [`prefer-default-export`]: don't warn on TypeAlias & TSTypeAliasDeclaration ([#1377], thanks [@sharmilajesupaul]) +- [`no-unused-modules`]: Exclude package "main"/"bin"/"browser" entry points ([#1404], thanks [@rfermann]) +- [`export`]: false positive for TypeScript overloads ([#1412], thanks [@golopot]) + +### Refactors +- [`no-extraneous-dependencies`], `importType`: remove lodash ([#1419], thanks [@ljharb]) + +## [2.18.0] - 2019-06-24 +### Added +- Support eslint v6 ([#1393], thanks [@sheepsteak]) +- [`order`]: Adds support for correctly sorting unknown types into a single group ([#1375], thanks [@swernerx]) +- [`order`]: add fixer for destructuring commonjs import ([#1372], thanks [@golopot]) +- TypeScript config: add TS def extensions + defer to TS over JS ([#1366], thanks [@benmosher]) + +### Fixed +- [`no-unused-modules`]: handle ClassDeclaration ([#1371], thanks [@golopot]) + +### Docs +- [`no-cycle`]: split code examples so file separation is obvious ([#1370], thanks [@alex-page]) +- [`no-named-as-default-member`]: update broken link ([#1389], thanks [@fooloomanzoo]) + +## [2.17.3] - 2019-05-23 +### Fixed +- [`no-common-js`]: Also throw an error when assigning ([#1354], thanks [@charlessuh]) +- [`no-unused-modules`]: don't crash when lint file outside src-folder ([#1347], thanks [@rfermann]) +- [`no-unused-modules`]: make `import { name as otherName }` work ([#1340], [#1342], thanks [@rfermann]) +- [`no-unused-modules`]: make appveyor tests passing ([#1333], thanks [@rfermann]) +- [`named`]: ignore Flow `typeof` imports and `type` exports ([#1345], thanks [@loganfsmyth]) +- [refactor] fix eslint 6 compat by fixing imports (thank [@ljharb]) +- Improve support for TypeScript declare structures ([#1356], thanks [@christophercurrie]) + +### Docs +- add missing `no-unused-modules` in README ([#1358], thanks [@golopot]) +- [`no-unused-modules`]: Indicates usage, plugin defaults to no-op, and add description to main README.md ([#1352], thanks [@johndevedu]) +- Document `env` option for `eslint-import-resolver-webpack` ([#1363], thanks [@kgregory]) + +## [2.17.2] - 2019-04-16 +### Fixed +- [`no-unused-modules`]: avoid crash when using `ignoreExports`-option ([#1331], [#1323], thanks [@rfermann]) +- [`no-unused-modules`]: make sure that rule with no options will not fail ([#1330], [#1334], thanks [@kiwka]) + +## [2.17.1] - 2019-04-13 +### Fixed +- require v2.4 of `eslint-module-utils` ([#1322]) + +## [2.17.0] - 2019-04-13 +### Added +- [`no-useless-path-segments`]: Add `noUselessIndex` option ([#1290], thanks [@timkraut]) +- [`no-duplicates`]: Add autofix ([#1312], thanks [@lydell]) +- Add [`no-unused-modules`] rule ([#1142], thanks [@rfermann]) +- support export type named exports from TypeScript ([#1304], thanks [@bradennapier] and [@schmod]) + +### Fixed +- [`order`]: Fix interpreting some external modules being interpreted as internal modules ([#793], [#794] thanks [@ephys]) +- allow aliases that start with @ to be "internal" ([#1293], [#1294], thanks [@jeffshaver]) +- aliased internal modules that look like core modules ([#1297], thanks [@echenley]) +- [`namespace`]: add check for null ExportMap ([#1235], [#1144], thanks [@ljqx]) +- [ExportMap] fix condition for checking if block comment ([#1234], [#1233], thanks [@ljqx]) +- Fix overwriting of dynamic import() CallExpression ([`no-cycle`], [`no-relative-parent-import`], [`no-unresolved`], [`no-useless-path-segments`]) ([#1218], [#1166], [#1035], thanks [@vikr01]) +- [`export`]: false positives for TypeScript type + value export ([#1319], thanks [@bradzacher]) +- [`export`]: Support TypeScript namespaces ([#1320], [#1300], thanks [@bradzacher]) + +### Docs +- Update readme for TypeScript ([#1256], [#1277], thanks [@kirill-konshin]) +- make rule names consistent ([#1112], thanks [@feychenie]) + +### Tests +- fix broken tests on master ([#1295], thanks [@jeffshaver] and [@ljharb]) +- [`no-commonjs`]: add tests that show corner cases ([#1308], thanks [@TakeScoop]) + +## [2.16.0] - 2019-01-29 +### Added +- `typescript` config ([#1257], thanks [@kirill-konshin]) + +### Fixed +- Memory leak of `SourceCode` objects for all parsed dependencies, resolved. (issue [#1266], thanks [@asapach] and [@sergei-startsev] for digging in) + +## [2.15.0] - 2019-01-22 +### Added +- new rule: [`no-named-export`] ([#1157], thanks [@fsmaia]) + +### Fixed +- [`no-extraneous-dependencies`]: `packageDir` option with array value was clobbering package deps instead of merging them ([#1175]/[#1176], thanks [@aravindet] & [@pzhine]) +- [`dynamic-import-chunkname`]: Add proper webpack comment parsing ([#1163], thanks [@st-sloth]) +- [`named`]: fix destructuring assignment ([#1232], thanks [@ljqx]) + +## [2.14.0] - 2018-08-13 +### Added +- [`no-useless-path-segments`]: add commonJS (CJS) support ([#1128], thanks [@1pete]) +- [`namespace`]: add JSX check ([#1151], thanks [@jf248]) + +### Fixed +- [`no-cycle`]: ignore Flow imports ([#1126], thanks [@gajus]) +- fix Flow type imports ([#1106], thanks [@syymza]) +- [`no-relative-parent-imports`]: resolve paths ([#1135], thanks [@chrislloyd]) +- [`order`]: fix autofixer when using typescript-eslint-parser ([#1137], thanks [@justinanastos]) +- repeat fix from [#797] for [#717], in another place (thanks [@ljharb]) + +### Refactors +- add explicit support for RestElement alongside ExperimentalRestProperty (thanks [@ljharb]) + +## [2.13.0] - 2018-06-24 +### Added +- Add ESLint 5 support ([#1122], thanks [@ai] and [@ljharb]) +- Add [`no-relative-parent-imports`] rule: disallow relative imports from parent directories ([#1093], thanks [@chrislloyd]) + +### Fixed +- `namespace` rule: ensure it works in eslint 5/ecmaVersion 2018 (thanks [@ljharb]) + +## [2.12.0] - 2018-05-17 +### Added +- Ignore type imports for [`named`] rule ([#931], thanks [@mattijsbliek]) +- Add documentation for [`no-useless-path-segments`] rule ([#1068], thanks [@manovotny]) +- `packageDir` option for [`no-extraneous-dependencies`] can be array-valued ([#1085], thanks [@hulkish]) + +## [2.11.0] - 2018-04-09 +### Added +- Fixer for [`first`] ([#1046], thanks [@fengkfengk]) +- `allow-require` option for [`no-commonjs`] rule ([#880], thanks [@futpib]) + +### Fixed +- memory/CPU regression where ASTs were held in memory ([#1058], thanks [@klimashkin]/[@lukeapage]) + +## [2.10.0] - 2018-03-29 +### Added +- Autofixer for [`order`] rule ([#908], thanks [@tihonove]) +- Add [`no-cycle`] rule: reports import cycles. + +## [2.9.0] - 2018-02-21 +### Added +- Add [`group-exports`] rule: style-guide rule to report use of multiple named exports ([#721], thanks [@robertrossmann]) +- Add [`no-self-import`] rule: forbids a module from importing itself. ([#727], [#449], [#447], thanks [@giodamelio]). +- Add [`no-default-export`] rule ([#889], thanks [@isiahmeadows]) +- Add [`no-useless-path-segments`] rule ([#912], thanks [@graingert] and [@danny-andrews]) +- ... and more! check the commits for v[2.9.0] + +## [2.8.0] - 2017-10-18 +### Added +- [`exports-last`] rule ([#620] + [#632], thanks [@k15a]) + +### Changed +- Case-sensitivity checking ignores working directory and ancestors. ([#720] + [#858], thanks [@laysent]) + +### Fixed +- support scoped modules containing hyphens ([#744], thanks [@rosswarren]) +- core-modules now resolves files inside declared modules ([#886] / [#891], thanks [@mplewis]) +- TypeError for missing AST fields from TypeScript ([#842] / [#944], thanks [@alexgorbatchev]) + +## [2.7.0] - 2017-07-06 +### Changed +- [`no-absolute-path`] picks up speed boost, optional AMD support ([#843], thanks [@jseminck]) + +## [2.6.1] - 2017-06-29 +### Fixed +- update bundled node resolver dependency to latest version + +## [2.6.0] - 2017-06-23 +### Changed +- update tests / peerDeps for ESLint 4.0 compatibility ([#871], thanks [@mastilver]) +- [`memo-parser`] updated to require `filePath` on parser options as it melts + down if it's not there, now that this plugin always provides it. (see [#863]) + +## [2.5.0] - 2017-06-22 + +Re-releasing v[2.4.0] after discovering that the memory leak is isolated to the [`memo-parser`], +which is more or less experimental anyway. + +### Added +- Autofixer for newline-after-import. ([#686] + [#696], thanks [@eelyafi]) + +## [2.4.0] - 2017-06-02 [YANKED] + +Yanked due to critical issue in eslint-module-utils with cache key resulting from [#839]. + +### Added +- Add `filePath` into `parserOptions` passed to `parser` ([#839], thanks [@sompylasar]) +- Add `allow` option to [`no-unassigned-import`] to allow for files that match the globs ([#671], [#737], thanks [@kevin940726]). + +## [2.3.0] - 2017-05-18 +### Added +- [`no-anonymous-default-export`] rule: report anonymous default exports ([#712], thanks [@duncanbeevers]). +- Add new value to [`order`]'s `newlines-between` option to allow newlines inside import groups ([#627], [#628], thanks [@giodamelio]) +- Add `count` option to the [`newline-after-import`] rule to allow configuration of number of newlines expected ([#742], thanks [@ntdb]) + +### Changed +- [`no-extraneous-dependencies`]: use `read-pkg-up` to simplify finding + loading `package.json` ([#680], thanks [@wtgtybhertgeghgtwtg]) +- Add support to specify the package.json [`no-extraneous-dependencies`] ([#685], thanks [@ramasilveyra]) + +### Fixed +- attempt to fix crash in [`no-mutable-exports`]. ([#660]) +- "default is a reserved keyword" in no-maned-default tests by locking down babylon to 6.15.0 (#756, thanks @gmathieu) +- support scoped modules containing non word characters + + +## [2.2.0] - 2016-11-07 +### Fixed +- Corrected a few gaffs in the auto-ignore logic to fix major performance issues + with projects that did not explicitly ignore `node_modules`. ([#654]) +- [`import/ignore` setting] was only being respected if the ignored module didn't start with + an `import` or `export` JS statement +- [`prefer-default-export`]: fixed crash on export extensions ([#653]) + +## [2.1.0] - 2016-11-02 +### Added +- Add [`no-named-default`] rule: style-guide rule to report use of unnecessarily named default imports ([#596], thanks [@ntdb]) +- [`no-extraneous-dependencies`]: check globs against CWD + absolute path ([#602] + [#630], thanks [@ljharb]) + +### Fixed +- [`prefer-default-export`] handles flow `export type` ([#484] + [#639], thanks [@jakubsta]) +- [`prefer-default-export`] handles re-exported default exports ([#609]) +- Fix crash when using [`newline-after-import`] with decorators ([#592]) +- Properly report [`newline-after-import`] when next line is a decorator +- Fixed documentation for the default values for the [`order`] rule ([#601]) + +## [2.0.1] - 2016-10-06 +### Fixed +- Fixed code that relied on removed dependencies. ([#604]) + +## [2.0.0]! - 2016-09-30 +### Added +- [`unambiguous`] rule: report modules that are not unambiguously ES modules. +- `recommended` shared config. Roughly `errors` and `warnings` mixed together, + with some `parserOptions` in the mix. ([#402]) +- `react` shared config: added `jsx: true` to `parserOptions.ecmaFeatures`. +- Added [`no-webpack-loader-syntax`] rule: forbid custom Webpack loader syntax in imports. ([#586], thanks [@fson]!) +- Add option `newlines-between: "ignore"` to [`order`] ([#519]) +- Added [`no-unassigned-import`] rule ([#529]) + +### Breaking +- [`import/extensions` setting] defaults to `['.js']`. ([#306]) +- [`import/ignore` setting] defaults to nothing, and ambiguous modules are ignored natively. This means importing from CommonJS modules will no longer be reported by [`default`], [`named`], or [`namespace`], regardless of `import/ignore`. ([#270]) +- [`newline-after-import`]: Removed need for an empty line after an inline `require` call ([#570]) +- [`order`]: Default value for `newlines-between` option is now `ignore` ([#519]) + +### Changed +- `imports-first` is renamed to [`first`]. `imports-first` alias will continue to + exist, but may be removed in a future major release. +- Case-sensitivity: now specifically (and optionally) reported by [`no-unresolved`]. + Other rules will ignore case-mismatches on paths on case-insensitive filesystems. ([#311]) + +### Fixed +- [`no-internal-modules`]: support `@`-scoped packages ([#577]+[#578], thanks [@spalger]) + +## [1.16.0] - 2016-09-22 +### Added +- Added [`no-dynamic-require`] rule: forbid `require()` calls with expressions. ([#567], [#568]) +- Added [`no-internal-modules`] rule: restrict deep package imports to specific folders. ([#485], thanks [@spalger]!) +- [`extensions`]: allow override of a chosen default with options object ([#555], thanks [@ljharb]!) + +### Fixed +- [`no-named-as-default`] no longer false-positives on `export default from '...'` ([#566], thanks [@preco21]) +- [`default`]: allow re-export of values from ignored files as default ([#545], thanks [@skyrpex]) + +## [1.15.0] - 2016-09-12 +### Added +- Added an `allow` option to [`no-nodejs-modules`] to allow exceptions ([#452], [#509]). +- Added [`no-absolute-path`] rule ([#530], [#538]) +- [`max-dependencies`] for specifying the maximum number of dependencies (both `import` and `require`) a module can have. (see [#489], thanks [@tizmagik]) +- Added glob option to config for [`no-extraneous-dependencies`], after much bikeshedding. Thanks, [@knpwrs]! ([#527]) + +### Fixed +- [`no-named-as-default-member`] Allow default import to have a property named "default" ([#507], [#508], thanks [@jquense] for both!) + +## [1.14.0] - 2016-08-22 +### Added +- [`import/parsers` setting]: parse some dependencies (i.e. TypeScript!) with a different parser than the ESLint-configured parser. ([#503]) + +### Fixed +- [`namespace`] exception for get property from `namespace` import, which are re-export from commonjs module ([#499] fixes [#416], thanks [@wKich]) + +## [1.13.0] - 2016-08-11 +### Added +- `allowComputed` option for [`namespace`] rule. If set to `true`, won't report + computed member references to namespaces. (see [#456]) + +### Changed +- Modified [`no-nodejs-modules`] error message to include the module's name ([#453], [#461]) + +### Fixed +- [`import/extensions` setting] is respected in spite of the appearance of imports + in an imported file. (fixes [#478], thanks [@rhys-vdw]) + +## [1.12.0] - 2016-07-26 +### Added +- [`import/external-module-folders` setting]: a possibility to configure folders for "external" modules ([#444], thanks [@zloirock]) + +## [1.11.1] - 2016-07-20 +### Fixed +- [`newline-after-import`] exception for `switch` branches with `require`s iff parsed as `sourceType:'module'`. + (still [#441], thanks again [@ljharb]) + +## [1.11.0] - 2016-07-17 +### Added +- Added an `peerDependencies` option to [`no-extraneous-dependencies`] to allow/forbid peer dependencies ([#423], [#428], thanks [@jfmengels]!). + +### Fixed +- [`newline-after-import`] exception for multiple `require`s in an arrow + function expression (e.g. `() => require('a') || require('b')`). ([#441], thanks [@ljharb]) + +## [1.10.3] - 2016-07-08 +### Fixed +- removing `Symbol` dependencies (i.e. `for-of` loops) due to Node 0.10 polyfill + issue (see [#415]). Should not make any discernible semantic difference. + +## [1.10.2] - 2016-07-04 +### Fixed +- Something horrible happened during `npm prepublish` of 1.10.1. + Several `rm -rf node_modules && npm i` and `gulp clean && npm prepublish`s later, it is rebuilt and republished as 1.10.2. Thanks [@rhettlivingston] for noticing and reporting! + +## [1.10.1] - 2016-07-02 [YANKED] +### Added +- Officially support ESLint 3.x. (peerDependencies updated to `2.x - 3.x`) + +## [1.10.0] - 2016-06-30 +### Added +- Added new rule [`no-restricted-paths`]. ([#155]/[#371], thanks [@lo1tuma]) +- [`import/core-modules` setting]: allow configuration of additional module names, + to be treated as builtin modules (a la `path`, etc. in Node). ([#275] + [#365], thanks [@sindresorhus] for driving) +- React Native shared config (based on comment from [#283]) + +### Fixed +- Fixed crash with `newline-after-import` related to the use of switch cases. (fixes [#386], thanks [@ljharb] for reporting) ([#395]) + +## [1.9.2] - 2016-06-21 +### Fixed +- Issues with ignored/CJS files in [`export`] and [`no-deprecated`] rules. ([#348], [#370]) + +## [1.9.1] - 2016-06-16 +### Fixed +- Reordered precedence for loading resolvers. ([#373]) + +## [1.9.0] - 2016-06-10 +### Added +- Added support TomDoc comments to [`no-deprecated`]. ([#321], thanks [@josh]) +- Added support for loading custom resolvers ([#314], thanks [@le0nik]) + +### Fixed +- [`prefer-default-export`] handles `export function` and `export const` in same file ([#359], thanks [@scottnonnenberg]) + +## [1.8.1] - 2016-05-23 +### Fixed +- `export * from 'foo'` now properly ignores a `default` export from `foo`, if any. ([#328]/[#332], thanks [@jkimbo]) + This impacts all static analysis of imported names. ([`default`], [`named`], [`namespace`], [`export`]) +- Make [`order`]'s `newline-between` option handle multiline import statements ([#313], thanks [@singles]) +- Make [`order`]'s `newline-between` option handle not assigned import statements ([#313], thanks [@singles]) +- Make [`order`]'s `newline-between` option ignore `require` statements inside object literals ([#313], thanks [@singles]) +- [`prefer-default-export`] properly handles deep destructuring, `export * from ...`, and files with no exports. ([#342]+[#343], thanks [@scottnonnenberg]) + +## [1.8.0] - 2016-05-11 +### Added +- [`prefer-default-export`], new rule. ([#308], thanks [@gavriguy]) + +### Fixed +- Ignore namespace / ES7 re-exports in [`no-mutable-exports`]. ([#317], fixed by [#322]. thanks [@borisyankov] + [@jfmengels]) +- Make [`no-extraneous-dependencies`] handle scoped packages ([#316], thanks [@jfmengels]) + +## [1.7.0] - 2016-05-06 +### Added +- [`newline-after-import`], new rule. ([#245], thanks [@singles]) +- Added an `optionalDependencies` option to [`no-extraneous-dependencies`] to allow/forbid optional dependencies ([#266], thanks [@jfmengels]). +- Added `newlines-between` option to [`order`] rule ([#298], thanks [@singles]) +- add [`no-mutable-exports`] rule ([#290], thanks [@josh]) +- [`import/extensions` setting]: a list of file extensions to parse as modules + and search for `export`s. If unspecified, all extensions are considered valid (for now). + In v2, this will likely default to `['.js', MODULE_EXT]`. ([#297], to fix [#267]) + +### Fixed +- [`extensions`]: fallback to source path for extension enforcement if imported + module is not resolved. Also, never report for builtins (i.e. `path`). ([#296]) + +## [1.6.1] - 2016-04-28 +### Fixed +- [`no-named-as-default-member`]: don't crash on rest props. ([#281], thanks [@SimenB]) +- support for Node 6: don't pass `null` to `path` functions. + Thanks to [@strawbrary] for bringing this up ([#272]) and adding OSX support to the Travis + config ([#288]). + +## [1.6.0] - 2016-04-25 +### Added +- add [`no-named-as-default-member`] to `warnings` canned config +- add [`no-extraneous-dependencies`] rule ([#241], thanks [@jfmengels]) +- add [`extensions`] rule ([#250], thanks [@lo1tuma]) +- add [`no-nodejs-modules`] rule ([#261], thanks [@jfmengels]) +- add [`order`] rule ([#247], thanks [@jfmengels]) +- consider `resolve.fallback` config option in the webpack resolver ([#254]) + +### Changed +- [`imports-first`] now allows directives (i.e. `'use strict'`) strictly before + any imports ([#256], thanks [@lemonmade]) + +### Fixed +- [`named`] now properly ignores the source module if a name is re-exported from + an ignored file (i.e. `node_modules`). Also improved the reported error. (thanks to [@jimbolla] for reporting) +- [`no-named-as-default-member`] had a crash on destructuring in loops (thanks for heads up from [@lemonmade]) + +## [1.5.0] - 2016-04-18 +### Added +- report resolver errors at the top of the linted file +- add [`no-namespace`] rule ([#239], thanks [@singles]) +- add [`no-named-as-default-member`] rule ([#243], thanks [@dmnd]) + +### Changed +- Rearranged rule groups in README in preparation for more style guide rules + +### Removed +- support for Node 0.10, via `es6-*` ponyfills. Using native Map/Set/Symbol. + +## [1.4.0] - 2016-03-25 +### Added +- Resolver plugin interface v2: more explicit response format that more clearly covers the found-but-core-module case, where there is no path. + Still backwards-compatible with the original version of the resolver spec. +- [Resolver documentation](./resolvers/README.md) + +### Changed +- using `package.json/files` instead of `.npmignore` for package file inclusion ([#228], thanks [@mathieudutour]) +- using `es6-*` ponyfills instead of `babel-runtime` + +## [1.3.0] - 2016-03-20 +Major perf improvements. Between parsing only once and ignoring gigantic, non-module `node_modules`, +there is very little added time. + +My test project takes 17s to lint completely, down from 55s, when using the +memoizing parser, and takes only 27s with naked `babel-eslint` (thus, reparsing local modules). + +### Added +- This change log ([#216]) +- Experimental memoizing [parser](./memo-parser/README.md) + +### Fixed +- Huge reduction in execution time by _only_ ignoring [`import/ignore` setting] if + something that looks like an `export` is detected in the module content. + +## [1.2.0] - 2016-03-19 +Thanks [@lencioni] for identifying a huge amount of rework in resolve and kicking +off a bunch of memoization. + +I'm seeing 62% improvement over my normal test codebase when executing only +[`no-unresolved`] in isolation, and ~35% total reduction in lint time. + +### Changed +- added caching to core/resolve via [#214], configured via [`import/cache` setting] + +## [1.1.0] - 2016-03-15 +### Added +- Added an [`ignore`](./docs/rules/no-unresolved.md#ignore) option to [`no-unresolved`] for those pesky files that no resolver can find. (still prefer enhancing the Webpack and Node resolvers to using it, though). See [#89] for details. + +## [1.0.4] - 2016-03-11 + +### Changed +- respect hoisting for deep namespaces ([`namespace`]/[`no-deprecated`]) ([#211]) + +### Fixed +- don't crash on self references ([#210]) +- correct cache behavior in `eslint_d` for deep namespaces ([#200]) + +## [1.0.3] - 2016-02-26 + +### Changed +- no-deprecated follows deep namespaces ([#191]) + +### Fixed +- [`namespace`] no longer flags modules with only a default export as having no names. (ns.default is valid ES6) + +## [1.0.2] - 2016-02-26 + +### Fixed +- don't parse imports with no specifiers ([#192]) + +## [1.0.1] - 2016-02-25 + +### Fixed +- export `stage-0` shared config +- documented [`no-deprecated`] +- deep namespaces are traversed regardless of how they get imported ([#189]) + +## [1.0.0] - 2016-02-24 + +### Added +- [`no-deprecated`]: WIP rule to let you know at lint time if you're using deprecated functions, constants, classes, or modules. + +### Changed +- [`namespace`]: support deep namespaces ([#119] via [#157]) + +## [1.0.0-beta.0] - 2016-02-13 + +### Changed +- support for (only) ESLint 2.x +- no longer needs/refers to `import/parser` or `import/parse-options`. Instead, ESLint provides the configured parser + options to the rules, and they use that to parse dependencies. + +### Removed + +- `babylon` as default import parser (see Breaking) + +## [0.13.0] - 2016-02-08 +### Added +- [`no-commonjs`] rule +- [`no-amd`] rule + +### Removed +- Removed vestigial `no-require` rule. [`no-commonjs`] is more complete. + +## [0.12.2] - 2016-02-06 [YANKED] +Unpublished from npm and re-released as 0.13.0. See [#170]. + +## [0.12.1] - 2015-12-17 +### Changed +- Broke docs for rules out into individual files. + +## [0.12.0] - 2015-12-14 +### Changed +- Ignore [`import/ignore` setting] if exports are actually found in the parsed module. Does this to support use of `jsnext:main` in `node_modules` without the pain of managing an allow list or a nuanced deny list. + +## [0.11.0] - 2015-11-27 +### Added +- Resolver plugins. Now the linter can read Webpack config, properly follow aliases and ignore externals, dismisses inline loaders, etc. etc.! + +## Earlier releases (0.10.1 and younger) +See [GitHub release notes](https://github.com/benmosher/eslint-plugin-import/releases?after=v0.11.0) +for info on changes for earlier releases. + + +[`import/cache` setting]: ./README.md#importcache +[`import/ignore` setting]: ./README.md#importignore +[`import/extensions` setting]: ./README.md#importextensions +[`import/parsers` setting]: ./README.md#importparsers +[`import/core-modules` setting]: ./README.md#importcore-modules +[`import/external-module-folders` setting]: ./README.md#importexternal-module-folders +[`internal-regex` setting]: ./README.md#importinternal-regex + +[`default`]: ./docs/rules/default.md +[`dynamic-import-chunkname`]: ./docs/rules/dynamic-import-chunkname.md +[`export`]: ./docs/rules/export.md +[`exports-last`]: ./docs/rules/exports-last.md +[`extensions`]: ./docs/rules/extensions.md +[`first`]: ./docs/rules/first.md +[`group-exports`]: ./docs/rules/group-exports.md +[`imports-first`]: ./docs/rules/first.md +[`max-dependencies`]: ./docs/rules/max-dependencies.md +[`named`]: ./docs/rules/named.md +[`namespace`]: ./docs/rules/namespace.md +[`newline-after-import`]: ./docs/rules/newline-after-import.md +[`no-absolute-path`]: ./docs/rules/no-absolute-path.md +[`no-amd`]: ./docs/rules/no-amd.md +[`no-anonymous-default-export`]: ./docs/rules/no-anonymous-default-export.md +[`no-commonjs`]: ./docs/rules/no-commonjs.md +[`no-cycle`]: ./docs/rules/no-cycle.md +[`no-default-export`]: ./docs/rules/no-default-export.md +[`no-deprecated`]: ./docs/rules/no-deprecated.md +[`no-duplicates`]: ./docs/rules/no-duplicates.md +[`no-dynamic-require`]: ./docs/rules/no-dynamic-require.md +[`no-extraneous-dependencies`]: ./docs/rules/no-extraneous-dependencies.md +[`no-internal-modules`]: ./docs/rules/no-internal-modules.md +[`no-mutable-exports`]: ./docs/rules/no-mutable-exports.md +[`no-named-as-default-member`]: ./docs/rules/no-named-as-default-member.md +[`no-named-as-default`]: ./docs/rules/no-named-as-default.md +[`no-named-default`]: ./docs/rules/no-named-default.md +[`no-named-export`]: ./docs/rules/no-named-export.md +[`no-namespace`]: ./docs/rules/no-namespace.md +[`no-nodejs-modules`]: ./docs/rules/no-nodejs-modules.md +[`no-restricted-paths`]: ./docs/rules/no-restricted-paths.md +[`no-self-import`]: ./docs/rules/no-self-import.md +[`no-unassigned-import`]: ./docs/rules/no-unassigned-import.md +[`no-unresolved`]: ./docs/rules/no-unresolved.md +[`no-unused-modules`]: ./docs/rules/no-unused-modules.md +[`no-useless-path-segments`]: ./docs/rules/no-useless-path-segments.md +[`no-webpack-loader-syntax`]: ./docs/rules/no-webpack-loader-syntax.md +[`order`]: ./docs/rules/order.md +[`prefer-default-export`]: ./docs/rules/prefer-default-export.md +[`unambiguous`]: ./docs/rules/unambiguous.md + +[`memo-parser`]: ./memo-parser/README.md + +[#1666]: https://github.com/benmosher/eslint-plugin-import/pull/1666 +[#1664]: https://github.com/benmosher/eslint-plugin-import/pull/1664 +[#1658]: https://github.com/benmosher/eslint-plugin-import/pull/1658 +[#1651]: https://github.com/benmosher/eslint-plugin-import/pull/1651 +[#1635]: https://github.com/benmosher/eslint-plugin-import/issues/1635 +[#1631]: https://github.com/benmosher/eslint-plugin-import/issues/1631 +[#1625]: https://github.com/benmosher/eslint-plugin-import/pull/1625 +[#1620]: https://github.com/benmosher/eslint-plugin-import/pull/1620 +[#1619]: https://github.com/benmosher/eslint-plugin-import/pull/1619 +[#1616]: https://github.com/benmosher/eslint-plugin-import/issues/1616 +[#1613]: https://github.com/benmosher/eslint-plugin-import/issues/1613 +[#1612]: https://github.com/benmosher/eslint-plugin-import/pull/1612 +[#1611]: https://github.com/benmosher/eslint-plugin-import/pull/1611 +[#1605]: https://github.com/benmosher/eslint-plugin-import/pull/1605 +[#1589]: https://github.com/benmosher/eslint-plugin-import/issues/1589 +[#1586]: https://github.com/benmosher/eslint-plugin-import/pull/1586 +[#1572]: https://github.com/benmosher/eslint-plugin-import/pull/1572 +[#1569]: https://github.com/benmosher/eslint-plugin-import/pull/1569 +[#1563]: https://github.com/benmosher/eslint-plugin-import/pull/1563 +[#1560]: https://github.com/benmosher/eslint-plugin-import/pull/1560 +[#1551]: https://github.com/benmosher/eslint-plugin-import/pull/1551 +[#1542]: https://github.com/benmosher/eslint-plugin-import/pull/1542 +[#1526]: https://github.com/benmosher/eslint-plugin-import/pull/1526 +[#1521]: https://github.com/benmosher/eslint-plugin-import/pull/1521 +[#1519]: https://github.com/benmosher/eslint-plugin-import/pull/1519 +[#1507]: https://github.com/benmosher/eslint-plugin-import/pull/1507 +[#1506]: https://github.com/benmosher/eslint-plugin-import/pull/1506 +[#1496]: https://github.com/benmosher/eslint-plugin-import/pull/1496 +[#1495]: https://github.com/benmosher/eslint-plugin-import/pull/1495 +[#1494]: https://github.com/benmosher/eslint-plugin-import/pull/1494 +[#1493]: https://github.com/benmosher/eslint-plugin-import/pull/1493 +[#1472]: https://github.com/benmosher/eslint-plugin-import/pull/1472 +[#1470]: https://github.com/benmosher/eslint-plugin-import/pull/1470 +[#1447]: https://github.com/benmosher/eslint-plugin-import/pull/1447 +[#1439]: https://github.com/benmosher/eslint-plugin-import/pull/1439 +[#1436]: https://github.com/benmosher/eslint-plugin-import/pull/1436 +[#1435]: https://github.com/benmosher/eslint-plugin-import/pull/1435 +[#1425]: https://github.com/benmosher/eslint-plugin-import/pull/1425 +[#1419]: https://github.com/benmosher/eslint-plugin-import/pull/1419 +[#1412]: https://github.com/benmosher/eslint-plugin-import/pull/1412 +[#1409]: https://github.com/benmosher/eslint-plugin-import/pull/1409 +[#1404]: https://github.com/benmosher/eslint-plugin-import/pull/1404 +[#1401]: https://github.com/benmosher/eslint-plugin-import/pull/1401 +[#1393]: https://github.com/benmosher/eslint-plugin-import/pull/1393 +[#1389]: https://github.com/benmosher/eslint-plugin-import/pull/1389 +[#1386]: https://github.com/benmosher/eslint-plugin-import/pull/1386 +[#1377]: https://github.com/benmosher/eslint-plugin-import/pull/1377 +[#1375]: https://github.com/benmosher/eslint-plugin-import/pull/1375 +[#1372]: https://github.com/benmosher/eslint-plugin-import/pull/1372 +[#1371]: https://github.com/benmosher/eslint-plugin-import/pull/1371 +[#1370]: https://github.com/benmosher/eslint-plugin-import/pull/1370 +[#1363]: https://github.com/benmosher/eslint-plugin-import/pull/1363 +[#1360]: https://github.com/benmosher/eslint-plugin-import/pull/1360 +[#1358]: https://github.com/benmosher/eslint-plugin-import/pull/1358 +[#1356]: https://github.com/benmosher/eslint-plugin-import/pull/1356 +[#1354]: https://github.com/benmosher/eslint-plugin-import/pull/1354 +[#1352]: https://github.com/benmosher/eslint-plugin-import/pull/1352 +[#1347]: https://github.com/benmosher/eslint-plugin-import/pull/1347 +[#1345]: https://github.com/benmosher/eslint-plugin-import/pull/1345 +[#1342]: https://github.com/benmosher/eslint-plugin-import/pull/1342 +[#1340]: https://github.com/benmosher/eslint-plugin-import/pull/1340 +[#1333]: https://github.com/benmosher/eslint-plugin-import/pull/1333 +[#1331]: https://github.com/benmosher/eslint-plugin-import/pull/1331 +[#1330]: https://github.com/benmosher/eslint-plugin-import/pull/1330 +[#1320]: https://github.com/benmosher/eslint-plugin-import/pull/1320 +[#1319]: https://github.com/benmosher/eslint-plugin-import/pull/1319 +[#1312]: https://github.com/benmosher/eslint-plugin-import/pull/1312 +[#1308]: https://github.com/benmosher/eslint-plugin-import/pull/1308 +[#1304]: https://github.com/benmosher/eslint-plugin-import/pull/1304 +[#1297]: https://github.com/benmosher/eslint-plugin-import/pull/1297 +[#1295]: https://github.com/benmosher/eslint-plugin-import/pull/1295 +[#1294]: https://github.com/benmosher/eslint-plugin-import/pull/1294 +[#1290]: https://github.com/benmosher/eslint-plugin-import/pull/1290 +[#1277]: https://github.com/benmosher/eslint-plugin-import/pull/1277 +[#1257]: https://github.com/benmosher/eslint-plugin-import/pull/1257 +[#1253]: https://github.com/benmosher/eslint-plugin-import/pull/1253 +[#1248]: https://github.com/benmosher/eslint-plugin-import/pull/1248 +[#1238]: https://github.com/benmosher/eslint-plugin-import/pull/1238 +[#1235]: https://github.com/benmosher/eslint-plugin-import/pull/1235 +[#1234]: https://github.com/benmosher/eslint-plugin-import/pull/1234 +[#1232]: https://github.com/benmosher/eslint-plugin-import/pull/1232 +[#1218]: https://github.com/benmosher/eslint-plugin-import/pull/1218 +[#1176]: https://github.com/benmosher/eslint-plugin-import/pull/1176 +[#1163]: https://github.com/benmosher/eslint-plugin-import/pull/1163 +[#1157]: https://github.com/benmosher/eslint-plugin-import/pull/1157 +[#1151]: https://github.com/benmosher/eslint-plugin-import/pull/1151 +[#1142]: https://github.com/benmosher/eslint-plugin-import/pull/1142 +[#1137]: https://github.com/benmosher/eslint-plugin-import/pull/1137 +[#1135]: https://github.com/benmosher/eslint-plugin-import/pull/1135 +[#1128]: https://github.com/benmosher/eslint-plugin-import/pull/1128 +[#1126]: https://github.com/benmosher/eslint-plugin-import/pull/1126 +[#1122]: https://github.com/benmosher/eslint-plugin-import/pull/1122 +[#1112]: https://github.com/benmosher/eslint-plugin-import/pull/1112 +[#1107]: https://github.com/benmosher/eslint-plugin-import/pull/1107 +[#1106]: https://github.com/benmosher/eslint-plugin-import/pull/1106 +[#1105]: https://github.com/benmosher/eslint-plugin-import/pull/1105 +[#1093]: https://github.com/benmosher/eslint-plugin-import/pull/1093 +[#1085]: https://github.com/benmosher/eslint-plugin-import/pull/1085 +[#1068]: https://github.com/benmosher/eslint-plugin-import/pull/1068 +[#1049]: https://github.com/benmosher/eslint-plugin-import/pull/1049 +[#1046]: https://github.com/benmosher/eslint-plugin-import/pull/1046 +[#944]: https://github.com/benmosher/eslint-plugin-import/pull/944 +[#912]: https://github.com/benmosher/eslint-plugin-import/pull/912 +[#908]: https://github.com/benmosher/eslint-plugin-import/pull/908 +[#891]: https://github.com/benmosher/eslint-plugin-import/pull/891 +[#889]: https://github.com/benmosher/eslint-plugin-import/pull/889 +[#880]: https://github.com/benmosher/eslint-plugin-import/pull/880 +[#871]: https://github.com/benmosher/eslint-plugin-import/pull/871 +[#858]: https://github.com/benmosher/eslint-plugin-import/pull/858 +[#843]: https://github.com/benmosher/eslint-plugin-import/pull/843 +[#797]: https://github.com/benmosher/eslint-plugin-import/pull/797 +[#794]: https://github.com/benmosher/eslint-plugin-import/pull/794 +[#744]: https://github.com/benmosher/eslint-plugin-import/pull/744 +[#742]: https://github.com/benmosher/eslint-plugin-import/pull/742 +[#737]: https://github.com/benmosher/eslint-plugin-import/pull/737 +[#727]: https://github.com/benmosher/eslint-plugin-import/pull/727 +[#721]: https://github.com/benmosher/eslint-plugin-import/pull/721 +[#712]: https://github.com/benmosher/eslint-plugin-import/pull/712 +[#696]: https://github.com/benmosher/eslint-plugin-import/pull/696 +[#685]: https://github.com/benmosher/eslint-plugin-import/pull/685 +[#680]: https://github.com/benmosher/eslint-plugin-import/pull/680 +[#654]: https://github.com/benmosher/eslint-plugin-import/pull/654 +[#639]: https://github.com/benmosher/eslint-plugin-import/pull/639 +[#632]: https://github.com/benmosher/eslint-plugin-import/pull/632 +[#630]: https://github.com/benmosher/eslint-plugin-import/pull/630 +[#629]: https://github.com/benmosher/eslint-plugin-import/pull/629 +[#628]: https://github.com/benmosher/eslint-plugin-import/pull/628 +[#596]: https://github.com/benmosher/eslint-plugin-import/pull/596 +[#586]: https://github.com/benmosher/eslint-plugin-import/pull/586 +[#578]: https://github.com/benmosher/eslint-plugin-import/pull/578 +[#568]: https://github.com/benmosher/eslint-plugin-import/pull/568 +[#555]: https://github.com/benmosher/eslint-plugin-import/pull/555 +[#538]: https://github.com/benmosher/eslint-plugin-import/pull/538 +[#527]: https://github.com/benmosher/eslint-plugin-import/pull/527 +[#509]: https://github.com/benmosher/eslint-plugin-import/pull/509 +[#508]: https://github.com/benmosher/eslint-plugin-import/pull/508 +[#503]: https://github.com/benmosher/eslint-plugin-import/pull/503 +[#499]: https://github.com/benmosher/eslint-plugin-import/pull/499 +[#489]: https://github.com/benmosher/eslint-plugin-import/pull/489 +[#485]: https://github.com/benmosher/eslint-plugin-import/pull/485 +[#461]: https://github.com/benmosher/eslint-plugin-import/pull/461 +[#449]: https://github.com/benmosher/eslint-plugin-import/pull/449 +[#444]: https://github.com/benmosher/eslint-plugin-import/pull/444 +[#428]: https://github.com/benmosher/eslint-plugin-import/pull/428 +[#395]: https://github.com/benmosher/eslint-plugin-import/pull/395 +[#371]: https://github.com/benmosher/eslint-plugin-import/pull/371 +[#365]: https://github.com/benmosher/eslint-plugin-import/pull/365 +[#359]: https://github.com/benmosher/eslint-plugin-import/pull/359 +[#343]: https://github.com/benmosher/eslint-plugin-import/pull/343 +[#332]: https://github.com/benmosher/eslint-plugin-import/pull/332 +[#322]: https://github.com/benmosher/eslint-plugin-import/pull/322 +[#321]: https://github.com/benmosher/eslint-plugin-import/pull/321 +[#316]: https://github.com/benmosher/eslint-plugin-import/pull/316 +[#314]: https://github.com/benmosher/eslint-plugin-import/pull/314 +[#308]: https://github.com/benmosher/eslint-plugin-import/pull/308 +[#298]: https://github.com/benmosher/eslint-plugin-import/pull/298 +[#297]: https://github.com/benmosher/eslint-plugin-import/pull/297 +[#296]: https://github.com/benmosher/eslint-plugin-import/pull/296 +[#290]: https://github.com/benmosher/eslint-plugin-import/pull/290 +[#289]: https://github.com/benmosher/eslint-plugin-import/pull/289 +[#288]: https://github.com/benmosher/eslint-plugin-import/pull/288 +[#287]: https://github.com/benmosher/eslint-plugin-import/pull/287 +[#278]: https://github.com/benmosher/eslint-plugin-import/pull/278 +[#261]: https://github.com/benmosher/eslint-plugin-import/pull/261 +[#256]: https://github.com/benmosher/eslint-plugin-import/pull/256 +[#254]: https://github.com/benmosher/eslint-plugin-import/pull/254 +[#250]: https://github.com/benmosher/eslint-plugin-import/pull/250 +[#247]: https://github.com/benmosher/eslint-plugin-import/pull/247 +[#245]: https://github.com/benmosher/eslint-plugin-import/pull/245 +[#243]: https://github.com/benmosher/eslint-plugin-import/pull/243 +[#241]: https://github.com/benmosher/eslint-plugin-import/pull/241 +[#239]: https://github.com/benmosher/eslint-plugin-import/pull/239 +[#228]: https://github.com/benmosher/eslint-plugin-import/pull/228 +[#211]: https://github.com/benmosher/eslint-plugin-import/pull/211 +[#164]: https://github.com/benmosher/eslint-plugin-import/pull/164 +[#157]: https://github.com/benmosher/eslint-plugin-import/pull/157 +[#1565]: https://github.com/benmosher/eslint-plugin-import/issues/1565 +[#1366]: https://github.com/benmosher/eslint-plugin-import/issues/1366 +[#1334]: https://github.com/benmosher/eslint-plugin-import/issues/1334 +[#1323]: https://github.com/benmosher/eslint-plugin-import/issues/1323 +[#1322]: https://github.com/benmosher/eslint-plugin-import/issues/1322 +[#1300]: https://github.com/benmosher/eslint-plugin-import/issues/1300 +[#1293]: https://github.com/benmosher/eslint-plugin-import/issues/1293 +[#1266]: https://github.com/benmosher/eslint-plugin-import/issues/1266 +[#1256]: https://github.com/benmosher/eslint-plugin-import/issues/1256 +[#1233]: https://github.com/benmosher/eslint-plugin-import/issues/1233 +[#1175]: https://github.com/benmosher/eslint-plugin-import/issues/1175 +[#1166]: https://github.com/benmosher/eslint-plugin-import/issues/1166 +[#1144]: https://github.com/benmosher/eslint-plugin-import/issues/1144 +[#1058]: https://github.com/benmosher/eslint-plugin-import/issues/1058 +[#1035]: https://github.com/benmosher/eslint-plugin-import/issues/1035 +[#931]: https://github.com/benmosher/eslint-plugin-import/issues/931 +[#886]: https://github.com/benmosher/eslint-plugin-import/issues/886 +[#863]: https://github.com/benmosher/eslint-plugin-import/issues/863 +[#842]: https://github.com/benmosher/eslint-plugin-import/issues/842 +[#839]: https://github.com/benmosher/eslint-plugin-import/issues/839 +[#795]: https://github.com/benmosher/eslint-plugin-import/issues/795 +[#793]: https://github.com/benmosher/eslint-plugin-import/issues/793 +[#720]: https://github.com/benmosher/eslint-plugin-import/issues/720 +[#717]: https://github.com/benmosher/eslint-plugin-import/issues/717 +[#686]: https://github.com/benmosher/eslint-plugin-import/issues/686 +[#671]: https://github.com/benmosher/eslint-plugin-import/issues/671 +[#660]: https://github.com/benmosher/eslint-plugin-import/issues/660 +[#653]: https://github.com/benmosher/eslint-plugin-import/issues/653 +[#627]: https://github.com/benmosher/eslint-plugin-import/issues/627 +[#620]: https://github.com/benmosher/eslint-plugin-import/issues/620 +[#609]: https://github.com/benmosher/eslint-plugin-import/issues/609 +[#604]: https://github.com/benmosher/eslint-plugin-import/issues/604 +[#602]: https://github.com/benmosher/eslint-plugin-import/issues/602 +[#601]: https://github.com/benmosher/eslint-plugin-import/issues/601 +[#592]: https://github.com/benmosher/eslint-plugin-import/issues/592 +[#577]: https://github.com/benmosher/eslint-plugin-import/issues/577 +[#570]: https://github.com/benmosher/eslint-plugin-import/issues/570 +[#567]: https://github.com/benmosher/eslint-plugin-import/issues/567 +[#566]: https://github.com/benmosher/eslint-plugin-import/issues/566 +[#545]: https://github.com/benmosher/eslint-plugin-import/issues/545 +[#530]: https://github.com/benmosher/eslint-plugin-import/issues/530 +[#529]: https://github.com/benmosher/eslint-plugin-import/issues/529 +[#519]: https://github.com/benmosher/eslint-plugin-import/issues/519 +[#507]: https://github.com/benmosher/eslint-plugin-import/issues/507 +[#484]: https://github.com/benmosher/eslint-plugin-import/issues/484 +[#478]: https://github.com/benmosher/eslint-plugin-import/issues/478 +[#456]: https://github.com/benmosher/eslint-plugin-import/issues/456 +[#453]: https://github.com/benmosher/eslint-plugin-import/issues/453 +[#452]: https://github.com/benmosher/eslint-plugin-import/issues/452 +[#447]: https://github.com/benmosher/eslint-plugin-import/issues/447 +[#441]: https://github.com/benmosher/eslint-plugin-import/issues/441 +[#423]: https://github.com/benmosher/eslint-plugin-import/issues/423 +[#416]: https://github.com/benmosher/eslint-plugin-import/issues/416 +[#415]: https://github.com/benmosher/eslint-plugin-import/issues/415 +[#402]: https://github.com/benmosher/eslint-plugin-import/issues/402 +[#386]: https://github.com/benmosher/eslint-plugin-import/issues/386 +[#373]: https://github.com/benmosher/eslint-plugin-import/issues/373 +[#370]: https://github.com/benmosher/eslint-plugin-import/issues/370 +[#348]: https://github.com/benmosher/eslint-plugin-import/issues/348 +[#342]: https://github.com/benmosher/eslint-plugin-import/issues/342 +[#328]: https://github.com/benmosher/eslint-plugin-import/issues/328 +[#317]: https://github.com/benmosher/eslint-plugin-import/issues/317 +[#313]: https://github.com/benmosher/eslint-plugin-import/issues/313 +[#311]: https://github.com/benmosher/eslint-plugin-import/issues/311 +[#306]: https://github.com/benmosher/eslint-plugin-import/issues/306 +[#286]: https://github.com/benmosher/eslint-plugin-import/issues/286 +[#283]: https://github.com/benmosher/eslint-plugin-import/issues/283 +[#281]: https://github.com/benmosher/eslint-plugin-import/issues/281 +[#275]: https://github.com/benmosher/eslint-plugin-import/issues/275 +[#272]: https://github.com/benmosher/eslint-plugin-import/issues/272 +[#270]: https://github.com/benmosher/eslint-plugin-import/issues/270 +[#267]: https://github.com/benmosher/eslint-plugin-import/issues/267 +[#266]: https://github.com/benmosher/eslint-plugin-import/issues/266 +[#216]: https://github.com/benmosher/eslint-plugin-import/issues/216 +[#214]: https://github.com/benmosher/eslint-plugin-import/issues/214 +[#210]: https://github.com/benmosher/eslint-plugin-import/issues/210 +[#200]: https://github.com/benmosher/eslint-plugin-import/issues/200 +[#192]: https://github.com/benmosher/eslint-plugin-import/issues/192 +[#191]: https://github.com/benmosher/eslint-plugin-import/issues/191 +[#189]: https://github.com/benmosher/eslint-plugin-import/issues/189 +[#170]: https://github.com/benmosher/eslint-plugin-import/issues/170 +[#155]: https://github.com/benmosher/eslint-plugin-import/issues/155 +[#119]: https://github.com/benmosher/eslint-plugin-import/issues/119 +[#89]: https://github.com/benmosher/eslint-plugin-import/issues/89 + +[Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v2.20.2...HEAD +[2.20.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.20.1...v2.20.2 +[2.20.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.20.0...v2.20.1 +[2.19.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.19.1...v2.20.0 +[2.19.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.19.0...v2.19.1 +[2.19.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.18.2...v2.19.0 +[2.18.2]: https://github.com/benmosher/eslint-plugin-import/compare/v2.18.1...v2.18.2 +[2.18.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.18.0...v2.18.1 +[2.18.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.17.3...v2.18.0 +[2.17.3]: https://github.com/benmosher/eslint-plugin-import/compare/v2.17.2...v2.17.3 +[2.17.2]: https://github.com/benmosher/eslint-plugin-import/compare/v2.17.1...v2.17.2 +[2.17.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.17.0...v2.17.1 +[2.17.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.16.0...v2.17.0 +[2.16.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.15.0...v2.16.0 +[2.15.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.14.0...v2.15.0 +[2.14.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.13.0...v2.14.0 +[2.13.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.12.0...v2.13.0 +[2.12.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.11.0...v2.12.0 +[2.11.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.10.0...v2.11.0 +[2.10.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.9.0...v2.10.0 +[2.9.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.8.0...v2.9.0 +[2.8.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.7.0...v2.8.0 +[2.7.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.6.1...v2.7.0 +[2.6.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.6.0...v2.6.1 +[2.6.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.5.0...v2.6.0 +[2.5.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.4.0...v2.5.0 +[2.4.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.3.0...v2.4.0 +[2.3.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.2.0...v2.3.0 +[2.2.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.1.0...v2.2.0 +[2.1.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.1...v2.1.0 +[2.0.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.0...v2.0.1 +[2.0.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.16.0...v2.0.0 +[1.16.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.15.0...v1.16.0 +[1.15.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.14.0...v1.15.0 +[1.14.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.13.0...v1.14.0 +[1.13.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.12.0...v1.13.0 +[1.12.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.11.1...v1.12.0 +[1.11.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.11.0...v1.11.1 +[1.11.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.3...v1.11.0 +[1.10.3]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.2...v1.10.3 +[1.10.2]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.1...v1.10.2 +[1.10.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.10.0...v1.10.1 +[1.10.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.9.2...v1.10.0 +[1.9.2]: https://github.com/benmosher/eslint-plugin-import/compare/v1.9.1...v1.9.2 +[1.9.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.9.0...v1.9.1 +[1.9.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.8.1...v1.9.0 +[1.8.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.8.0...v1.8.1 +[1.8.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.7.0...v1.8.0 +[1.7.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.6.1...v1.7.0 +[1.6.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.6.0...v1.6.1 +[1.6.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.5.0...1.6.0 +[1.5.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.4.0...v1.5.0 +[1.4.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.3.0...v1.4.0 +[1.3.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.2.0...v1.3.0 +[1.2.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.4...v1.1.0 +[1.0.4]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.3...v1.0.4 +[1.0.3]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.2...v1.0.3 +[1.0.2]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.1...v1.0.2 +[1.0.1]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.0...v1.0.1 +[1.0.0]: https://github.com/benmosher/eslint-plugin-import/compare/v1.0.0-beta.0...v1.0.0 +[1.0.0-beta.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.13.0...v1.0.0-beta.0 +[0.13.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.12.1...v0.13.0 +[0.12.2]: https://github.com/benmosher/eslint-plugin-import/compare/v0.12.1...v0.12.2 +[0.12.1]: https://github.com/benmosher/eslint-plugin-import/compare/v0.12.0...v0.12.1 +[0.12.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.11.0...v0.12.0 +[0.11.0]: https://github.com/benmosher/eslint-plugin-import/compare/v0.10.1...v0.11.0 +[@mathieudutour]: https://github.com/mathieudutour +[@gausie]: https://github.com/gausie +[@singles]: https://github.com/singles +[@jfmengels]: https://github.com/jfmengels +[@lo1tuma]: https://github.com/lo1tuma +[@dmnd]: https://github.com/dmnd +[@lemonmade]: https://github.com/lemonmade +[@jimbolla]: https://github.com/jimbolla +[@jquense]: https://github.com/jquense +[@jonboiser]: https://github.com/jonboiser +[@taion]: https://github.com/taion +[@strawbrary]: https://github.com/strawbrary +[@SimenB]: https://github.com/SimenB +[@josh]: https://github.com/josh +[@borisyankov]: https://github.com/borisyankov +[@gavriguy]: https://github.com/gavriguy +[@jkimbo]: https://github.com/jkimbo +[@le0nik]: https://github.com/le0nik +[@scottnonnenberg]: https://github.com/scottnonnenberg +[@sindresorhus]: https://github.com/sindresorhus +[@ljharb]: https://github.com/ljharb +[@rhettlivingston]: https://github.com/rhettlivingston +[@zloirock]: https://github.com/zloirock +[@rhys-vdw]: https://github.com/rhys-vdw +[@wKich]: https://github.com/wKich +[@tizmagik]: https://github.com/tizmagik +[@knpwrs]: https://github.com/knpwrs +[@spalger]: https://github.com/spalger +[@preco21]: https://github.com/preco21 +[@skyrpex]: https://github.com/skyrpex +[@fson]: https://github.com/fson +[@ntdb]: https://github.com/ntdb +[@jakubsta]: https://github.com/jakubsta +[@wtgtybhertgeghgtwtg]: https://github.com/wtgtybhertgeghgtwtg +[@duncanbeevers]: https://github.com/duncanbeevers +[@giodamelio]: https://github.com/giodamelio +[@ntdb]: https://github.com/ntdb +[@ramasilveyra]: https://github.com/ramasilveyra +[@sompylasar]: https://github.com/sompylasar +[@kevin940726]: https://github.com/kevin940726 +[@eelyafi]: https://github.com/eelyafi +[@mastilver]: https://github.com/mastilver +[@jseminck]: https://github.com/jseminck +[@laysent]: https://github.com/laysent +[@k15a]: https://github.com/k15a +[@mplewis]: https://github.com/mplewis +[@rosswarren]: https://github.com/rosswarren +[@alexgorbatchev]: https://github.com/alexgorbatchev +[@tihonove]: https://github.com/tihonove +[@robertrossmann]: https://github.com/robertrossmann +[@isiahmeadows]: https://github.com/isiahmeadows +[@graingert]: https://github.com/graingert +[@danny-andrews]: https://github.com/dany-andrews +[@fengkfengk]: https://github.com/fengkfengk +[@futpib]: https://github.com/futpib +[@klimashkin]: https://github.com/klimashkin +[@lukeapage]: https://github.com/lukeapage +[@manovotny]: https://github.com/manovotny +[@mattijsbliek]: https://github.com/mattijsbliek +[@hulkish]: https://github.com/hulkish +[@chrislloyd]: https://github.com/chrislloyd +[@ai]: https://github.com/ai +[@syymza]: https://github.com/syymza +[@justinanastos]: https://github.com/justinanastos +[@1pete]: https://github.com/1pete +[@gajus]: https://github.com/gajus +[@jf248]: https://github.com/jf248 +[@aravindet]: https://github.com/aravindet +[@pzhine]: https://github.com/pzhine +[@st-sloth]: https://github.com/st-sloth +[@ljqx]: https://github.com/ljqx +[@kirill-konshin]: https://github.com/kirill-konshin +[@asapach]: https://github.com/asapach +[@sergei-startsev]: https://github.com/sergei-startsev +[@ephys]: https://github.com/ephys +[@lydell]: https://github.com/lydell +[@jeffshaver]: https://github.com/jeffshaver +[@timkraut]: https://github.com/timkraut +[@TakeScoop]: https://github.com/TakeScoop +[@rfermann]: https://github.com/rfermann +[@bradennapier]: https://github.com/bradennapier +[@schmod]: https://github.com/schmod +[@echenley]: https://github.com/echenley +[@vikr01]: https://github.com/vikr01 +[@bradzacher]: https://github.com/bradzacher +[@feychenie]: https://github.com/feychenie +[@kiwka]: https://github.com/kiwka +[@loganfsmyth]: https://github.com/loganfsmyth +[@johndevedu]: https://github.com/johndevedu +[@charlessuh]: https://github.com/charlessuh +[@kgregory]: https://github.com/kgregory +[@christophercurrie]: https://github.com/christophercurrie +[@alex-page]: https://github.com/alex-page +[@benmosher]: https://github.com/benmosher +[@fooloomanzoo]: https://github.com/fooloomanzoo +[@sheepsteak]: https://github.com/sheepsteak +[@sharmilajesupaul]: https://github.com/sharmilajesupaul +[@lencioni]: https://github.com/lencioni +[@JounQin]: https://github.com/JounQin +[@atikenny]: https://github.com/atikenny +[@schmidsi]: https://github.com/schmidsi +[@TrevorBurnham]: https://github.com/TrevorBurnham +[@benmunro]: https://github.com/benmunro +[@tihonove]: https://github.com/tihonove +[@brendo]: https://github.com/brendo +[@saschanaz]: https://github.com/saschanaz +[@brettz9]: https://github.com/brettz9 +[@Taranys]: https://github.com/Taranys +[@maxmalov]: https://github.com/maxmalov +[@marcusdarmstrong]: https://github.com/marcusdarmstrong +[@Mairu]: https://github.com/Mairu +[@aamulumi]: https://github.com/aamulumi +[@pcorpet]: https://github.com/pcorpet +[@stropho]: https://github.com/stropho +[@luczsoma]: https://github.com/luczsoma +[@christophercurrie]: https://github.com/christophercurrie +[@randallreedjr]: https://github.com/randallreedjr +[@Pessimistress]: https://github.com/Pessimistress +[@stekycz]: https://github.com/stekycz +[@dbrewer5]: https://github.com/dbrewer5 +[@rsolomon]: https://github.com/rsolomon +[@joaovieira]: https://github.com/joaovieira +[@ivo-stefchev]: https://github.com/ivo-stefchev +[@skozin]: https://github.com/skozin +[@yordis]: https://github.com/yordis +[@sveyret]: https://github.com/sveyret +[@bmish]: https://github.com/bmish +[@redbugz]: https://github.com/redbugz +[@kentcdodds]: https://github.com/kentcdodds +[@IvanGoncharov]: https://github.com/IvanGoncharov +[@wschurman]: https://github.com/wschurman +[@fisker]: https://github.com/fisker +[@richardxia]: https://github.com/richardxia +[@TheCrueltySage]: https://github.com/TheCrueltySage diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/CONTRIBUTING.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/CONTRIBUTING.md new file mode 100644 index 0000000..35a6b14 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/CONTRIBUTING.md @@ -0,0 +1,116 @@ +# Contributing + +Thanks for your interest in helping out! Here are a **few** _weird_ tricks to +~~cut your mortgage in half~~ maximize the global net efficiency of your efforts! + +## TL;DR: Checklist + +When opening an [issue](#issues): +- [ ] search open/closed issues +- [ ] discuss bug/enhancement in new or old issue + +[PR](#prs) time: +- [ ] write tests +- [ ] implement feature/fix bug +- [ ] update docs +- [ ] make a note in change log + +Remember, you don't need to do it all yourself; any of these are helpful! 😎 + +## Issues + +### Search open + closed issues for similar cases. + + You may find an open issue that closely matches what you are thinking. You + may also find a closed issue with discussion that either solves your problem + or explains why we are unlikely to solve it in the near future. + + If you find a matching issue that is open, and marked `accepted` and/or `help + wanted`, you might want to [open a PR](#prs). + +### Open an issue. + + Let's discuss your issue. Could be as simple as unclear documentation or a + wonky config file. + If you're suggesting a feature, it might exist and need better + documentation, or it might be in process. Even given those, some discussion might + be warranted to ensure the enhancement is clear. + + You're welcome to jump right to a PR, but without a discussion, can't make any + guarantees about merging. + + That said: sometimes seeing the code makes the discussion clearer.😄 + +This is a helpful contribution all by itself. Thanks! + +## PRs + +If you would like to implement something, firstly: thanks! Community contributions +are a magical thing. Like Redux or [the flux capacitor](https://youtu.be/SR5BfQ4rEqQ?t=2m25s), +they make open source possible. + +**Working on your first Pull Request?** +You can learn how from this _free_ series [How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github). + +Here are some things to keep in mind when working on a PR: + +#### Tests + +A PR that is just failing test cases for an existing issue is very helpful, as this +can take as much time (if not more) as it takes to implement a new feature or fix +a bug. + +If you only have enough time to write tests, fantastic! Submit away. This is a great +jumping-off point for a core contributor or even another PR to continue what you've started. + +#### Docs + +For enhancements to rules, please update the docs in `docs/rules` matching the rule +filename from `src/rules`. + +Also, take a quick look at the rule summary in [README.md] in case it could use tweaking, +or add a line if you've implemented a new rule. + +Bugfixes may not warrant docs changes, though it's worth skimming the existing +docs to see if there are any relevant caveats that need to be removed. + +#### Changelog + +Please add a quick blurb to the [**Unreleased**](./CHANGELOG.md#unreleased) section of the change log. Give yourself +some credit, and please link back to the PR for future reference. This is especially +helpful for resolver changes, as the resolvers are less frequently modified and published. + +Note also that the change log can't magically link back to Github entities (i.e. PRs, +issues, users) or rules; there are a handful of footnote URL definitions at the bottom. +You may need to add one or more URL if you've square-bracketed any such items. + +## Code of Conduct + +This is not so much a set of guidelines as a reference for what I hope may become +a shared perspective on the project. I hope to write a longer essay to this end +in the future. Comments are welcome, I'd like this to be as clear as possible. + +### Empathy + +People have feelings and perspectives, and people say and believe things for good reasons. + +If you find that you summarily disagree with a perspective stated by someone else, +you likely each have histories that have moved you in opposite directions on a continuum +that probably does not have a "wrong" or "right" end. It may be that you simply +are working toward different goals that require different strategies. Every decision +has pros and cons, and could result in some winners and some losers. It's great to +discuss this so that both are well-known, and realize that even with infinite discussion, +cons and losers will likely never go to zero. + +Also note that we're not doing brain surgery here, so while it's fine if we spend some time +understanding each other, cordial disagreement should not be expensive in the +long run, and we can accept that we will get some things wrong before we get them right (if ever!). + +If we can all get together behind the common goal of embracing empathy, everything else should be able to work itself out. + +#### Attribution + +Thanks for help from http://mozillascience.github.io/working-open-workshop/contributing/ +for inspiration before I wrote this. --ben + +[README.md]: ./README.md diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/LICENSE b/tic-tac-toe-app/node_modules/eslint-plugin-import/LICENSE new file mode 100644 index 0000000..c6ade2a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Ben Mosher + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/README.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/README.md new file mode 100644 index 0000000..cc9d1d7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/README.md @@ -0,0 +1,507 @@ +# eslint-plugin-import + +[![build status](https://travis-ci.org/benmosher/eslint-plugin-import.svg?branch=master)](https://travis-ci.org/benmosher/eslint-plugin-import) +[![Coverage Status](https://coveralls.io/repos/github/benmosher/eslint-plugin-import/badge.svg?branch=master)](https://coveralls.io/github/benmosher/eslint-plugin-import?branch=master) +[![win32 build status](https://ci.appveyor.com/api/projects/status/3mw2fifalmjlqf56/branch/master?svg=true)](https://ci.appveyor.com/project/benmosher/eslint-plugin-import/branch/master) +[![npm](https://img.shields.io/npm/v/eslint-plugin-import.svg)](https://www.npmjs.com/package/eslint-plugin-import) +[![npm downloads](https://img.shields.io/npm/dt/eslint-plugin-import.svg?maxAge=2592000)](http://www.npmtrends.com/eslint-plugin-import) + +This plugin intends to support linting of ES2015+ (ES6+) import/export syntax, and prevent issues with misspelling of file paths and import names. All the goodness that the ES2015+ static module syntax intends to provide, marked up in your editor. + +**IF YOU ARE USING THIS WITH SUBLIME**: see the [bottom section](#sublimelinter-eslint) for important info. + +## Rules + +### Static analysis + +* Ensure imports point to a file/module that can be resolved. ([`no-unresolved`]) +* Ensure named imports correspond to a named export in the remote file. ([`named`]) +* Ensure a default export is present, given a default import. ([`default`]) +* Ensure imported namespaces contain dereferenced properties as they are dereferenced. ([`namespace`]) +* Restrict which files can be imported in a given folder ([`no-restricted-paths`]) +* Forbid import of modules using absolute paths ([`no-absolute-path`]) +* Forbid `require()` calls with expressions ([`no-dynamic-require`]) +* Prevent importing the submodules of other modules ([`no-internal-modules`]) +* Forbid webpack loader syntax in imports ([`no-webpack-loader-syntax`]) +* Forbid a module from importing itself ([`no-self-import`]) +* Forbid a module from importing a module with a dependency path back to itself ([`no-cycle`]) +* Prevent unnecessary path segments in import and require statements ([`no-useless-path-segments`]) +* Forbid importing modules from parent directories ([`no-relative-parent-imports`]) +* Forbid modules without any export, and exports not imported by any modules. ([`no-unused-modules`]) + +[`no-unresolved`]: ./docs/rules/no-unresolved.md +[`named`]: ./docs/rules/named.md +[`default`]: ./docs/rules/default.md +[`namespace`]: ./docs/rules/namespace.md +[`no-restricted-paths`]: ./docs/rules/no-restricted-paths.md +[`no-absolute-path`]: ./docs/rules/no-absolute-path.md +[`no-dynamic-require`]: ./docs/rules/no-dynamic-require.md +[`no-internal-modules`]: ./docs/rules/no-internal-modules.md +[`no-webpack-loader-syntax`]: ./docs/rules/no-webpack-loader-syntax.md +[`no-self-import`]: ./docs/rules/no-self-import.md +[`no-cycle`]: ./docs/rules/no-cycle.md +[`no-useless-path-segments`]: ./docs/rules/no-useless-path-segments.md +[`no-relative-parent-imports`]: ./docs/rules/no-relative-parent-imports.md +[`no-unused-modules`]: ./docs/rules/no-unused-modules.md + +### Helpful warnings + + +* Report any invalid exports, i.e. re-export of the same name ([`export`]) +* Report use of exported name as identifier of default export ([`no-named-as-default`]) +* Report use of exported name as property of default export ([`no-named-as-default-member`]) +* Report imported names marked with `@deprecated` documentation tag ([`no-deprecated`]) +* Forbid the use of extraneous packages ([`no-extraneous-dependencies`]) +* Forbid the use of mutable exports with `var` or `let`. ([`no-mutable-exports`]) +* Report modules without exports, or exports without matching import in another module ([`no-unused-modules`]) + +[`export`]: ./docs/rules/export.md +[`no-named-as-default`]: ./docs/rules/no-named-as-default.md +[`no-named-as-default-member`]: ./docs/rules/no-named-as-default-member.md +[`no-deprecated`]: ./docs/rules/no-deprecated.md +[`no-extraneous-dependencies`]: ./docs/rules/no-extraneous-dependencies.md +[`no-mutable-exports`]: ./docs/rules/no-mutable-exports.md +[`no-unused-modules`]: ./docs/rules/no-unused-modules.md + +### Module systems + +* Report potentially ambiguous parse goal (`script` vs. `module`) ([`unambiguous`]) +* Report CommonJS `require` calls and `module.exports` or `exports.*`. ([`no-commonjs`]) +* Report AMD `require` and `define` calls. ([`no-amd`]) +* No Node.js builtin modules. ([`no-nodejs-modules`]) + +[`unambiguous`]: ./docs/rules/unambiguous.md +[`no-commonjs`]: ./docs/rules/no-commonjs.md +[`no-amd`]: ./docs/rules/no-amd.md +[`no-nodejs-modules`]: ./docs/rules/no-nodejs-modules.md + + +### Style guide + +* Ensure all imports appear before other statements ([`first`]) +* Ensure all exports appear after other statements ([`exports-last`]) +* Report repeated import of the same module in multiple places ([`no-duplicates`]) +* Forbid namespace (a.k.a. "wildcard" `*`) imports ([`no-namespace`]) +* Ensure consistent use of file extension within the import path ([`extensions`]) +* Enforce a convention in module import order ([`order`]) +* Enforce a newline after import statements ([`newline-after-import`]) +* Prefer a default export if module exports a single name ([`prefer-default-export`]) +* Limit the maximum number of dependencies a module can have ([`max-dependencies`]) +* Forbid unassigned imports ([`no-unassigned-import`]) +* Forbid named default exports ([`no-named-default`]) +* Forbid default exports ([`no-default-export`]) +* Forbid named exports ([`no-named-export`]) +* Forbid anonymous values as default exports ([`no-anonymous-default-export`]) +* Prefer named exports to be grouped together in a single export declaration ([`group-exports`]) +* Enforce a leading comment with the webpackChunkName for dynamic imports ([`dynamic-import-chunkname`]) + +[`first`]: ./docs/rules/first.md +[`exports-last`]: ./docs/rules/exports-last.md +[`no-duplicates`]: ./docs/rules/no-duplicates.md +[`no-namespace`]: ./docs/rules/no-namespace.md +[`extensions`]: ./docs/rules/extensions.md +[`order`]: ./docs/rules/order.md +[`newline-after-import`]: ./docs/rules/newline-after-import.md +[`prefer-default-export`]: ./docs/rules/prefer-default-export.md +[`max-dependencies`]: ./docs/rules/max-dependencies.md +[`no-unassigned-import`]: ./docs/rules/no-unassigned-import.md +[`no-named-default`]: ./docs/rules/no-named-default.md +[`no-anonymous-default-export`]: ./docs/rules/no-anonymous-default-export.md +[`group-exports`]: ./docs/rules/group-exports.md +[`no-default-export`]: ./docs/rules/no-default-export.md +[`no-named-export`]: ./docs/rules/no-named-export.md +[`dynamic-import-chunkname`]: ./docs/rules/dynamic-import-chunkname.md + +## `eslint-plugin-import` for enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of `eslint-plugin-import` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/npm-eslint-plugin-import?utm_source=npm-eslint-plugin-import&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) + +## Installation + +```sh +npm install eslint-plugin-import -g +``` + +or if you manage ESLint as a dev dependency: + +```sh +# inside your project's working tree +npm install eslint-plugin-import --save-dev +``` + +All rules are off by default. However, you may configure them manually +in your `.eslintrc.(yml|json|js)`, or extend one of the canned configs: + +```yaml +--- +extends: + - eslint:recommended + - plugin:import/errors + - plugin:import/warnings + +# or configure manually: +plugins: + - import + +rules: + import/no-unresolved: [2, {commonjs: true, amd: true}] + import/named: 2 + import/namespace: 2 + import/default: 2 + import/export: 2 + # etc... +``` + +# TypeScript + +You may use the following shortcut or assemble your own config using the granular settings described below. + +Make sure you have installed [`@typescript-eslint/parser`] which is used in the following configuration. Unfortunately NPM does not allow to list optional peer dependencies. + +```yaml +extends: + - eslint:recommended + - plugin:import/errors + - plugin:import/warnings + - plugin:import/typescript # this line does the trick +``` + +[`@typescript-eslint/parser`]: https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/parser + +# Resolvers + +With the advent of module bundlers and the current state of modules and module +syntax specs, it's not always obvious where `import x from 'module'` should look +to find the file behind `module`. + +Up through v0.10ish, this plugin has directly used substack's [`resolve`] plugin, +which implements Node's import behavior. This works pretty well in most cases. + +However, webpack allows a number of things in import module source strings that +Node does not, such as loaders (`import 'file!./whatever'`) and a number of +aliasing schemes, such as [`externals`]: mapping a module id to a global name at +runtime (allowing some modules to be included more traditionally via script tags). + +In the interest of supporting both of these, v0.11 introduces resolvers. + +Currently [Node] and [webpack] resolution have been implemented, but the +resolvers are just npm packages, so [third party packages are supported](https://github.com/benmosher/eslint-plugin-import/wiki/Resolvers) (and encouraged!). + +You can reference resolvers in several ways (in order of precedence): + +- as a conventional `eslint-import-resolver` name, like `eslint-import-resolver-foo`: + +```yaml +# .eslintrc.yml +settings: + # uses 'eslint-import-resolver-foo': + import/resolver: foo +``` +```js +// .eslintrc.js +module.exports = { + settings: { + 'import/resolver': { + foo: { someConfig: value } + } + } +} +``` + +- with a full npm module name, like `my-awesome-npm-module`: + +```yaml +# .eslintrc.yml +settings: + import/resolver: 'my-awesome-npm-module' +``` +```js +// .eslintrc.js +module.exports = { + settings: { + 'import/resolver': { + 'my-awesome-npm-module': { someConfig: value } + } + } +} +``` + +- with a filesystem path to resolver, defined in this example as a `computed property` name: + +```js +// .eslintrc.js +module.exports = { + settings: { + 'import/resolver': { + [path.resolve('../../../my-resolver')]: { someConfig: value } + } + } +} +``` + +Relative paths will be resolved relative to the source's nearest `package.json` or +the process's current working directory if no `package.json` is found. + + + +If you are interesting in writing a resolver, see the [spec](./resolvers/README.md) for more details. + +[`resolve`]: https://www.npmjs.com/package/resolve +[`externals`]: http://webpack.github.io/docs/library-and-externals.html + +[Node]: https://www.npmjs.com/package/eslint-import-resolver-node +[webpack]: https://www.npmjs.com/package/eslint-import-resolver-webpack + +# Settings + +You may set the following settings in your `.eslintrc`: + +#### `import/extensions` + +A list of file extensions that will be parsed as modules and inspected for +`export`s. + +This defaults to `['.js']`, unless you are using the `react` shared config, +in which case it is specified as `['.js', '.jsx']`. + +```js +"settings": { + "import/extensions": [ + ".js", + ".jsx" + ] +} +``` + +If you require more granular extension definitions, you can use: + +```js +"settings": { + "import/resolver": { + "node": { + "extensions": [ + ".js", + ".jsx" + ] + } + } +} +``` + +Note that this is different from (and likely a subset of) any `import/resolver` +extensions settings, which may include `.json`, `.coffee`, etc. which will still +factor into the `no-unresolved` rule. + +Also, the following `import/ignore` patterns will overrule this list. + +#### `import/ignore` + +A list of regex strings that, if matched by a path, will +not report the matching module if no `export`s are found. +In practice, this means rules other than [`no-unresolved`](./docs/rules/no-unresolved.md#ignore) will not report on any +`import`s with (absolute filesystem) paths matching this pattern. + +`no-unresolved` has its own [`ignore`](./docs/rules/no-unresolved.md#ignore) setting. + +```yaml +settings: + import/ignore: + - \.coffee$ # fraught with parse errors + - \.(scss|less|css)$ # can't parse unprocessed CSS modules, either +``` + +#### `import/core-modules` + +An array of additional modules to consider as "core" modules--modules that should +be considered resolved but have no path on the filesystem. Your resolver may +already define some of these (for example, the Node resolver knows about `fs` and +`path`), so you need not redefine those. + +For example, Electron exposes an `electron` module: + +```js +import 'electron' // without extra config, will be flagged as unresolved! +``` + +that would otherwise be unresolved. To avoid this, you may provide `electron` as a +core module: + +```yaml +# .eslintrc.yml +settings: + import/core-modules: [ electron ] +``` + +In Electron's specific case, there is a shared config named `electron` +that specifies this for you. + +Contribution of more such shared configs for other platforms are welcome! + +#### `import/external-module-folders` + +An array of folders. Resolved modules only from those folders will be considered as "external". By default - `["node_modules"]`. Makes sense if you have configured your path or webpack to handle your internal paths differently and want to consider modules from some folders, for example `bower_components` or `jspm_modules`, as "external". + +This option is also useful in a monorepo setup: list here all directories that contain monorepo's packages and they will be treated as external ones no matter which resolver is used. + +Each item in this array is either a folder's name, its subpath, or its absolute prefix path: + +- `jspm_modules` will match any file or folder named `jspm_modules` or which has a direct or non-direct parent named `jspm_modules`, e.g. `/home/me/project/jspm_modules` or `/home/me/project/jspm_modules/some-pkg/index.js`. + +- `packages/core` will match any path that contains these two segments, for example `/home/me/project/packages/core/src/utils.js`. + +- `/home/me/project/packages` will only match files and directories inside this directory, and the directory itself. + +Please note that incomplete names are not allowed here so `components` won't match `bower_components` and `packages/ui` won't match `packages/ui-utils` (but will match `packages/ui/utils`). + +#### `import/parsers` + +A map from parsers to file extension arrays. If a file extension is matched, the +dependency parser will require and use the map key as the parser instead of the +configured ESLint parser. This is useful if you're inter-op-ing with TypeScript +directly using webpack, for example: + +```yaml +# .eslintrc.yml +settings: + import/parsers: + @typescript-eslint/parser: [ .ts, .tsx ] +``` + +In this case, [`@typescript-eslint/parser`](https://www.npmjs.com/package/@typescript-eslint/parser) +must be installed and require-able from the running `eslint` module's location +(i.e., install it as a peer of ESLint). + +This is currently only tested with `@typescript-eslint/parser` (and its predecessor, +`typescript-eslint-parser`) but should theoretically work with any moderately +ESTree-compliant parser. + +It's difficult to say how well various plugin features will be supported, too, +depending on how far down the rabbit hole goes. Submit an issue if you find strange +behavior beyond here, but steel your heart against the likely outcome of closing +with `wontfix`. + + +#### `import/resolver` + +See [resolvers](#resolvers). + +#### `import/cache` + +Settings for cache behavior. Memoization is used at various levels to avoid the copious amount of `fs.statSync`/module parse calls required to correctly report errors. + +For normal `eslint` console runs, the cache lifetime is irrelevant, as we can strongly assume that files should not be changing during the lifetime of the linter process (and thus, the cache in memory) + +For long-lasting processes, like [`eslint_d`] or [`eslint-loader`], however, it's important that there be some notion of staleness. + +If you never use [`eslint_d`] or [`eslint-loader`], you may set the cache lifetime to `Infinity` and everything should be fine: + +```yaml +# .eslintrc.yml +settings: + import/cache: + lifetime: ∞ # or Infinity +``` + +Otherwise, set some integer, and cache entries will be evicted after that many seconds have elapsed: + +```yaml +# .eslintrc.yml +settings: + import/cache: + lifetime: 5 # 30 is the default +``` + +[`eslint_d`]: https://www.npmjs.com/package/eslint_d +[`eslint-loader`]: https://www.npmjs.com/package/eslint-loader + +#### `import/internal-regex` + +A regex for packages should be treated as internal. Useful when you are utilizing a monorepo setup or developing a set of packages that depend on each other. + +By default, any package referenced from [`import/external-module-folders`](#importexternal-module-folders) will be considered as "external", including packages in a monorepo like yarn workspace or lerna environment. If you want to mark these packages as "internal" this will be useful. + +For example, if your packages in a monorepo are all in `@scope`, you can configure `import/internal-regex` like this + +```yaml +# .eslintrc.yml +settings: + import/internal-regex: ^@scope/ +``` + + +## SublimeLinter-eslint + +SublimeLinter-eslint introduced a change to support `.eslintignore` files +which altered the way file paths are passed to ESLint when linting during editing. +This change sends a relative path instead of the absolute path to the file (as ESLint +normally provides), which can make it impossible for this plugin to resolve dependencies +on the filesystem. + +This workaround should no longer be necessary with the release of ESLint 2.0, when +`.eslintignore` will be updated to work more like a `.gitignore`, which should +support proper ignoring of absolute paths via `--stdin-filename`. + +In the meantime, see [roadhump/SublimeLinter-eslint#58](https://github.com/roadhump/SublimeLinter-eslint/issues/58) +for more details and discussion, but essentially, you may find you need to add the following +`SublimeLinter` config to your Sublime project file: + +```json +{ + "folders": + [ + { + "path": "code" + } + ], + "SublimeLinter": + { + "linters": + { + "eslint": + { + "chdir": "${project}/code" + } + } + } +} +``` + +Note that `${project}/code` matches the `code` provided at `folders[0].path`. + +The purpose of the `chdir` setting, in this case, is to set the working directory +from which ESLint is executed to be the same as the directory on which SublimeLinter-eslint +bases the relative path it provides. + +See the SublimeLinter docs on [`chdir`](http://www.sublimelinter.com/en/latest/linter_settings.html#chdir) +for more information, in case this does not work with your project. + +If you are not using `.eslintignore`, or don't have a Sublime project file, you can also +do the following via a `.sublimelinterrc` file in some ancestor directory of your +code: + +```json +{ + "linters": { + "eslint": { + "args": ["--stdin-filename", "@"] + } + } +} +``` + +I also found that I needed to set `rc_search_limit` to `null`, which removes the file +hierarchy search limit when looking up the directory tree for `.sublimelinterrc`: + +In Package Settings / SublimeLinter / User Settings: +```json +{ + "user": { + "rc_search_limit": null + } +} +``` + +I believe this defaults to `3`, so you may not need to alter it depending on your +project folder max depth. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/RELEASE.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/RELEASE.md new file mode 100644 index 0000000..e16a589 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/RELEASE.md @@ -0,0 +1,54 @@ +# Release steps + +1. create a `release-[x.y.z]` branch from tip of `master` (or whatever release commit) + + ```bash + git checkout master && git pull && git checkout -b release-2.1.0 + ``` + +2. bump `package.json` + update CHANGELOG version links for all releasing packages (i.e., root + any resolvers) + + In changelog for core plugin, normally leave [Unreleased] but update its link at the bottom + to be rooted at the new version's tag, and add a link for the new version rooted + at last version's tag. + + ```markdown + [Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.1...HEAD + [2.0.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.0...v2.0.1 + ``` + + becomes + + ```markdown + [Unreleased]: https://github.com/benmosher/eslint-plugin-import/compare/v2.1.0...HEAD + [2.1.0]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.1...v2.1.0 + [2.0.1]: https://github.com/benmosher/eslint-plugin-import/compare/v2.0.0...v2.0.1 + ``` + + Generally, don't use `npm version` for this because it creates a tag, which I normally + wait until signoff from contributors and actually `npm publish`-ing to snap the tag. + +3. create pull request from `release-[x.y.z]` into `release` branch + + I like this because it + - lists all commits in the release + - provides a commentary location to discuss the release + - builds in CI and provides test results + +4. iterate on feedback + - handle other issues + - merge more PRs + - fix issues in changelog/docs + +5. `npm publish` from `release-[x.y.z]` branch + - don't forget resolvers! + +6. tag commit (`v[x.y.z]`) + - again, not forgetting resolvers, if needed (`resolvers/[name]/v[t.u.v]`) + +7. merge `release-[x.y.z]` into `release` ( + - ideally fast-forward, probably with Git CLI instead of Github + +8. merge `release` into `master` + +Done! diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/SECURITY.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/SECURITY.md new file mode 100644 index 0000000..b155f54 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/SECURITY.md @@ -0,0 +1,11 @@ +# Security Policy + +## Supported Versions + +Latest major/minor version is supported only for security updates. + +## Reporting a Vulnerability + +To report a security vulnerability, please use the +[Tidelift security contact](https://tidelift.com/security). +Tidelift will coordinate the fix and disclosure. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/electron.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/electron.js new file mode 100644 index 0000000..6fab4e8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/electron.js @@ -0,0 +1,8 @@ +/** + * Default settings for Electron applications. + */ +module.exports = { + settings: { + 'import/core-modules': ['electron'], + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/errors.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/errors.js new file mode 100644 index 0000000..d99a9da --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/errors.js @@ -0,0 +1,14 @@ +/** + * unopinionated config. just the things that are necessarily runtime errors + * waiting to happen. + * @type {Object} + */ +module.exports = { + plugins: ['import'], + rules: { 'import/no-unresolved': 2 + , 'import/named': 2 + , 'import/namespace': 2 + , 'import/default': 2 + , 'import/export': 2, + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/react-native.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/react-native.js new file mode 100644 index 0000000..fbc8652 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/react-native.js @@ -0,0 +1,13 @@ +/** + * - adds platform extensions to Node resolver + */ +module.exports = { + settings: { + 'import/resolver': { + node: { + // Note: will not complain if only _one_ of these files exists. + extensions: ['.js', '.web.js', '.ios.js', '.android.js'], + }, + }, + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/react.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/react.js new file mode 100644 index 0000000..fe1b5f2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/react.js @@ -0,0 +1,18 @@ +/** + * Adds `.jsx` as an extension, and enables JSX parsing. + * + * Even if _you_ aren't using JSX (or .jsx) directly, if your dependencies + * define jsnext:main and have JSX internally, you may run into problems + * if you don't enable these settings at the top level. + */ +module.exports = { + + settings: { + 'import/extensions': ['.js', '.jsx'], + }, + + parserOptions: { + ecmaFeatures: { jsx: true }, + }, + +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/recommended.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/recommended.js new file mode 100644 index 0000000..9970918 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/recommended.js @@ -0,0 +1,28 @@ +/** + * The basics. + * @type {Object} + */ +module.exports = { + plugins: ['import'], + + rules: { + // analysis/correctness + 'import/no-unresolved': 'error', + 'import/named': 'error', + 'import/namespace': 'error', + 'import/default': 'error', + 'import/export': 'error', + + // red flags (thus, warnings) + 'import/no-named-as-default': 'warn', + 'import/no-named-as-default-member': 'warn', + 'import/no-duplicates': 'warn', + }, + + // need all these for parsing dependencies (even if _your_ code doesn't need + // all of them) + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/stage-0.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/stage-0.js new file mode 100644 index 0000000..25ad75f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/stage-0.js @@ -0,0 +1,12 @@ +/** + * Rules in progress. + * + * Do not expect these to adhere to semver across releases. + * @type {Object} + */ +module.exports = { + plugins: ['import'], + rules: { + 'import/no-deprecated': 1, + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/typescript.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/typescript.js new file mode 100644 index 0000000..262e3c7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/typescript.js @@ -0,0 +1,22 @@ +/** + * Adds `.jsx`, `.ts` and `.tsx` as an extension, and enables JSX/TSX parsing. + */ + +var allExtensions = ['.ts', '.tsx', '.d.ts', '.js', '.jsx'] + +module.exports = { + + settings: { + 'import/extensions': allExtensions, + 'import/external-module-folders': ['node_modules', 'node_modules/@types'], + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx', '.d.ts'], + }, + 'import/resolver': { + 'node': { + 'extensions': allExtensions, + }, + }, + }, + +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/config/warnings.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/warnings.js new file mode 100644 index 0000000..c05eb07 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/config/warnings.js @@ -0,0 +1,12 @@ +/** + * more opinionated config. + * @type {Object} + */ +module.exports = { + plugins: ['import'], + rules: { + 'import/no-named-as-default': 1, + 'import/no-named-as-default-member': 1, + 'import/no-duplicates': 1, + }, +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/default.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/default.md new file mode 100644 index 0000000..f699344 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/default.md @@ -0,0 +1,71 @@ +# import/default + +If a default import is requested, this rule will report if there is no default +export in the imported module. + +For [ES7], reports if a default is named and exported but is not found in the +referenced module. + +Note: for packages, the plugin will find exported names +from [`jsnext:main`], if present in `package.json`. +Redux's npm module includes this key, and thereby is lintable, for example. + +A module path that is [ignored] or not [unambiguously an ES module] will not be reported when imported. + +[ignored]: ../README.md#importignore +[unambiguously an ES module]: https://github.com/bmeck/UnambiguousJavaScriptGrammar + + +## Rule Details + +Given: + +```js +// ./foo.js +export default function () { return 42 } + +// ./bar.js +export function bar() { return null } + +// ./baz.js +module.exports = function () { /* ... */ } + +// node_modules/some-module/index.js +exports.sharedFunction = function shared() { /* ... */ } +``` + +The following is considered valid: + +```js +import foo from './foo' + +// assuming 'node_modules' are ignored (true by default) +import someModule from 'some-module' +``` + +...and the following cases are reported: + +```js +import bar from './bar' // no default export found in ./bar +import baz from './baz' // no default export found in ./baz +``` + + +## When Not To Use It + +If you are using CommonJS and/or modifying the exported namespace of any module at +runtime, you will likely see false positives with this rule. + +This rule currently does not interpret `module.exports = ...` as a `default` export, +either, so such a situation will be reported in the importing module. + +## Further Reading + +- Lee Byron's [ES7] export proposal +- [`import/ignore`] setting +- [`jsnext:main`] (Rollup) + + +[ES7]: https://github.com/leebyron/ecmascript-more-export-from +[`import/ignore`]: ../../README.md#importignore +[`jsnext:main`]: https://github.com/rollup/rollup/wiki/jsnext:main diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md new file mode 100644 index 0000000..4bcc5a9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/dynamic-import-chunkname.md @@ -0,0 +1,85 @@ +# dynamic imports require a leading comment with a webpackChunkName (dynamic-import-chunkname) + +This rule reports any dynamic imports without a webpackChunkName specified in a leading block comment in the proper format. + +This rule enforces naming of webpack chunks in dynamic imports. When you don't explicitly name chunks, webpack will autogenerate chunk names that are not consistent across builds, which prevents long-term browser caching. + +## Rule Details +This rule runs against `import()` by default, but can be configured to also run against an alternative dynamic-import function, e.g. 'dynamicImport.' +You can also configure the regex format you'd like to accept for the webpackChunkName - for example, if we don't want the number 6 to show up in our chunk names: + ```javascript +{ + "dynamic-import-chunkname": [2, { + importFunctions: ["dynamicImport"], + webpackChunknameFormat: "[a-zA-Z0-57-9-/_]+" + }] +} +``` + +### invalid +The following patterns are invalid: + +```javascript +// no leading comment +import('someModule'); + +// incorrectly formatted comment +import( + /*webpackChunkName:"someModule"*/ + 'someModule', +); +import( + /* webpackChunkName : "someModule" */ + 'someModule', +); + +// chunkname contains a 6 (forbidden by rule config) +import( + /* webpackChunkName: "someModule6" */ + 'someModule', +); + +// using single quotes instead of double quotes +import( + /* webpackChunkName: 'someModule' */ + 'someModule', +); + +// invalid syntax for webpack comment +import( + /* totally not webpackChunkName: "someModule" */ + 'someModule', +); + +// single-line comment, not a block-style comment +import( + // webpackChunkName: "someModule" + 'someModule', +); +``` +### valid +The following patterns are valid: + +```javascript + import( + /* webpackChunkName: "someModule" */ + 'someModule', + ); + import( + /* webpackChunkName: "someOtherModule12345789" */ + 'someModule', + ); + import( + /* webpackChunkName: "someModule" */ + /* webpackPrefetch: true */ + 'someModule', + ); + import( + /* webpackChunkName: "someModule", webpackPrefetch: true */ + 'someModule', + ); +``` + +## When Not To Use It + +If you don't care that webpack will autogenerate chunk names and may blow up browser caches and bundle size reports. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/export.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/export.md new file mode 100644 index 0000000..e99882b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/export.md @@ -0,0 +1,32 @@ +# import/export + +Reports funny business with exports, like repeated exports of names or defaults. + +## Rule Details + +```js +export default class MyClass { /*...*/ } // Multiple default exports. + +function makeClass() { return new MyClass(...arguments) } + +export default makeClass // Multiple default exports. +``` + +or +```js +export const foo = function () { /*...*/ } // Multiple exports of name 'foo'. + +function bar() { /*...*/ } +export { bar as foo } // Multiple exports of name 'foo'. +``` + +In the case of named/default re-export, all `n` re-exports will be reported, +as at least `n-1` of them are clearly mistakes, but it is not clear which one +(if any) is intended. Could be the result of copy/paste, code duplication with +intent to rename, etc. + +## Further Reading + +- Lee Byron's [ES7] export proposal + +[ES7]: https://github.com/leebyron/ecmascript-more-export-from diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/exports-last.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/exports-last.md new file mode 100644 index 0000000..291daee --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/exports-last.md @@ -0,0 +1,50 @@ +# import/exports-last + +This rule enforces that all exports are declared at the bottom of the file. This rule will report any export declarations that comes before any non-export statements. + + +## This will be reported + +```JS + +const bool = true + +export default bool + +const str = 'foo' + +``` + +```JS + +export const bool = true + +const str = 'foo' + +``` + +## This will not be reported + +```JS +const arr = ['bar'] + +export const bool = true + +export default bool + +export function func() { + console.log('Hello World 🌍') +} + +export const str = 'foo' +``` + +## When Not To Use It + +If you don't mind exports being sprinkled throughout a file, you may not want to enable this rule. + +#### ES6 exports only + +The exports-last rule is currently only working on ES6 exports. You may not want to enable this rule if you're using CommonJS exports. + +If you need CommonJS support feel free to open an issue or create a PR. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/extensions.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/extensions.md new file mode 100644 index 0000000..2f6d4a9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/extensions.md @@ -0,0 +1,167 @@ +# import/extensions - Ensure consistent use of file extension within the import path + +Some file resolve algorithms allow you to omit the file extension within the import source path. For example the `node` resolver can resolve `./foo/bar` to the absolute path `/User/someone/foo/bar.js` because the `.js` extension is resolved automatically by default. Depending on the resolver you can configure more extensions to get resolved automatically. + +In order to provide a consistent use of file extensions across your code base, this rule can enforce or disallow the use of certain file extensions. + +## Rule Details + +This rule either takes one string option, one object option, or a string and an object option. If it is the string `"never"` (the default value), then the rule forbids the use for any extension. If it is the string `"always"`, then the rule enforces the use of extensions for all import statements. If it is the string `"ignorePackages"`, then the rule enforces the use of extensions for all import statements except package imports. + +``` +"import/extensions": [, "never" | "always" | "ignorePackages"] +``` + +By providing an object you can configure each extension separately. + +``` +"import/extensions": [, { + : "never" | "always" | "ignorePackages" +}] +``` + + For example `{ "js": "always", "json": "never" }` would always enforce the use of the `.js` extension but never allow the use of the `.json` extension. + +By providing both a string and an object, the string will set the default setting for all extensions, and the object can be used to set granular overrides for specific extensions. + +``` +"import/extensions": [ + , + "never" | "always" | "ignorePackages", + { + : "never" | "always" | "ignorePackages" + } +] +``` + +For example, `["error", "never", { "svg": "always" }]` would require that all extensions are omitted, except for "svg". + +`ignorePackages` can be set as a separate boolean option like this: +``` +"import/extensions": [ + , + "never" | "always" | "ignorePackages", + { + ignorePackages: true | false, + pattern: { + : "never" | "always" | "ignorePackages" + } + } +] +``` +In that case, if you still want to specify extensions, you can do so inside the **pattern** property. +Default value of `ignorePackages` is `false`. + + +### Exception + +When disallowing the use of certain extensions this rule makes an exception and allows the use of extension when the file would not be resolvable without extension. + +For example, given the following folder structure: + +``` +├── foo +│   ├── bar.js +│   ├── bar.json +``` + +and this import statement: + +```js +import bar from './foo/bar.json'; +``` + +then the extension can’t be omitted because it would then resolve to `./foo/bar.js`. + +### Examples + +The following patterns are considered problems when configuration set to "never": + +```js +import foo from './foo.js'; + +import bar from './bar.json'; + +import Component from './Component.jsx'; + +import express from 'express/index.js'; +``` + +The following patterns are not considered problems when configuration set to "never": + +```js +import foo from './foo'; + +import bar from './bar'; + +import Component from './Component'; + +import express from 'express/index'; + +import * as path from 'path'; +``` + +The following patterns are considered problems when configuration set to "always": + +```js +import foo from './foo'; + +import bar from './bar'; + +import Component from './Component'; + +import express from 'express'; +``` + +The following patterns are not considered problems when configuration set to "always": + +```js +import foo from './foo.js'; + +import bar from './bar.json'; + +import Component from './Component.jsx'; + +import express from 'express/index.js'; + +import * as path from 'path'; +``` + +The following patterns are considered problems when configuration set to "ignorePackages": + +```js +import foo from './foo'; + +import bar from './bar'; + +import Component from './Component'; + +``` + +The following patterns are not considered problems when configuration set to "ignorePackages": + +```js +import foo from './foo.js'; + +import bar from './bar.json'; + +import Component from './Component.jsx'; + +import express from 'express'; + +``` + +The following patterns are not considered problems when configuration set to `['error', 'always', {ignorePackages: true} ]`: + +```js +import Component from './Component.jsx'; + +import baz from 'foo/baz.js'; + +import express from 'express'; + +``` + +## When Not To Use It + +If you are not concerned about a consistent usage of file extension. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/first.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/first.md new file mode 100644 index 0000000..eada966 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/first.md @@ -0,0 +1,70 @@ +# import/first + +This rule reports any imports that come after non-import +statements. + +## Rule Details + +```js +import foo from './foo' + +// some module-level initializer +initWith(foo) + +import bar from './bar' // <- reported +``` + +Providing `absolute-first` as an option will report any absolute imports (i.e. +packages) that come after any relative imports: + +```js +import foo from 'foo' +import bar from './bar' + +import * as _ from 'lodash' // <- reported +``` + +If you really want import type ordering, check out [`import/order`]. + +Notably, `import`s are hoisted, which means the imported modules will be evaluated +before any of the statements interspersed between them. Keeping all `import`s together +at the top of the file may prevent surprises resulting from this part of the spec. + +### On directives + +Directives are allowed as long as they occur strictly before any `import` declarations, +as follows: + +```js +'use super-mega-strict' + +import { suchFoo } from 'lame-fake-module-name' // no report here +``` + +A directive in this case is assumed to be a single statement that contains only +a literal string-valued expression. + +`'use strict'` would be a good example, except that [modules are always in strict +mode](http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code) so it would be surprising to see a `'use strict'` sharing a file with `import`s and +`export`s. + +Given that, see [#255] for the reasoning. + +### With Fixer + +This rule contains a fixer to reorder in-body import to top, the following criteria applied: +1. Never re-order relative to each other, even if `absolute-first` is set. +2. If an import creates an identifier, and that identifier is referenced at module level *before* the import itself, that won't be re-ordered. + +## When Not To Use It + +If you don't mind imports being sprinkled throughout, you may not want to +enable this rule. + +## Further Reading + +- [`import/order`]: a major step up from `absolute-first` +- Issue [#255] + +[`import/order`]: ./order.md +[#255]: https://github.com/benmosher/eslint-plugin-import/issues/255 diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/group-exports.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/group-exports.md new file mode 100644 index 0000000..f61ff53 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/group-exports.md @@ -0,0 +1,99 @@ +# import/group-exports + +Reports when named exports are not grouped together in a single `export` declaration or when multiple assignments to CommonJS `module.exports` or `exports` object are present in a single file. + +**Rationale:** An `export` declaration or `module.exports` assignment can appear anywhere in the code. By requiring a single export declaration all your exports will remain at one place, making it easier to see what exports a module provides. + +## Rule Details + +This rule warns whenever a single file contains multiple named export declarations or multiple assignments to `module.exports` (or `exports`). + +### Valid + +```js +// A single named export declaration -> ok +export const valid = true +``` + +```js +const first = true +const second = true + +// A single named export declaration -> ok +export { + first, + second, +} +``` + +```js +// Aggregating exports -> ok +export { default as module1 } from 'module-1' +export { default as module2 } from 'module-2' +``` + +```js +// A single exports assignment -> ok +module.exports = { + first: true, + second: true +} +``` + +```js +const first = true +const second = true + +// A single exports assignment -> ok +module.exports = { + first, + second, +} +``` + +```js +function test() {} +test.property = true +test.another = true + +// A single exports assignment -> ok +module.exports = test +``` + + +### Invalid + +```js +// Multiple named export statements -> not ok! +export const first = true +export const second = true +``` + +```js +// Aggregating exports from the same module -> not ok! +export { module1 } from 'module-1' +export { module2 } from 'module-1' +``` + +```js +// Multiple exports assignments -> not ok! +exports.first = true +exports.second = true +``` + +```js +// Multiple exports assignments -> not ok! +module.exports = {} +module.exports.first = true +``` + +```js +// Multiple exports assignments -> not ok! +module.exports = () => {} +module.exports.first = true +module.exports.second = true +``` + +## When Not To Use It + +If you do not mind having your exports spread across the file, you can safely turn this rule off. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md new file mode 100644 index 0000000..20d29cf --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/max-dependencies.md @@ -0,0 +1,44 @@ +# import/max-dependencies + +Forbid modules to have too many dependencies (`import` or `require` statements). + +This is a useful rule because a module with too many dependencies is a code smell, and usually indicates the module is doing too much and/or should be broken up into smaller modules. + +Importing multiple named exports from a single module will only count once (e.g. `import {x, y, z} from './foo'` will only count as a single dependency). + +### Options + +This rule takes the following option: + +`max`: The maximum number of dependencies allowed. Anything over will trigger the rule. **Default is 10** if the rule is enabled and no `max` is specified. + +You can set the option like this: + +```js +"import/max-dependencies": ["error", {"max": 10}] +``` + + +## Example + +Given a max value of `{"max": 2}`: + +### Fail + +```js +import a from './a'; // 1 +const b = require('./b'); // 2 +import c from './c'; // 3 - exceeds max! +``` + +### Pass + +```js +import a from './a'; // 1 +const anotherA = require('./a'); // still 1 +import {x, y, z} from './foo'; // 2 +``` + +## When Not To Use It + +If you don't care how many dependencies a module has. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/named.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/named.md new file mode 100644 index 0000000..01ccb14 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/named.md @@ -0,0 +1,98 @@ +# import/named + +Verifies that all named imports are part of the set of named exports in the referenced module. + +For `export`, verifies that all named exports exist in the referenced module. + +Note: for packages, the plugin will find exported names +from [`jsnext:main`], if present in `package.json`. +Redux's npm module includes this key, and thereby is lintable, for example. + +A module path that is [ignored] or not [unambiguously an ES module] will not be reported when imported. Note that type imports and exports, as used by [Flow], are always ignored. + +[ignored]: ../../README.md#importignore +[unambiguously an ES module]: https://github.com/bmeck/UnambiguousJavaScriptGrammar +[Flow]: https://flow.org/ + + +## Rule Details + +Given: + +```js +// ./foo.js +export const foo = "I'm so foo" +``` + +The following is considered valid: + +```js +// ./bar.js +import { foo } from './foo' + +// ES7 proposal +export { foo as bar } from './foo' + +// node_modules without jsnext:main are not analyzed by default +// (import/ignore setting) +import { SomeNonsenseThatDoesntExist } from 'react' +``` + +...and the following are reported: + +```js +// ./baz.js +import { notFoo } from './foo' + +// ES7 proposal +export { notFoo as defNotBar } from './foo' + +// will follow 'jsnext:main', if available +import { dontCreateStore } from 'redux' +``` + +### Settings + +[`import/ignore`] can be provided as a setting to ignore certain modules (node_modules, +CoffeeScript, CSS if using Webpack, etc.). + +Given: + +```yaml +# .eslintrc (YAML) +--- +settings: + import/ignore: + - node_modules # included by default, but replaced if explicitly configured + - *.coffee$ # can't parse CoffeeScript (unless a custom polyglot parser was configured) +``` + +and + +```coffeescript +# ./whatever.coffee +exports.whatever = (foo) -> console.log foo +``` + +then the following is not reported: + +```js +// ./foo.js + +// can't be analyzed, and ignored, so not reported +import { notWhatever } from './whatever' +``` + +## When Not To Use It + +If you are using CommonJS and/or modifying the exported namespace of any module at +runtime, you will likely see false positives with this rule. + +## Further Reading + +- [`import/ignore`] setting +- [`jsnext:main`] (Rollup) + + +[`jsnext:main`]: https://github.com/rollup/rollup/wiki/jsnext:main +[`import/ignore`]: ../../README.md#importignore diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/namespace.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/namespace.md new file mode 100644 index 0000000..4bbbd37 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/namespace.md @@ -0,0 +1,99 @@ +# import/namespace + +Enforces names exist at the time they are dereferenced, when imported as a full namespace (i.e. `import * as foo from './foo'; foo.bar();` will report if `bar` is not exported by `./foo`.). + +Will report at the import declaration if there are _no_ exported names found. + +Also, will report for computed references (i.e. `foo["bar"]()`). + +Reports on assignment to a member of an imported namespace. + +Note: for packages, the plugin will find exported names +from [`jsnext:main`], if present in `package.json`. +Redux's npm module includes this key, and thereby is lintable, for example. + +A module path that is [ignored] or not [unambiguously an ES module] will not be reported when imported. + +[ignored]: ../README.md#importignore +[unambiguously an ES module]: https://github.com/bmeck/UnambiguousJavaScriptGrammar + +## Rule Details + +Currently, this rule does not check for possible +redefinition of the namespace in an intermediate scope. Adherence to the ESLint +`no-shadow` rule for namespaces will prevent this from being a problem. + +For [ES7], reports if an exported namespace would be empty (no names exported from the referenced module.) + +Given: +```js +// @module ./named-exports +export const a = 1 +const b = 2 +export { b } + +const c = 3 +export { c as d } + +export class ExportedClass { } + +// ES7 +export * as deep from './deep' +``` +and: +```js +// @module ./deep +export const e = "MC2" +``` + +See what is valid and reported: + +```js +// @module ./foo +import * as names from './named-exports' + +function great() { + return names.a + names.b // so great https://youtu.be/ei7mb8UxEl8 +} + +function notGreat() { + doSomethingWith(names.c) // Reported: 'c' not found in imported namespace 'names'. + + const { a, b, c } = names // also reported, only for 'c' +} + +// also tunnels through re-exported namespaces! +function deepTrouble() { + doSomethingWith(names.deep.e) // fine + doSomethingWith(names.deep.f) // Reported: 'f' not found in deeply imported namespace 'names.deep'. +} + +``` + +### Options + +#### `allowComputed` + +Defaults to `false`. When false, will report the following: + +```js +/*eslint import/namespace: [2, { allowComputed: false }]*/ +import * as a from './a' + +function f(x) { + return a[x] // Unable to validate computed reference to imported namespace 'a'. +} +``` + +When set to `true`, the above computed namespace member reference is allowed, but +still can't be statically analyzed any further. + +## Further Reading + +- Lee Byron's [ES7] export proposal +- [`import/ignore`] setting +- [`jsnext:main`](Rollup) + +[ES7]: https://github.com/leebyron/ecmascript-more-export-from +[`import/ignore`]: ../../README.md#importignore +[`jsnext:main`]: https://github.com/rollup/rollup/wiki/jsnext:main diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md new file mode 100644 index 0000000..4883776 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/newline-after-import.md @@ -0,0 +1,87 @@ +# import/newline-after-import + +Enforces having one or more empty lines after the last top-level import statement or require call. ++(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule. + +## Rule Details + +This rule has one option, `count` which sets the number of newlines that are enforced after the last top-level import statement or require call. This option defaults to `1`. + +Valid: + +```js +import defaultExport from './foo' + +const FOO = 'BAR' +``` + +```js +import defaultExport from './foo' +import { bar } from 'bar-lib' + +const FOO = 'BAR' +``` + +```js +const FOO = require('./foo') +const BAR = require('./bar') + +const BAZ = 1 +``` + +Invalid: + +```js +import * as foo from 'foo' +const FOO = 'BAR' +``` + +```js +import * as foo from 'foo' +const FOO = 'BAR' + +import { bar } from 'bar-lib' +``` + +```js +const FOO = require('./foo') +const BAZ = 1 +const BAR = require('./bar') +``` + +With `count` set to `2` this will be considered valid: + +```js +import defaultExport from './foo' + + +const FOO = 'BAR' +``` + +With `count` set to `2` these will be considered invalid: + +```js +import defaultExport from './foo' +const FOO = 'BAR' +``` + +```js +import defaultExport from './foo' + +const FOO = 'BAR' +``` + + +## Example options usage +```json +{ + "rules": { + "import/newline-after-import": ["error", { "count": 2 }] + } +} +``` + + +## When Not To Use It + +If you like to visually group module imports with its usage, you don't want to use this rule. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md new file mode 100644 index 0000000..305e8e6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-absolute-path.md @@ -0,0 +1,48 @@ +# import/no-absolute-path: Forbid import of modules using absolute paths + +Node.js allows the import of modules using an absolute path such as `/home/xyz/file.js`. That is a bad practice as it ties the code using it to your computer, and therefore makes it unusable in packages distributed on `npm` for instance. + +## Rule Details + +### Fail + +```js +import f from '/foo'; +import f from '/some/path'; + +var f = require('/foo'); +var f = require('/some/path'); +``` + +### Pass + +```js +import _ from 'lodash'; +import foo from 'foo'; +import foo from './foo'; + +var _ = require('lodash'); +var foo = require('foo'); +var foo = require('./foo'); +``` + +### Options + +By default, only ES6 imports and CommonJS `require` calls will have this rule enforced. + +You may provide an options object providing true/false for any of + +- `esmodule`: defaults to `true` +- `commonjs`: defaults to `true` +- `amd`: defaults to `false` + +If `{ amd: true }` is provided, dependency paths for AMD-style `define` and `require` +calls will be resolved: + +```js +/*eslint import/no-absolute-path: [2, { commonjs: false, amd: true }]*/ +define(['/foo'], function (foo) { /*...*/ }) // reported +require(['/foo'], function (foo) { /*...*/ }) // reported + +const foo = require('/foo') // ignored because of explicit `commonjs: false` +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-amd.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-amd.md new file mode 100644 index 0000000..f7146c1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-amd.md @@ -0,0 +1,35 @@ +# import/no-amd + +Reports `require([array], ...)` and `define([array], ...)` function calls at the +module scope. Will not report if !=2 arguments, or first argument is not a literal array. + +Intended for temporary use when migrating to pure ES6 modules. + +## Rule Details + +This will be reported: + +```js +define(["a", "b"], function (a, b) { /* ... */ }) + +require(["b", "c"], function (b, c) { /* ... */ }) +``` + +CommonJS `require` is still valid. + +## When Not To Use It + +If you don't mind mixing module systems (sometimes this is useful), you probably +don't want this rule. + +It is also fairly noisy if you have a larger codebase that is being transitioned +from AMD to ES6 modules. + +## Contributors + +Special thanks to @xjamundx for donating his no-define rule as a start to this. + +## Further Reading + +- [`no-commonjs`](./no-commonjs.md): report CommonJS `require` and `exports` +- Source: https://github.com/xjamundx/eslint-plugin-modules diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md new file mode 100644 index 0000000..c8db897 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-anonymous-default-export.md @@ -0,0 +1,73 @@ +# import/no-anonymous-default-export + +Reports if a module's default export is unnamed. This includes several types of unnamed data types; literals, object expressions, arrays, anonymous functions, arrow functions, and anonymous class declarations. + +Ensuring that default exports are named helps improve the grepability of the codebase by encouraging the re-use of the same identifier for the module's default export at its declaration site and at its import sites. + +## Options + +By default, all types of anonymous default exports are forbidden, but any types can be selectively allowed by toggling them on in the options. + +The complete default configuration looks like this. + +```js +"import/no-anonymous-default-export": ["error", { + "allowArray": false, + "allowArrowFunction": false, + "allowAnonymousClass": false, + "allowAnonymousFunction": false, + "allowCallExpression": true, // The true value here is for backward compatibility + "allowLiteral": false, + "allowObject": false +}] +``` + +## Rule Details + +### Fail +```js +export default [] + +export default () => {} + +export default class {} + +export default function () {} + +/* eslint import/no-anonymous-default-export: [2, {"allowCallExpression": false}] */ +export default foo(bar) + +export default 123 + +export default {} +``` + +### Pass +```js +const foo = 123 +export default foo + +export default class MyClass() {} + +export default function foo() {} + +/* eslint import/no-anonymous-default-export: [2, {"allowArray": true}] */ +export default [] + +/* eslint import/no-anonymous-default-export: [2, {"allowArrowFunction": true}] */ +export default () => {} + +/* eslint import/no-anonymous-default-export: [2, {"allowAnonymousClass": true}] */ +export default class {} + +/* eslint import/no-anonymous-default-export: [2, {"allowAnonymousFunction": true}] */ +export default function () {} + +export default foo(bar) + +/* eslint import/no-anonymous-default-export: [2, {"allowLiteral": true}] */ +export default 123 + +/* eslint import/no-anonymous-default-export: [2, {"allowObject": true}] */ +export default {} +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md new file mode 100644 index 0000000..7be4bb3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-commonjs.md @@ -0,0 +1,95 @@ +# import/no-commonjs + +Reports `require([string])` function calls. Will not report if >1 argument, +or single argument is not a literal string. + +Reports `module.exports` or `exports.*`, also. + +Intended for temporary use when migrating to pure ES6 modules. + +## Rule Details + +This will be reported: + +```js +var mod = require('./mod') + , common = require('./common') + , fs = require('fs') + , whateverModule = require('./not-found') + +module.exports = { a: "b" } +exports.c = "d" +``` + +### Allow require + +If `allowRequire` option is set to `true`, `require` calls are valid: + +```js +/*eslint no-commonjs: [2, { allowRequire: true }]*/ +var mod = require('./mod'); +``` + +but `module.exports` is reported as usual. + +### Allow conditional require + +By default, conditional requires are allowed: + +```js +var a = b && require("c") + +if (typeof window !== "undefined") { + require('that-ugly-thing'); +} + +var fs = null; +try { + fs = require("fs") +} catch (error) {} +``` + +If the `allowConditionalRequire` option is set to `false`, they will be reported. + +If you don't rely on synchronous module loading, check out [dynamic import](https://github.com/airbnb/babel-plugin-dynamic-import-node). + +### Allow primitive modules + +If `allowPrimitiveModules` option is set to `true`, the following is valid: + +```js +/*eslint no-commonjs: [2, { allowPrimitiveModules: true }]*/ + +module.exports = "foo" +module.exports = function rule(context) { return { /* ... */ } } +``` + +but this is still reported: + +```js +/*eslint no-commonjs: [2, { allowPrimitiveModules: true }]*/ + +module.exports = { x: "y" } +exports.z = function boop() { /* ... */ } +``` + +This is useful for things like ESLint rule modules, which must export a function as +the module. + +## When Not To Use It + +If you don't mind mixing module systems (sometimes this is useful), you probably +don't want this rule. + +It is also fairly noisy if you have a larger codebase that is being transitioned +from CommonJS to ES6 modules. + + +## Contributors + +Special thanks to @xjamundx for donating the module.exports and exports.* bits. + +## Further Reading + +- [`no-amd`](./no-amd.md): report on AMD `require`, `define` +- Source: https://github.com/xjamundx/eslint-plugin-modules diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-cycle.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-cycle.md new file mode 100644 index 0000000..8819d67 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-cycle.md @@ -0,0 +1,69 @@ +# import/no-cycle + +Ensures that there is no resolvable path back to this module via its dependencies. + +This includes cycles of depth 1 (imported module imports me) to `Infinity`, if the +[`maxDepth`](#maxdepth) option is not set. + +```js +// dep-b.js +import './dep-a.js' + +export function b() { /* ... */ } +``` + +```js +// dep-a.js +import { b } from './dep-b.js' // reported: Dependency cycle detected. +``` + +This rule does _not_ detect imports that resolve directly to the linted module; +for that, see [`no-self-import`]. + + +## Rule Details + +### Options + +By default, this rule only detects cycles for ES6 imports, but see the [`no-unresolved` options](./no-unresolved.md#options) as this rule also supports the same `commonjs` and `amd` flags. However, these flags only impact which import types are _linted_; the +import/export infrastructure only registers `import` statements in dependencies, so +cycles created by `require` within imported modules may not be detected. + +#### `maxDepth` + +There is a `maxDepth` option available to prevent full expansion of very deep dependency trees: + +```js +/*eslint import/no-cycle: [2, { maxDepth: 1 }]*/ + +// dep-c.js +import './dep-a.js' +``` + +```js +// dep-b.js +import './dep-c.js' + +export function b() { /* ... */ } +``` + +```js +// dep-a.js +import { b } from './dep-b.js' // not reported as the cycle is at depth 2 +``` + +This is not necessarily recommended, but available as a cost/benefit tradeoff mechanism +for reducing total project lint time, if needed. + +## When Not To Use It + +This rule is comparatively computationally expensive. If you are pressed for lint +time, or don't think you have an issue with dependency cycles, you may not want +this rule enabled. + +## Further Reading + +- [Original inspiring issue](https://github.com/benmosher/eslint-plugin-import/issues/941) +- Rule to detect that module imports itself: [`no-self-import`] + +[`no-self-import`]: ./no-self-import.md diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-default-export.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-default-export.md new file mode 100644 index 0000000..4f1a300 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-default-export.md @@ -0,0 +1,63 @@ +# `import/no-default-export` + +Prohibit default exports. Mostly an inverse of [`prefer-default-export`]. + +[`prefer-default-export`]: ./prefer-default-export.md + +## Rule Details + +The following patterns are considered warnings: + +```javascript +// bad1.js + +// There is a default export. +export const foo = 'foo'; +const bar = 'bar'; +export default 'bar'; +``` + +```javascript +// bad2.js + +// There is a default export. +const foo = 'foo'; +export { foo as default } +``` + +The following patterns are not warnings: + +```javascript +// good1.js + +// There is only a single module export and it's a named export. +export const foo = 'foo'; +``` + +```javascript +// good2.js + +// There is more than one named export in the module. +export const foo = 'foo'; +export const bar = 'bar'; +``` + +```javascript +// good3.js + +// There is more than one named export in the module +const foo = 'foo'; +const bar = 'bar'; +export { foo, bar } +``` + +```javascript +// export-star.js + +// Any batch export will disable this rule. The remote module is not inspected. +export * from './other-module' +``` + +## When Not To Use It + +If you don't care if default imports are used, or if you prefer default imports over named imports. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md new file mode 100644 index 0000000..c948b51 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-deprecated.md @@ -0,0 +1,61 @@ +# `import/no-deprecated` + +Reports use of a deprecated name, as indicated by a JSDoc block with a `@deprecated` +tag or TomDoc `Deprecated: ` comment. + +using a JSDoc `@deprecated` tag: + +```js +// @file: ./answer.js + +/** + * this is what you get when you trust a mouse talk show + * @deprecated need to restart the experiment + * @returns {Number} nonsense + */ +export function multiply(six, nine) { + return 42 +} +``` + +will report as such: + +```js +import { multiply } from './answer' // Deprecated: need to restart the experiment + +function whatever(y, z) { + return multiply(y, z) // Deprecated: need to restart the experiment +} +``` + +or using the TomDoc equivalent: + +```js +// Deprecated: This is what you get when you trust a mouse talk show, need to +// restart the experiment. +// +// Returns a Number nonsense +export function multiply(six, nine) { + return 42 +} +``` + +Only JSDoc is enabled by default. Other documentation styles can be enabled with +the `import/docstyle` setting. + + +```yaml +# .eslintrc.yml +settings: + import/docstyle: ['jsdoc', 'tomdoc'] +``` + +### Worklist + +- [x] report explicit imports on the import node +- [x] support namespaces + - [x] should bubble up through deep namespaces (#157) +- [x] report explicit imports at reference time (at the identifier) similar to namespace +- [x] mark module deprecated if file JSDoc has a @deprecated tag? +- [ ] don't flag redeclaration of imported, deprecated names +- [ ] flag destructuring diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md new file mode 100644 index 0000000..f59b14d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-duplicates.md @@ -0,0 +1,69 @@ +# import/no-duplicates + +Reports if a resolved path is imported more than once. ++(fixable) The `--fix` option on the [command line] automatically fixes some problems reported by this rule. + +ESLint core has a similar rule ([`no-duplicate-imports`](http://eslint.org/docs/rules/no-duplicate-imports)), but this version +is different in two key ways: + +1. the paths in the source code don't have to exactly match, they just have to point to the same module on the filesystem. (i.e. `./foo` and `./foo.js`) +2. this version distinguishes Flow `type` imports from standard imports. ([#334](https://github.com/benmosher/eslint-plugin-import/pull/334)) + +## Rule Details + +Valid: +```js +import SomeDefaultClass, * as names from './mod' +// Flow `type` import from same module is fine +import type SomeType from './mod' +``` + +...whereas here, both `./mod` imports will be reported: + +```js +import SomeDefaultClass from './mod' + +// oops, some other import separated these lines +import foo from './some-other-mod' + +import * as names from './mod' + +// will catch this too, assuming it is the same target module +import { something } from './mod.js' +``` + +The motivation is that this is likely a result of two developers importing different +names from the same module at different times (and potentially largely different +locations in the file.) This rule brings both (or n-many) to attention. + +### Query Strings + +By default, this rule ignores query strings (i.e. paths followed by a question mark), and thus imports from `./mod?a` and `./mod?b` will be considered as duplicates. However you can use the option `considerQueryString` to handle them as different (primarily because browsers will resolve those imports differently). + +Config: + +```json +"import/no-duplicates": ["error", {"considerQueryString": true}] +``` + +And then the following code becomes valid: +```js +import minifiedMod from './mod?minify' +import noCommentsMod from './mod?comments=0' +import originalMod from './mod' +``` + +It will still catch duplicates when using the same module and the exact same query string: +```js +import SomeDefaultClass from './mod?minify' + +// This is invalid, assuming `./mod` and `./mod.js` are the same target: +import * from './mod.js?minify' +``` + +## When Not To Use It + +If the core ESLint version is good enough (i.e. you're _not_ using Flow and you _are_ using [`import/extensions`](./extensions.md)), keep it and don't use this. + +If you like to split up imports across lines or may need to import a default and a namespace, +you may not want to enable this rule. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md new file mode 100644 index 0000000..0f7bb6d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-dynamic-require.md @@ -0,0 +1,23 @@ +# import/no-dynamic-require: Forbid `require()` calls with expressions + +The `require` method from CommonJS is used to import modules from different files. Unlike the ES6 `import` syntax, it can be given expressions that will be resolved at runtime. While this is sometimes necessary and useful, in most cases it isn't. Using expressions (for instance, concatenating a path and variable) as the argument makes it harder for tools to do static code analysis, or to find where in the codebase a module is used. + +This rule checks every call to `require()` that uses expressions for the module name argument. + +## Rule Details + +### Fail + +```js +require(name); +require('../' + name); +require(`../${name}`); +require(name()); +``` + +### Pass + +```js +require('../name'); +require(`../name`); +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md new file mode 100644 index 0000000..295590c --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-extraneous-dependencies.md @@ -0,0 +1,124 @@ +# import/no-extraneous-dependencies: Forbid the use of extraneous packages + +Forbid the import of external modules that are not declared in the `package.json`'s `dependencies`, `devDependencies`, `optionalDependencies`, `peerDependencies`, or `bundledDependencies`. +The closest parent `package.json` will be used. If no `package.json` is found, the rule will not lint anything. This behaviour can be changed with the rule option `packageDir`. + +Modules have to be installed for this rule to work. + +### Options + +This rule supports the following options: + +`devDependencies`: If set to `false`, then the rule will show an error when `devDependencies` are imported. Defaults to `true`. + +`optionalDependencies`: If set to `false`, then the rule will show an error when `optionalDependencies` are imported. Defaults to `true`. + +`peerDependencies`: If set to `false`, then the rule will show an error when `peerDependencies` are imported. Defaults to `false`. + +`bundledDependencies`: If set to `false`, then the rule will show an error when `bundledDependencies` are imported. Defaults to `true`. + +You can set the options like this: + +```js +"import/no-extraneous-dependencies": ["error", {"devDependencies": false, "optionalDependencies": false, "peerDependencies": false}] +``` + +You can also use an array of globs instead of literal booleans: + +```js +"import/no-extraneous-dependencies": ["error", {"devDependencies": ["**/*.test.js", "**/*.spec.js"]}] +``` + +When using an array of globs, the setting will be set to `true` (no errors reported) if the name of the file being linted matches a single glob in the array, and `false` otherwise. + +Also there is one more option called `packageDir`, this option is to specify the path to the folder containing package.json. + +If provided as a relative path string, will be computed relative to the current working directory at linter execution time. If this is not ideal (does not work with some editor integrations), consider using `__dirname` to provide a path relative to your configuration. + +```js +"import/no-extraneous-dependencies": ["error", {"packageDir": './some-dir/'}] +// or +"import/no-extraneous-dependencies": ["error", {"packageDir": path.join(__dirname, 'some-dir')}] +``` + +It may also be an array of multiple paths, to support monorepos or other novel project +folder layouts: + +```js +"import/no-extraneous-dependencies": ["error", {"packageDir": ['./some-dir/', './root-pkg']}] +``` + +## Rule Details + +Given the following `package.json`: +```json +{ + "name": "my-project", + "...": "...", + "dependencies": { + "builtin-modules": "^1.1.1", + "lodash.cond": "^4.2.0", + "lodash.find": "^4.2.0", + "pkg-up": "^1.0.0" + }, + "devDependencies": { + "ava": "^0.13.0", + "eslint": "^2.4.0", + "eslint-plugin-ava": "^1.3.0", + "xo": "^0.13.0" + }, + "optionalDependencies": { + "lodash.isarray": "^4.0.0" + }, + "peerDependencies": { + "react": ">=15.0.0 <16.0.0" + }, + "bundledDependencies": [ + "@generated/foo", + ] +} +``` + + +## Fail + +```js +var _ = require('lodash'); +import _ from 'lodash'; + +import react from 'react'; + +/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": false}] */ +import test from 'ava'; +var test = require('ava'); + +/* eslint import/no-extraneous-dependencies: ["error", {"optionalDependencies": false}] */ +import isArray from 'lodash.isarray'; +var isArray = require('lodash.isarray'); + +/* eslint import/no-extraneous-dependencies: ["error", {"bundledDependencies": false}] */ +import foo from '"@generated/foo"'; +var foo = require('"@generated/foo"'); +``` + + +## Pass + +```js +// Builtin and internal modules are fine +var path = require('path'); +var foo = require('./foo'); + +import test from 'ava'; +import find from 'lodash.find'; +import isArray from 'lodash.isarray'; +import foo from '"@generated/foo"'; + +/* eslint import/no-extraneous-dependencies: ["error", {"peerDependencies": true}] */ +import react from 'react'; +``` + + +## When Not To Use It + +If you do not have a `package.json` file in your project. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md new file mode 100644 index 0000000..8d99c35 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-internal-modules.md @@ -0,0 +1,64 @@ +# import/no-internal-modules + +Use this rule to prevent importing the submodules of other modules. + +## Rule Details + +This rule has one option, `allow` which is an array of [minimatch/glob patterns](https://github.com/isaacs/node-glob#glob-primer) patterns that whitelist paths and import statements that can be imported with reaching. + +### Examples + +Given the following folder structure: + +``` +my-project +├── actions +│ └── getUser.js +│ └── updateUser.js +├── reducer +│ └── index.js +│ └── user.js +├── redux +│ └── index.js +│ └── configureStore.js +└── app +│ └── index.js +│ └── settings.js +└── entry.js +``` + +And the .eslintrc file: +``` +{ + ... + "rules": { + "import/no-internal-modules": [ "error", { + "allow": [ "**/actions/*", "source-map-support/*" ] + } ] + } +} +``` + +The following patterns are considered problems: + +```js +/** + * in my-project/entry.js + */ + +import { settings } from './app/index'; // Reaching to "./app/index" is not allowed +import userReducer from './reducer/user'; // Reaching to "./reducer/user" is not allowed +import configureStore from './redux/configureStore'; // Reaching to "./redux/configureStore" is not allowed +``` + +The following patterns are NOT considered problems: + +```js +/** + * in my-project/entry.js + */ + +import 'source-map-support/register'; +import { settings } from '../app'; +import getUser from '../actions/getUser'; +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md new file mode 100644 index 0000000..e161e87 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-mutable-exports.md @@ -0,0 +1,52 @@ +# import/no-mutable-exports + +Forbids the use of mutable exports with `var` or `let`. + +## Rule Details + +Valid: + +```js +export const count = 1 +export function getCount() {} +export class Counter {} +``` + +...whereas here exports will be reported: + +```js +export let count = 2 +export var count = 3 + +let count = 4 +export { count } // reported here +``` + +## Functions/Classes + +Note that exported function/class declaration identifiers may be reassigned, +but are not flagged by this rule at this time. They may be in the future, if a +reassignment is detected, i.e. + +```js +// possible future behavior! +export class Counter {} // reported here: exported class is reassigned on line [x]. +Counter = KitchenSink // not reported here unless you enable no-class-assign + +// this pre-declaration reassignment is valid on account of function hoisting +getCount = function getDuke() {} // not reported here without no-func-assign +export function getCount() {} // reported here: exported function is reassigned on line [x]. +``` + +To prevent general reassignment of these identifiers, exported or not, you may +want to enable the following core ESLint rules: + +- [no-func-assign] +- [no-class-assign] + +[no-func-assign]: http://eslint.org/docs/rules/no-func-assign +[no-class-assign]: http://eslint.org/docs/rules/no-class-assign + +## When Not To Use It + +If your environment correctly implements mutable export bindings. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md new file mode 100644 index 0000000..da6ae3f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default-member.md @@ -0,0 +1,47 @@ +# import/no-named-as-default-member + +Reports use of an exported name as a property on the default export. + +Rationale: Accessing a property that has a name that is shared by an exported +name from the same module is likely to be a mistake. + +Named import syntax looks very similar to destructuring assignment. It's easy to +make the (incorrect) assumption that named exports are also accessible as +properties of the default export. + +Furthermore, [in Babel 5 this is actually how things worked][blog]. This was +fixed in Babel 6. Before upgrading an existing codebase to Babel 6, it can be +useful to run this lint rule. + + +[blog]: https://kentcdodds.com/blog/misunderstanding-es6-modules-upgrading-babel-tears-and-a-solution + + +## Rule Details + +Given: +```js +// foo.js +export default 'foo'; +export const bar = 'baz'; +``` + +...this would be valid: +```js +import foo, {bar} from './foo.js'; +``` + +...and the following would be reported: +```js +// Caution: `foo` also has a named export `bar`. +// Check if you meant to write `import {bar} from './foo.js'` instead. +import foo from './foo.js'; +const bar = foo.bar; +``` + +```js +// Caution: `foo` also has a named export `bar`. +// Check if you meant to write `import {bar} from './foo.js'` instead. +import foo from './foo.js'; +const {bar} = foo; +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md new file mode 100644 index 0000000..0a92b7b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-as-default.md @@ -0,0 +1,46 @@ +# import/no-named-as-default + +Reports use of an exported name as the locally imported name of a default export. + +Rationale: using an exported name as the name of the default export is likely... + +- *misleading*: others familiar with `foo.js` probably expect the name to be `foo` +- *a mistake*: only needed to import `bar` and forgot the brackets (the case that is prompting this) + +## Rule Details + +Given: +```js +// foo.js +export default 'foo'; +export const bar = 'baz'; +``` + +...this would be valid: +```js +import foo from './foo.js'; +``` + +...and this would be reported: +```js +// message: Using exported name 'bar' as identifier for default export. +import bar from './foo.js'; +``` + +For post-ES2015 `export` extensions, this also prevents exporting the default from a referenced module as a name within that module, for the same reasons: + +```js +// valid: +export foo from './foo.js' + +// message: Using exported name 'bar' as identifier for default export. +export bar from './foo.js'; +``` + +## Further Reading + +- ECMAScript Proposal: [export ns from] +- ECMAScript Proposal: [export default from] + +[export ns from]: https://github.com/leebyron/ecmascript-export-ns-from +[export default from]: https://github.com/leebyron/ecmascript-export-default-from diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-default.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-default.md new file mode 100644 index 0000000..86fb41d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-default.md @@ -0,0 +1,27 @@ +# import/no-named-default + +Reports use of a default export as a locally named import. + +Rationale: the syntax exists to import default exports expressively, let's use it. + +## Rule Details + +Given: +```js +// foo.js +export default 'foo'; +export const bar = 'baz'; +``` + +...these would be valid: +```js +import foo from './foo.js'; +import foo, { bar } from './foo.js'; +``` + +...and these would be reported: +```js +// message: Using exported name 'bar' as identifier for default export. +import { default as foo } from './foo.js'; +import { default as foo, bar } from './foo.js'; +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-export.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-export.md new file mode 100644 index 0000000..0ff881e --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-named-export.md @@ -0,0 +1,77 @@ +# `import/no-named-export` + +Prohibit named exports. Mostly an inverse of [`no-default-export`]. + +[`no-default-export`]: ./no-default-export.md + +## Rule Details + +The following patterns are considered warnings: + +```javascript +// bad1.js + +// There is only a single module export and it's a named export. +export const foo = 'foo'; +``` + +```javascript +// bad2.js + +// There is more than one named export in the module. +export const foo = 'foo'; +export const bar = 'bar'; +``` + +```javascript +// bad3.js + +// There is more than one named export in the module. +const foo = 'foo'; +const bar = 'bar'; +export { foo, bar } +``` + +```javascript +// bad4.js + +// There is more than one named export in the module. +export * from './other-module' +``` + +```javascript +// bad5.js + +// There is a default and a named export. +export const foo = 'foo'; +const bar = 'bar'; +export default 'bar'; +``` + +The following patterns are not warnings: + +```javascript +// good1.js + +// There is only a single module export and it's a default export. +export default 'bar'; +``` + +```javascript +// good2.js + +// There is only a single module export and it's a default export. +const foo = 'foo'; +export { foo as default } +``` + +```javascript +// good3.js + +// There is only a single module export and it's a default export. +export default from './other-module'; +``` + +## When Not To Use It + +If you don't care if named imports are used, or if you prefer named imports over default imports. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-namespace.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-namespace.md new file mode 100644 index 0000000..e0b0f0b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-namespace.md @@ -0,0 +1,30 @@ +# import/no-namespace + +Enforce a convention of not using namespace (a.k.a. "wildcard" `*`) imports. + ++(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule, provided that the namespace object is only used for direct member access, e.g. `namespace.a`. +The `--fix` functionality for this rule requires ESLint 5 or newer. + +## Rule Details + +Valid: + +```js +import defaultExport from './foo' +import { a, b } from './bar' +import defaultExport, { a, b } from './foobar' +``` + +Invalid: + +```js +import * as foo from 'foo'; +``` + +```js +import defaultExport, * as foo from 'foo'; +``` + +## When Not To Use It + +If you want to use namespaces, you don't want to use this rule. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md new file mode 100644 index 0000000..225adab --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-nodejs-modules.md @@ -0,0 +1,40 @@ +# import/no-nodejs-modules: No Node.js builtin modules + +Forbid the use of Node.js builtin modules. Can be useful for client-side web projects that do not have access to those modules. + +### Options + +This rule supports the following options: + +- `allow`: Array of names of allowed modules. Defaults to an empty array. + +## Rule Details + +### Fail + +```js +import fs from 'fs'; +import path from 'path'; + +var fs = require('fs'); +var path = require('path'); +``` + +### Pass + +```js +import _ from 'lodash'; +import foo from 'foo'; +import foo from './foo'; + +var _ = require('lodash'); +var foo = require('foo'); +var foo = require('./foo'); + +/* eslint import/no-nodejs-modules: ["error", {"allow": ["path"]}] */ +import path from 'path'; +``` + +## When Not To Use It + +If you have a project that is run mainly or partially using Node.js. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md new file mode 100644 index 0000000..7d6e883 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-relative-parent-imports.md @@ -0,0 +1,120 @@ +# import/no-relative-parent-imports + +Use this rule to prevent imports to folders in relative parent paths. + +This rule is useful for enforcing tree-like folder structures instead of complex graph-like folder structures. While this restriction might be a departure from Node's default resolution style, it can lead large, complex codebases to be easier to maintain. If you've ever had debates over "where to put files" this rule is for you. + +To fix violations of this rule there are three general strategies. Given this example: + +``` +numbers +└── three.js +add.js +``` + +```js +// ./add.js +export default function (numbers) { + return numbers.reduce((sum, n) => sum + n, 0); +} + +// ./numbers/three.js +import add from '../add'; // violates import/no-relative-parent-imports + +export default function three() { + return add([1, 2]); +} +``` + +You can, + +1. Move the file to be in a sibling folder (or higher) of the dependency. + +`three.js` could be be in the same folder as `add.js`: + +``` +three.js +add.js +``` + +or since `add` doesn't have any imports, it could be in it's own directory (namespace): + +``` +math +└── add.js +three.js +``` + +2. Pass the dependency as an argument at runtime (dependency injection) + +```js +// three.js +export default function three(add) { + return add([1, 2]); +} + +// somewhere else when you use `three.js`: +import add from './add'; +import three from './numbers/three'; +console.log(three(add)); +``` + +3. Make the dependency a package so it's globally available to all files in your project: + +```js +import add from 'add'; // from https://www.npmjs.com/package/add +export default function three() { + return add([1,2]); +} +``` + +These are (respectively) static, dynamic & global solutions to graph-like dependency resolution. + +### Examples + +Given the following folder structure: + +``` +my-project +├── lib +│ ├── a.js +│ └── b.js +└── main.js +``` + +And the .eslintrc file: +``` +{ + ... + "rules": { + "import/no-relative-parent-imports": "error" + } +} +``` + +The following patterns are considered problems: + +```js +/** + * in my-project/lib/a.js + */ + +import bar from '../main'; // Import parent file using a relative path +``` + +The following patterns are NOT considered problems: + +```js +/** + * in my-project/main.js + */ + +import foo from 'foo'; // Import package using module path +import a from './lib/a'; // Import child file using relative path + +/** + * in my-project/lib/a.js + */ + +import b from './b'; // Import sibling file using relative path +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md new file mode 100644 index 0000000..3776699 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-restricted-paths.md @@ -0,0 +1,79 @@ +# import/no-restricted-paths: Restrict which files can be imported in a given folder + +Some projects contain files which are not always meant to be executed in the same environment. +For example consider a web application that contains specific code for the server and some specific code for the browser/client. In this case you don’t want to import server-only files in your client code. + +In order to prevent such scenarios this rule allows you to define restricted zones where you can forbid files from imported if they match a specific path. + +## Rule Details + +This rule has one option. The option is an object containing the definition of all restricted `zones` and the optional `basePath` which is used to resolve relative paths within. +The default value for `basePath` is the current working directory. +Each zone consists of the `target` path and a `from` path. The `target` is the path where the restricted imports should be applied. The `from` path defines the folder that is not allowed to be used in an import. An optional `except` may be defined for a zone, allowing exception paths that would otherwise violate the related `from`. Note that `except` is relative to `from` and cannot backtrack to a parent directory. + +### Examples + +Given the following folder structure: + +``` +my-project +├── client +│ └── foo.js +│ └── baz.js +└── server + └── bar.js +``` + +and the current file being linted is `my-project/client/foo.js`. + +The following patterns are considered problems when configuration set to `{ "zones": [ { "target": "./client", "from": "./server" } ] }`: + +```js +import bar from '../server/bar'; +``` + +The following patterns are not considered problems when configuration set to `{ "zones": [ { "target": "./client", "from": "./server" } ] }`: + +```js +import baz from '../client/baz'; +``` + +--------------- + +Given the following folder structure: + +``` +my-project +├── client +│ └── foo.js +│ └── baz.js +└── server + ├── one + │ └── a.js + │ └── b.js + └── two +``` + +and the current file being linted is `my-project/server/one/a.js`. + +and the current configuration is set to: + +``` +{ "zones": [ { + "target": "./tests/files/restricted-paths/server/one", + "from": "./tests/files/restricted-paths/server", + "except": ["./one"] +} ] } +``` + +The following pattern is considered a problem: + +```js +import a from '../two/a' +``` + +The following pattern is not considered a problem: + +```js +import b from './b' +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-self-import.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-self-import.md new file mode 100644 index 0000000..bde063f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-self-import.md @@ -0,0 +1,30 @@ +# Forbid a module from importing itself (`import/no-self-import`) + +Forbid a module from importing itself. This can sometimes happen during refactoring. + +## Rule Details + +### Fail + +```js +// foo.js +import foo from './foo'; + +const foo = require('./foo'); +``` + +```js +// index.js +import index from '.'; + +const index = require('.'); +``` + +### Pass + +```js +// foo.js +import bar from './bar'; + +const bar = require('./bar'); +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md new file mode 100644 index 0000000..fb3065c --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unassigned-import.md @@ -0,0 +1,59 @@ +# import/no-unassigned-import: Forbid unassigned imports + +With both CommonJS' `require` and the ES6 modules' `import` syntax, it is possible to import a module but not to use its result. This can be done explicitly by not assigning the module to as variable. Doing so can mean either of the following things: +- The module is imported but not used +- The module has side-effects (like [`should`](https://www.npmjs.com/package/should)). Having side-effects, makes it hard to know whether the module is actually used or can be removed. It can also make it harder to test or mock parts of your application. + +This rule aims to remove modules with side-effects by reporting when a module is imported but not assigned. + +### Options + +This rule supports the following option: + +`allow`: An Array of globs. The files that match any of these patterns would be ignored/allowed by the linter. This can be useful for some build environments (e.g. css-loader in webpack). + +Note that the globs start from the where the linter is executed (usually project root), but not from each file that includes the source. Learn more in both the pass and fail examples below. + + +## Fail + +```js +import 'should' +require('should') + +// In /src/app.js +import '../styles/app.css' +// {"allow": ["styles/*.css"]} +``` + + +## Pass + +```js +import _ from 'foo' +import _, {foo} from 'foo' +import _, {foo as bar} from 'foo' +import {foo as bar} from 'foo' +import * as _ from 'foo' + +const _ = require('foo') +const {foo} = require('foo') +const {foo: bar} = require('foo') +const [a, b] = require('foo') +const _ = require('foo') + +// Module is not assigned, but it is used +bar(require('foo')) +require('foo').bar +require('foo').bar() +require('foo')() + +// With allow option set +import './style.css' // {"allow": ["**/*.css"]} +import 'babel-register' // {"allow": ["babel-register"]} + +// In /src/app.js +import './styles/app.css' +import '../scripts/register.js' +// {"allow": ["src/styles/**", "**/scripts/*.js"]} +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md new file mode 100644 index 0000000..30cd8cb --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unresolved.md @@ -0,0 +1,91 @@ +# import/no-unresolved + +Ensures an imported module can be resolved to a module on the local filesystem, +as defined by standard Node `require.resolve` behavior. + +See [settings](../../README.md#settings) for customization options for the resolution (i.e. +additional filetypes, `NODE_PATH`, etc.) + +This rule can also optionally report on unresolved modules in CommonJS `require('./foo')` calls and AMD `require(['./foo'], function (foo){...})` and `define(['./foo'], function (foo){...})`. + +To enable this, send `{ commonjs: true/false, amd: true/false }` as a rule option. +Both are disabled by default. + +If you are using Webpack, see the section on [resolvers](../../README.md#resolvers). + +## Rule Details + +### Options + +By default, only ES6 imports will be resolved: + +```js +/*eslint import/no-unresolved: 2*/ +import x from './foo' // reports if './foo' cannot be resolved on the filesystem +``` + +If `{commonjs: true}` is provided, single-argument `require` calls will be resolved: + +```js +/*eslint import/no-unresolved: [2, { commonjs: true }]*/ +const { default: x } = require('./foo') // reported if './foo' is not found + +require(0) // ignored +require(['x', 'y'], function (x, y) { /*...*/ }) // ignored +``` + +Similarly, if `{ amd: true }` is provided, dependency paths for `define` and `require` +calls will be resolved: + +```js +/*eslint import/no-unresolved: [2, { amd: true }]*/ +define(['./foo'], function (foo) { /*...*/ }) // reported if './foo' is not found +require(['./foo'], function (foo) { /*...*/ }) // reported if './foo' is not found + +const { default: x } = require('./foo') // ignored +``` + +Both may be provided, too: +```js +/*eslint import/no-unresolved: [2, { commonjs: true, amd: true }]*/ +const { default: x } = require('./foo') // reported if './foo' is not found +define(['./foo'], function (foo) { /*...*/ }) // reported if './foo' is not found +require(['./foo'], function (foo) { /*...*/ }) // reported if './foo' is not found +``` + +#### `ignore` + +This rule has its own ignore list, separate from [`import/ignore`]. This is because you may want to know whether a module can be located, regardless of whether it can be parsed for exports: `node_modules`, CoffeeScript files, etc. are all good to resolve properly, but will not be parsed if configured as such via [`import/ignore`]. + +To suppress errors from files that may not be properly resolved by your [resolver settings](../../README.md#resolver-plugins), you may add an `ignore` key with an array of `RegExp` pattern strings: + +```js +/*eslint import/no-unresolved: [2, { ignore: ['\.img$'] }]*/ + +import { x } from './mod' // may be reported, if not resolved to a module + +import coolImg from '../../img/coolImg.img' // will not be reported, even if not found +``` + +#### `caseSensitive` + +By default, this rule will report paths whose case do not match the underlying filesystem path, if the FS is not case-sensitive. To disable this behavior, set the `caseSensitive` option to `false`. + +```js +/*eslint import/no-unresolved: [2, { caseSensitive: true (default) | false }]*/ +const { default: x } = require('./foo') // reported if './foo' is actually './Foo' and caseSensitive: true +``` + +## When Not To Use It + +If you're using a module bundler other than Node or Webpack, you may end up with +a lot of false positive reports of missing dependencies. + +## Further Reading + +- [Resolver plugins](../../README.md#resolver-plugins) +- [Node resolver](https://npmjs.com/package/eslint-import-resolver-node) (default) +- [Webpack resolver](https://npmjs.com/package/eslint-import-resolver-webpack) +- [`import/ignore`] global setting + +[`import/ignore`]: ../../README.md#importignore diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md new file mode 100644 index 0000000..4302bc8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-unused-modules.md @@ -0,0 +1,113 @@ +# import/no-unused-modules + +Reports: + - modules without any exports + - individual exports not being statically `import`ed or `require`ed from other modules in the same project + +Note: dynamic imports are currently not supported. + +## Rule Details + +### Usage + +In order for this plugin to work, one of the options `missingExports` or `unusedExports` must be enabled (see "Options" section below). In the future, these options will be enabled by default (see https://github.com/benmosher/eslint-plugin-import/issues/1324) + +Example: +``` +"rules: { + ...otherRules, + "import/no-unused-modules": [1, {"unusedExports": true}] +} +``` + +### Options + +This rule takes the following option: + +- **`missingExports`**: if `true`, files without any exports are reported (defaults to `false`) +- **`unusedExports`**: if `true`, exports without any static usage within other modules are reported (defaults to `false`) +- `src`: an array with files/paths to be analyzed. It only applies to unused exports. Defaults to `process.cwd()`, if not provided +- `ignoreExports`: an array with files/paths for which unused exports will not be reported (e.g module entry points in a published package) + + +### Example for missing exports +#### The following will be reported +```js +const class MyClass { /*...*/ } + +function makeClass() { return new MyClass(...arguments) } +``` + +#### The following will not be reported + +```js +export default function () { /*...*/ } +``` +```js +export const foo = function () { /*...*/ } +``` +```js +export { foo, bar } +``` +```js +export { foo as bar } +``` + +### Example for unused exports +given file-f: +```js +import { e } from 'file-a' +import { f } from 'file-b' +import * from 'file-c' +export * from 'file-d' +export { default, i0 } from 'file-e' // both will be reported + +export const j = 99 // will be reported +``` +and file-e: +```js +export const i0 = 9 // will not be reported +export const i1 = 9 // will be reported +export default () => {} // will not be reported +``` +and file-d: +```js +export const h = 8 // will not be reported +export default () => {} // will be reported, as export * only considers named exports and ignores default exports +``` +and file-c: +```js +export const g = 7 // will not be reported +export default () => {} // will not be reported +``` +and file-b: +```js +import two, { b, c, doAnything } from 'file-a' + +export const f = 6 // will not be reported +``` +and file-a: +```js +const b = 2 +const c = 3 +const d = 4 + +export const a = 1 // will be reported + +export { b, c } // will not be reported + +export { d as e } // will not be reported + +export function doAnything() { + // some code +} // will not be reported + +export default 5 // will not be reported +``` + +#### Important Note +Exports from files listed as a main file (`main`, `browser`, or `bin` fields in `package.json`) will be ignored by default. This only applies if the `package.json` is not set to `private: true` + +## When not to use + +If you don't mind having unused files or dead code within your codebase, you can disable this rule diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md new file mode 100644 index 0000000..19b7725 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-useless-path-segments.md @@ -0,0 +1,79 @@ +# import/no-useless-path-segments + +Use this rule to prevent unnecessary path segments in import and require statements. + +## Rule Details + +Given the following folder structure: + +``` +my-project +├── app.js +├── footer.js +├── header.js +└── helpers.js +└── helpers + └── index.js +└── pages + ├── about.js + ├── contact.js + └── index.js +``` + +The following patterns are considered problems: + +```js +/** + * in my-project/app.js + */ + +import "./../pages/about.js"; // should be "./pages/about.js" +import "./../pages/about"; // should be "./pages/about" +import "../pages/about.js"; // should be "./pages/about.js" +import "../pages/about"; // should be "./pages/about" +import "./pages//about"; // should be "./pages/about" +import "./pages/"; // should be "./pages" +import "./pages/index"; // should be "./pages" (except if there is a ./pages.js file) +import "./pages/index.js"; // should be "./pages" (except if there is a ./pages.js file) +``` + +The following patterns are NOT considered problems: + +```js +/** + * in my-project/app.js + */ + +import "./header.js"; +import "./pages"; +import "./pages/about"; +import "."; +import ".."; +import fs from "fs"; +``` + +## Options + +### noUselessIndex + +If you want to detect unnecessary `/index` or `/index.js` (depending on the specified file extensions, see below) imports in your paths, you can enable the option `noUselessIndex`. By default it is set to `false`: +```js +"import/no-useless-path-segments": ["error", { + noUselessIndex: true, +}] +``` + +Additionally to the patterns described above, the following imports are considered problems if `noUselessIndex` is enabled: + +```js +// in my-project/app.js +import "./helpers/index"; // should be "./helpers/" (not auto-fixable to `./helpers` because this would lead to an ambiguous import of `./helpers.js` and `./helpers/index.js`) +import "./pages/index"; // should be "./pages" (auto-fixable) +import "./pages/index.js"; // should be "./pages" (auto-fixable) +``` + +Note: `noUselessIndex` only avoids ambiguous imports for `.js` files if you haven't specified other resolved file extensions. See [Settings: import/extensions](https://github.com/benmosher/eslint-plugin-import#importextensions) for details. + +### commonjs + +When set to `true`, this rule checks CommonJS imports. Default to `false`. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md new file mode 100644 index 0000000..37b39a4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/no-webpack-loader-syntax.md @@ -0,0 +1,36 @@ +# import/no-webpack-loader-syntax + +Forbid Webpack loader syntax in imports. + +[Webpack](http://webpack.github.io) allows specifying the [loaders](http://webpack.github.io/docs/loaders.html) to use in the import source string using a special syntax like this: +```js +var moduleWithOneLoader = require("my-loader!./my-awesome-module"); +``` + +This syntax is non-standard, so it couples the code to Webpack. The recommended way to specify Webpack loader configuration is in a [Webpack configuration file](http://webpack.github.io/docs/loaders.html#loaders-by-config). + +## Rule Details + +### Fail + +```js +import myModule from 'my-loader!my-module'; +import theme from 'style!css!./theme.css'; + +var myModule = require('my-loader!./my-module'); +var theme = require('style!css!./theme.css'); +``` + +### Pass + +```js +import myModule from 'my-module'; +import theme from './theme.css'; + +var myModule = require('my-module'); +var theme = require('./theme.css'); +``` + +## When Not To Use It + +If you have a project that doesn't use Webpack you can safely disable this rule. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/order.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/order.md new file mode 100644 index 0000000..667b633 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/order.md @@ -0,0 +1,259 @@ +# import/order: Enforce a convention in module import order + +Enforce a convention in the order of `require()` / `import` statements. ++(fixable) The `--fix` option on the [command line] automatically fixes problems reported by this rule. +The order is as shown in the following example: + +```js +// 1. node "builtin" modules +import fs from 'fs'; +import path from 'path'; +// 2. "external" modules +import _ from 'lodash'; +import chalk from 'chalk'; +// 3. "internal" modules +// (if you have configured your path or webpack to handle your internal paths differently) +import foo from 'src/foo'; +// 4. modules from a "parent" directory +import foo from '../foo'; +import qux from '../../foo/qux'; +// 5. "sibling" modules from the same or a sibling's directory +import bar from './bar'; +import baz from './bar/baz'; +// 6. "index" of the current directory +import main from './'; +``` + +Unassigned imports are ignored, as the order they are imported in may be important. + +Statements using the ES6 `import` syntax must appear before any `require()` statements. + + +## Fail + +```js +import _ from 'lodash'; +import path from 'path'; // `path` import should occur before import of `lodash` + +// ----- + +var _ = require('lodash'); +var path = require('path'); // `path` import should occur before import of `lodash` + +// ----- + +var path = require('path'); +import foo from './foo'; // `import` statements must be before `require` statement +``` + + +## Pass + +```js +import path from 'path'; +import _ from 'lodash'; + +// ----- + +var path = require('path'); +var _ = require('lodash'); + +// ----- + +// Allowed as ̀`babel-register` is not assigned. +require('babel-register'); +var path = require('path'); + +// ----- + +// Allowed as `import` must be before `require` +import foo from './foo'; +var path = require('path'); +``` + +## Options + +This rule supports the following options: + +### `groups: [array]`: + +How groups are defined, and the order to respect. `groups` must be an array of `string` or [`string`]. The only allowed `string`s are: `"builtin"`, `"external"`, `"internal"`, `"unknown"`, `"parent"`, `"sibling"`, `"index"`. The enforced order is the same as the order of each element in a group. Omitted types are implicitly grouped together as the last element. Example: +```js +[ + 'builtin', // Built-in types are first + ['sibling', 'parent'], // Then sibling and parent types. They can be mingled together + 'index', // Then the index file + // Then the rest: internal and external type +] +``` +The default value is `["builtin", "external", "parent", "sibling", "index"]`. + +You can set the options like this: + +```js +"import/order": ["error", {"groups": ["index", "sibling", "parent", "internal", "external", "builtin"]}] +``` + +### `pathGroups: [array of objects]`: + +To be able to group by paths mostly needed with aliases pathGroups can be defined. + +Properties of the objects + +| property | required | type | description | +|----------------|:--------:|--------|---------------| +| pattern | x | string | minimatch pattern for the paths to be in this group (will not be used for builtins or externals) | +| patternOptions | | object | options for minimatch, default: { nocomment: true } | +| group | x | string | one of the allowed groups, the pathGroup will be positioned relative to this group | +| position | | string | defines where around the group the pathGroup will be positioned, can be 'after' or 'before', if not provided pathGroup will be positioned like the group | + +```json +{ + "import/order": ["error", { + "pathGroups": [ + { + "pattern": "~/**", + "group": "external" + } + ] + }] +} +``` + +### `pathGroupsExcludedImportTypes: [array]`: + +This defines import types that are not handled by configured pathGroups. +This is mostly needed when you want to handle path groups that look like external imports. + +Example: +```json +{ + "import/order": ["error", { + "pathGroups": [ + { + "pattern": "@app/**", + "group": "external", + "position": "after" + } + ], + "pathGroupsExcludedImportTypes": ["builtin"] + }] +} +``` +The default value is `["builtin", "external"]`. + +### `newlines-between: [ignore|always|always-and-inside-groups|never]`: + +Enforces or forbids new lines between import groups: + +- If set to `ignore`, no errors related to new lines between import groups will be reported (default). +- If set to `always`, at least one new line between each group will be enforced, and new lines inside a group will be forbidden. To prevent multiple lines between imports, core `no-multiple-empty-lines` rule can be used. +- If set to `always-and-inside-groups`, it will act like `always` except newlines are allowed inside import groups. +- If set to `never`, no new lines are allowed in the entire import section. + +With the default group setting, the following will be invalid: + +```js +/* eslint import/order: ["error", {"newlines-between": "always"}] */ +import fs from 'fs'; +import path from 'path'; +import index from './'; +import sibling from './foo'; +``` + +```js +/* eslint import/order: ["error", {"newlines-between": "always-and-inside-groups"}] */ +import fs from 'fs'; + +import path from 'path'; +import index from './'; +import sibling from './foo'; +``` + +```js +/* eslint import/order: ["error", {"newlines-between": "never"}] */ +import fs from 'fs'; +import path from 'path'; + +import index from './'; + +import sibling from './foo'; +``` + +while those will be valid: + +```js +/* eslint import/order: ["error", {"newlines-between": "always"}] */ +import fs from 'fs'; +import path from 'path'; + +import index from './'; + +import sibling from './foo'; +``` + +```js +/* eslint import/order: ["error", {"newlines-between": "always-and-inside-groups"}] */ +import fs from 'fs'; + +import path from 'path'; + +import index from './'; + +import sibling from './foo'; +``` + +```js +/* eslint import/order: ["error", {"newlines-between": "never"}] */ +import fs from 'fs'; +import path from 'path'; +import index from './'; +import sibling from './foo'; +``` + +### `alphabetize: {order: asc|desc|ignore, caseInsensitive: true|false}`: + +Sort the order within each group in alphabetical manner based on **import path**: + +- `order`: use `asc` to sort in ascending order, and `desc` to sort in descending order (default: `ignore`). +- `caseInsensitive`: use `true` to ignore case, and `false` to consider case (default: `false`). + +Example setting: +```js +alphabetize: { + order: 'asc', /* sort in ascending order. Options: ['ignore', 'asc', 'desc'] */ + caseInsensitive: true /* ignore case. Options: [true, false] */ +} +``` + +This will fail the rule check: + +```js +/* eslint import/order: ["error", {"alphabetize": true}] */ +import React, { PureComponent } from 'react'; +import aTypes from 'prop-types'; +import { compose, apply } from 'xcompose'; +import * as classnames from 'classnames'; +import blist from 'BList'; +``` + +While this will pass: + +```js +/* eslint import/order: ["error", {"alphabetize": true}] */ +import blist from 'BList'; +import * as classnames from 'classnames'; +import aTypes from 'prop-types'; +import React, { PureComponent } from 'react'; +import { compose, apply } from 'xcompose'; +``` + +## Related + +- [`import/external-module-folders`] setting + +- [`import/internal-regex`] setting + +[`import/external-module-folders`]: ../../README.md#importexternal-module-folders + +[`import/internal-regex`]: ../../README.md#importinternal-regex diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md new file mode 100644 index 0000000..23e584b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/prefer-default-export.md @@ -0,0 +1,58 @@ +# import/prefer-default-export + +When there is only a single export from a module, prefer using default export over named export. + +## Rule Details + +The following patterns are considered warnings: + +```javascript +// bad.js + +// There is only a single module export and it's a named export. +export const foo = 'foo'; + +``` + +The following patterns are not warnings: + +```javascript +// good1.js + +// There is a default export. +export const foo = 'foo'; +const bar = 'bar'; +export default 'bar'; +``` + +```javascript +// good2.js + +// There is more than one named export in the module. +export const foo = 'foo'; +export const bar = 'bar'; +``` + +```javascript +// good3.js + +// There is more than one named export in the module +const foo = 'foo'; +const bar = 'bar'; +export { foo, bar } +``` + +```javascript +// good4.js + +// There is a default export. +const foo = 'foo'; +export { foo as default } +``` + +```javascript +// export-star.js + +// Any batch export will disable this rule. The remote module is not inspected. +export * from './other-module' +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/unambiguous.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/unambiguous.md new file mode 100644 index 0000000..7955c3f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/docs/rules/unambiguous.md @@ -0,0 +1,54 @@ +# import/unambiguous + +Warn if a `module` could be mistakenly parsed as a `script` by a consumer leveraging +[Unambiguous JavaScript Grammar] to determine correct parsing goal. + +Will respect the [`parserOptions.sourceType`] from ESLint config, i.e. files parsed +as `script` per that setting will not be reported. + +This plugin uses [Unambiguous JavaScript Grammar] internally to decide whether +dependencies should be parsed as modules and searched for exports matching the +`import`ed names, so it may be beneficial to keep this rule on even if your application +will run in an explicit `module`-only environment. + +## Rule Details + +For files parsed as `module` by ESLint, the following are valid: + +```js +import 'foo' +function x() { return 42 } +``` + +```js +export function x() { return 42 } +``` + +```js +(function x() { return 42 })() +export {} // simple way to mark side-effects-only file as 'module' without any imports/exports +``` + +...whereas the following file would be reported: +```js +(function x() { return 42 })() +``` + +## When Not To Use It + +If your application environment will always know via [some other means](https://github.com/nodejs/node-eps/issues/13) +how to parse, regardless of syntax, you may not need this rule. + +Remember, though, that this plugin uses this strategy internally, so if you were +to `import` from a module with no `import`s or `export`s, this plugin would not +report it as it would not be clear whether it should be considered a `script` or +a `module`. + +## Further Reading + +- [Unambiguous JavaScript Grammar] +- [`parserOptions.sourceType`] +- [node-eps#13](https://github.com/nodejs/node-eps/issues/13) + +[`parserOptions.sourceType`]: http://eslint.org/docs/user-guide/configuring#specifying-parser-options +[Unambiguous JavaScript Grammar]: https://github.com/nodejs/node-eps/blob/master/002-es-modules.md#32-determining-if-source-is-an-es-module diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/ExportMap.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/ExportMap.js new file mode 100644 index 0000000..8b3aae7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/ExportMap.js @@ -0,0 +1,653 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.recursivePatternCapture = recursivePatternCapture; + +var _fs = require('fs'); + +var _fs2 = _interopRequireDefault(_fs); + +var _doctrine = require('doctrine'); + +var _doctrine2 = _interopRequireDefault(_doctrine); + +var _debug = require('debug'); + +var _debug2 = _interopRequireDefault(_debug); + +var _eslint = require('eslint'); + +var _parse = require('eslint-module-utils/parse'); + +var _parse2 = _interopRequireDefault(_parse); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _ignore = require('eslint-module-utils/ignore'); + +var _ignore2 = _interopRequireDefault(_ignore); + +var _hash = require('eslint-module-utils/hash'); + +var _unambiguous = require('eslint-module-utils/unambiguous'); + +var unambiguous = _interopRequireWildcard(_unambiguous); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const log = (0, _debug2.default)('eslint-plugin-import:ExportMap'); + +const exportCache = new Map(); + +class ExportMap { + constructor(path) { + this.path = path; + this.namespace = new Map(); + // todo: restructure to key on path, value is resolver + map of names + this.reexports = new Map(); + /** + * star-exports + * @type {Set} of () => ExportMap + */ + this.dependencies = new Set(); + /** + * dependencies of this module that are not explicitly re-exported + * @type {Map} from path = () => ExportMap + */ + this.imports = new Map(); + this.errors = []; + } + + get hasDefault() { + return this.get('default') != null; + } // stronger than this.has + + get size() { + let size = this.namespace.size + this.reexports.size; + this.dependencies.forEach(dep => { + const d = dep(); + // CJS / ignored dependencies won't exist (#717) + if (d == null) return; + size += d.size; + }); + return size; + } + + /** + * Note that this does not check explicitly re-exported names for existence + * in the base namespace, but it will expand all `export * from '...'` exports + * if not found in the explicit namespace. + * @param {string} name + * @return {Boolean} true if `name` is exported by this module. + */ + has(name) { + if (this.namespace.has(name)) return true; + if (this.reexports.has(name)) return true; + + // default exports must be explicitly re-exported (#328) + if (name !== 'default') { + for (let dep of this.dependencies) { + let innerMap = dep(); + + // todo: report as unresolved? + if (!innerMap) continue; + + if (innerMap.has(name)) return true; + } + } + + return false; + } + + /** + * ensure that imported name fully resolves. + * @param {[type]} name [description] + * @return {Boolean} [description] + */ + hasDeep(name) { + if (this.namespace.has(name)) return { found: true, path: [this] }; + + if (this.reexports.has(name)) { + const reexports = this.reexports.get(name), + imported = reexports.getImport(); + + // if import is ignored, return explicit 'null' + if (imported == null) return { found: true, path: [this] + + // safeguard against cycles, only if name matches + };if (imported.path === this.path && reexports.local === name) { + return { found: false, path: [this] }; + } + + const deep = imported.hasDeep(reexports.local); + deep.path.unshift(this); + + return deep; + } + + // default exports must be explicitly re-exported (#328) + if (name !== 'default') { + for (let dep of this.dependencies) { + let innerMap = dep(); + if (innerMap == null) return { found: true, path: [this] + // todo: report as unresolved? + };if (!innerMap) continue; + + // safeguard against cycles + if (innerMap.path === this.path) continue; + + let innerValue = innerMap.hasDeep(name); + if (innerValue.found) { + innerValue.path.unshift(this); + return innerValue; + } + } + } + + return { found: false, path: [this] }; + } + + get(name) { + if (this.namespace.has(name)) return this.namespace.get(name); + + if (this.reexports.has(name)) { + const reexports = this.reexports.get(name), + imported = reexports.getImport(); + + // if import is ignored, return explicit 'null' + if (imported == null) return null; + + // safeguard against cycles, only if name matches + if (imported.path === this.path && reexports.local === name) return undefined; + + return imported.get(reexports.local); + } + + // default exports must be explicitly re-exported (#328) + if (name !== 'default') { + for (let dep of this.dependencies) { + let innerMap = dep(); + // todo: report as unresolved? + if (!innerMap) continue; + + // safeguard against cycles + if (innerMap.path === this.path) continue; + + let innerValue = innerMap.get(name); + if (innerValue !== undefined) return innerValue; + } + } + + return undefined; + } + + forEach(callback, thisArg) { + this.namespace.forEach((v, n) => callback.call(thisArg, v, n, this)); + + this.reexports.forEach((reexports, name) => { + const reexported = reexports.getImport(); + // can't look up meta for ignored re-exports (#348) + callback.call(thisArg, reexported && reexported.get(reexports.local), name, this); + }); + + this.dependencies.forEach(dep => { + const d = dep(); + // CJS / ignored dependencies won't exist (#717) + if (d == null) return; + + d.forEach((v, n) => n !== 'default' && callback.call(thisArg, v, n, this)); + }); + } + + // todo: keys, values, entries? + + reportErrors(context, declaration) { + context.report({ + node: declaration.source, + message: `Parse errors in imported module '${declaration.source.value}': ` + `${this.errors.map(e => `${e.message} (${e.lineNumber}:${e.column})`).join(', ')}` + }); + } +} + +exports.default = ExportMap; /** + * parse docs from the first node that has leading comments + */ + +function captureDoc(source, docStyleParsers) { + const metadata = {}; + + // 'some' short-circuits on first 'true' + + for (var _len = arguments.length, nodes = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + nodes[_key - 2] = arguments[_key]; + } + + nodes.some(n => { + try { + + let leadingComments; + + // n.leadingComments is legacy `attachComments` behavior + if ('leadingComments' in n) { + leadingComments = n.leadingComments; + } else if (n.range) { + leadingComments = source.getCommentsBefore(n); + } + + if (!leadingComments || leadingComments.length === 0) return false; + + for (let name in docStyleParsers) { + const doc = docStyleParsers[name](leadingComments); + if (doc) { + metadata.doc = doc; + } + } + + return true; + } catch (err) { + return false; + } + }); + + return metadata; +} + +const availableDocStyleParsers = { + jsdoc: captureJsDoc, + tomdoc: captureTomDoc + + /** + * parse JSDoc from leading comments + * @param {...[type]} comments [description] + * @return {{doc: object}} + */ +};function captureJsDoc(comments) { + let doc; + + // capture XSDoc + comments.forEach(comment => { + // skip non-block comments + if (comment.type !== 'Block') return; + try { + doc = _doctrine2.default.parse(comment.value, { unwrap: true }); + } catch (err) { + /* don't care, for now? maybe add to `errors?` */ + } + }); + + return doc; +} + +/** + * parse TomDoc section from comments + */ +function captureTomDoc(comments) { + // collect lines up to first paragraph break + const lines = []; + for (let i = 0; i < comments.length; i++) { + const comment = comments[i]; + if (comment.value.match(/^\s*$/)) break; + lines.push(comment.value.trim()); + } + + // return doctrine-like object + const statusMatch = lines.join(' ').match(/^(Public|Internal|Deprecated):\s*(.+)/); + if (statusMatch) { + return { + description: statusMatch[2], + tags: [{ + title: statusMatch[1].toLowerCase(), + description: statusMatch[2] + }] + }; + } +} + +ExportMap.get = function (source, context) { + const path = (0, _resolve2.default)(source, context); + if (path == null) return null; + + return ExportMap.for(childContext(path, context)); +}; + +ExportMap.for = function (context) { + const path = context.path; + + + const cacheKey = (0, _hash.hashObject)(context).digest('hex'); + let exportMap = exportCache.get(cacheKey); + + // return cached ignore + if (exportMap === null) return null; + + const stats = _fs2.default.statSync(path); + if (exportMap != null) { + // date equality check + if (exportMap.mtime - stats.mtime === 0) { + return exportMap; + } + // future: check content equality? + } + + // check valid extensions first + if (!(0, _ignore.hasValidExtension)(path, context)) { + exportCache.set(cacheKey, null); + return null; + } + + // check for and cache ignore + if ((0, _ignore2.default)(path, context)) { + log('ignored path due to ignore settings:', path); + exportCache.set(cacheKey, null); + return null; + } + + const content = _fs2.default.readFileSync(path, { encoding: 'utf8' }); + + // check for and cache unambiguous modules + if (!unambiguous.test(content)) { + log('ignored path due to unambiguous regex:', path); + exportCache.set(cacheKey, null); + return null; + } + + log('cache miss', cacheKey, 'for path', path); + exportMap = ExportMap.parse(path, content, context); + + // ambiguous modules return null + if (exportMap == null) return null; + + exportMap.mtime = stats.mtime; + + exportCache.set(cacheKey, exportMap); + return exportMap; +}; + +ExportMap.parse = function (path, content, context) { + var m = new ExportMap(path); + + try { + var ast = (0, _parse2.default)(path, content, context); + } catch (err) { + log('parse error:', path, err); + m.errors.push(err); + return m; // can't continue + } + + if (!unambiguous.isModule(ast)) return null; + + const docstyle = context.settings && context.settings['import/docstyle'] || ['jsdoc']; + const docStyleParsers = {}; + docstyle.forEach(style => { + docStyleParsers[style] = availableDocStyleParsers[style]; + }); + + // attempt to collect module doc + if (ast.comments) { + ast.comments.some(c => { + if (c.type !== 'Block') return false; + try { + const doc = _doctrine2.default.parse(c.value, { unwrap: true }); + if (doc.tags.some(t => t.title === 'module')) { + m.doc = doc; + return true; + } + } catch (err) {/* ignore */} + return false; + }); + } + + const namespaces = new Map(); + + function remotePath(value) { + return _resolve2.default.relative(value, path, context.settings); + } + + function resolveImport(value) { + const rp = remotePath(value); + if (rp == null) return null; + return ExportMap.for(childContext(rp, context)); + } + + function getNamespace(identifier) { + if (!namespaces.has(identifier.name)) return; + + return function () { + return resolveImport(namespaces.get(identifier.name)); + }; + } + + function addNamespace(object, identifier) { + const nsfn = getNamespace(identifier); + if (nsfn) { + Object.defineProperty(object, 'namespace', { get: nsfn }); + } + + return object; + } + + function captureDependency(declaration) { + if (declaration.source == null) return null; + if (declaration.importKind === 'type') return null; // skip Flow type imports + const importedSpecifiers = new Set(); + const supportedTypes = new Set(['ImportDefaultSpecifier', 'ImportNamespaceSpecifier']); + let hasImportedType = false; + if (declaration.specifiers) { + declaration.specifiers.forEach(specifier => { + const isType = specifier.importKind === 'type'; + hasImportedType = hasImportedType || isType; + + if (supportedTypes.has(specifier.type) && !isType) { + importedSpecifiers.add(specifier.type); + } + if (specifier.type === 'ImportSpecifier' && !isType) { + importedSpecifiers.add(specifier.imported.name); + } + }); + } + + // only Flow types were imported + if (hasImportedType && importedSpecifiers.size === 0) return null; + + const p = remotePath(declaration.source.value); + if (p == null) return null; + const existing = m.imports.get(p); + if (existing != null) return existing.getter; + + const getter = thunkFor(p, context); + m.imports.set(p, { + getter, + source: { // capturing actual node reference holds full AST in memory! + value: declaration.source.value, + loc: declaration.source.loc + }, + importedSpecifiers + }); + return getter; + } + + const source = makeSourceCode(content, ast); + + ast.body.forEach(function (n) { + + if (n.type === 'ExportDefaultDeclaration') { + const exportMeta = captureDoc(source, docStyleParsers, n); + if (n.declaration.type === 'Identifier') { + addNamespace(exportMeta, n.declaration); + } + m.namespace.set('default', exportMeta); + return; + } + + if (n.type === 'ExportAllDeclaration') { + const getter = captureDependency(n); + if (getter) m.dependencies.add(getter); + return; + } + + // capture namespaces in case of later export + if (n.type === 'ImportDeclaration') { + captureDependency(n); + let ns; + if (n.specifiers.some(s => s.type === 'ImportNamespaceSpecifier' && (ns = s))) { + namespaces.set(ns.local.name, n.source.value); + } + return; + } + + if (n.type === 'ExportNamedDeclaration') { + // capture declaration + if (n.declaration != null) { + switch (n.declaration.type) { + case 'FunctionDeclaration': + case 'ClassDeclaration': + case 'TypeAlias': // flowtype with babel-eslint parser + case 'InterfaceDeclaration': + case 'DeclareFunction': + case 'TSDeclareFunction': + case 'TSEnumDeclaration': + case 'TSTypeAliasDeclaration': + case 'TSInterfaceDeclaration': + case 'TSAbstractClassDeclaration': + case 'TSModuleDeclaration': + m.namespace.set(n.declaration.id.name, captureDoc(source, docStyleParsers, n)); + break; + case 'VariableDeclaration': + n.declaration.declarations.forEach(d => recursivePatternCapture(d.id, id => m.namespace.set(id.name, captureDoc(source, docStyleParsers, d, n)))); + break; + } + } + + const nsource = n.source && n.source.value; + n.specifiers.forEach(s => { + const exportMeta = {}; + let local; + + switch (s.type) { + case 'ExportDefaultSpecifier': + if (!n.source) return; + local = 'default'; + break; + case 'ExportNamespaceSpecifier': + m.namespace.set(s.exported.name, Object.defineProperty(exportMeta, 'namespace', { + get() { + return resolveImport(nsource); + } + })); + return; + case 'ExportSpecifier': + if (!n.source) { + m.namespace.set(s.exported.name, addNamespace(exportMeta, s.local)); + return; + } + // else falls through + default: + local = s.local.name; + break; + } + + // todo: JSDoc + m.reexports.set(s.exported.name, { local, getImport: () => resolveImport(nsource) }); + }); + } + + // This doesn't declare anything, but changes what's being exported. + if (n.type === 'TSExportAssignment') { + const moduleDecls = ast.body.filter(bodyNode => bodyNode.type === 'TSModuleDeclaration' && bodyNode.id.name === n.expression.name); + moduleDecls.forEach(moduleDecl => { + if (moduleDecl && moduleDecl.body && moduleDecl.body.body) { + moduleDecl.body.body.forEach(moduleBlockNode => { + // Export-assignment exports all members in the namespace, explicitly exported or not. + const exportedDecl = moduleBlockNode.type === 'ExportNamedDeclaration' ? moduleBlockNode.declaration : moduleBlockNode; + + if (exportedDecl.type === 'VariableDeclaration') { + exportedDecl.declarations.forEach(decl => recursivePatternCapture(decl.id, id => m.namespace.set(id.name, captureDoc(source, docStyleParsers, decl, exportedDecl, moduleBlockNode)))); + } else { + m.namespace.set(exportedDecl.id.name, captureDoc(source, docStyleParsers, moduleBlockNode)); + } + }); + } + }); + } + }); + + return m; +}; + +/** + * The creation of this closure is isolated from other scopes + * to avoid over-retention of unrelated variables, which has + * caused memory leaks. See #1266. + */ +function thunkFor(p, context) { + return () => ExportMap.for(childContext(p, context)); +} + +/** + * Traverse a pattern/identifier node, calling 'callback' + * for each leaf identifier. + * @param {node} pattern + * @param {Function} callback + * @return {void} + */ +function recursivePatternCapture(pattern, callback) { + switch (pattern.type) { + case 'Identifier': + // base case + callback(pattern); + break; + + case 'ObjectPattern': + pattern.properties.forEach(p => { + recursivePatternCapture(p.value, callback); + }); + break; + + case 'ArrayPattern': + pattern.elements.forEach(element => { + if (element == null) return; + recursivePatternCapture(element, callback); + }); + break; + + case 'AssignmentPattern': + callback(pattern.left); + break; + } +} + +/** + * don't hold full context object in memory, just grab what we need. + */ +function childContext(path, context) { + const settings = context.settings, + parserOptions = context.parserOptions, + parserPath = context.parserPath; + + return { + settings, + parserOptions, + parserPath, + path + }; +} + +/** + * sometimes legacy support isn't _that_ hard... right? + */ +function makeSourceCode(text, ast) { + if (_eslint.SourceCode.length > 1) { + // ESLint 3 + return new _eslint.SourceCode(text, ast); + } else { + // ESLint 4, 5 + return new _eslint.SourceCode({ text, ast }); + } +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FeHBvcnRNYXAuanMiXSwibmFtZXMiOlsicmVjdXJzaXZlUGF0dGVybkNhcHR1cmUiLCJ1bmFtYmlndW91cyIsImxvZyIsImV4cG9ydENhY2hlIiwiTWFwIiwiRXhwb3J0TWFwIiwiY29uc3RydWN0b3IiLCJwYXRoIiwibmFtZXNwYWNlIiwicmVleHBvcnRzIiwiZGVwZW5kZW5jaWVzIiwiU2V0IiwiaW1wb3J0cyIsImVycm9ycyIsImhhc0RlZmF1bHQiLCJnZXQiLCJzaXplIiwiZm9yRWFjaCIsImRlcCIsImQiLCJoYXMiLCJuYW1lIiwiaW5uZXJNYXAiLCJoYXNEZWVwIiwiZm91bmQiLCJpbXBvcnRlZCIsImdldEltcG9ydCIsImxvY2FsIiwiZGVlcCIsInVuc2hpZnQiLCJpbm5lclZhbHVlIiwidW5kZWZpbmVkIiwiY2FsbGJhY2siLCJ0aGlzQXJnIiwidiIsIm4iLCJjYWxsIiwicmVleHBvcnRlZCIsInJlcG9ydEVycm9ycyIsImNvbnRleHQiLCJkZWNsYXJhdGlvbiIsInJlcG9ydCIsIm5vZGUiLCJzb3VyY2UiLCJtZXNzYWdlIiwidmFsdWUiLCJtYXAiLCJlIiwibGluZU51bWJlciIsImNvbHVtbiIsImpvaW4iLCJjYXB0dXJlRG9jIiwiZG9jU3R5bGVQYXJzZXJzIiwibWV0YWRhdGEiLCJub2RlcyIsInNvbWUiLCJsZWFkaW5nQ29tbWVudHMiLCJyYW5nZSIsImdldENvbW1lbnRzQmVmb3JlIiwibGVuZ3RoIiwiZG9jIiwiZXJyIiwiYXZhaWxhYmxlRG9jU3R5bGVQYXJzZXJzIiwianNkb2MiLCJjYXB0dXJlSnNEb2MiLCJ0b21kb2MiLCJjYXB0dXJlVG9tRG9jIiwiY29tbWVudHMiLCJjb21tZW50IiwidHlwZSIsImRvY3RyaW5lIiwicGFyc2UiLCJ1bndyYXAiLCJsaW5lcyIsImkiLCJtYXRjaCIsInB1c2giLCJ0cmltIiwic3RhdHVzTWF0Y2giLCJkZXNjcmlwdGlvbiIsInRhZ3MiLCJ0aXRsZSIsInRvTG93ZXJDYXNlIiwiZm9yIiwiY2hpbGRDb250ZXh0IiwiY2FjaGVLZXkiLCJkaWdlc3QiLCJleHBvcnRNYXAiLCJzdGF0cyIsImZzIiwic3RhdFN5bmMiLCJtdGltZSIsInNldCIsImNvbnRlbnQiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInRlc3QiLCJtIiwiYXN0IiwiaXNNb2R1bGUiLCJkb2NzdHlsZSIsInNldHRpbmdzIiwic3R5bGUiLCJjIiwidCIsIm5hbWVzcGFjZXMiLCJyZW1vdGVQYXRoIiwicmVzb2x2ZSIsInJlbGF0aXZlIiwicmVzb2x2ZUltcG9ydCIsInJwIiwiZ2V0TmFtZXNwYWNlIiwiaWRlbnRpZmllciIsImFkZE5hbWVzcGFjZSIsIm9iamVjdCIsIm5zZm4iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNhcHR1cmVEZXBlbmRlbmN5IiwiaW1wb3J0S2luZCIsImltcG9ydGVkU3BlY2lmaWVycyIsInN1cHBvcnRlZFR5cGVzIiwiaGFzSW1wb3J0ZWRUeXBlIiwic3BlY2lmaWVycyIsInNwZWNpZmllciIsImlzVHlwZSIsImFkZCIsInAiLCJleGlzdGluZyIsImdldHRlciIsInRodW5rRm9yIiwibG9jIiwibWFrZVNvdXJjZUNvZGUiLCJib2R5IiwiZXhwb3J0TWV0YSIsIm5zIiwicyIsImlkIiwiZGVjbGFyYXRpb25zIiwibnNvdXJjZSIsImV4cG9ydGVkIiwibW9kdWxlRGVjbHMiLCJmaWx0ZXIiLCJib2R5Tm9kZSIsImV4cHJlc3Npb24iLCJtb2R1bGVEZWNsIiwibW9kdWxlQmxvY2tOb2RlIiwiZXhwb3J0ZWREZWNsIiwiZGVjbCIsInBhdHRlcm4iLCJwcm9wZXJ0aWVzIiwiZWxlbWVudHMiLCJlbGVtZW50IiwibGVmdCIsInBhcnNlck9wdGlvbnMiLCJwYXJzZXJQYXRoIiwidGV4dCIsIlNvdXJjZUNvZGUiXSwibWFwcGluZ3MiOiI7Ozs7O1FBcWtCZ0JBLHVCLEdBQUFBLHVCOztBQXJrQmhCOzs7O0FBRUE7Ozs7QUFFQTs7OztBQUVBOztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUVB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O0FBQ0VBLGNBQVFDLFVBQVIsQ0FBbUJySSxPQUFuQixDQUEyQjhHLEtBQUs7QUFDOUIvSCxnQ0FBd0IrSCxFQUFFbEYsS0FBMUIsRUFBaUNiLFFBQWpDO0FBQ0QsT0FGRDtBQUdBOztBQUVGLFNBQUssY0FBTDtBQUNFcUgsY0FBUUUsUUFBUixDQUFpQnRJLE9BQWpCLENBQTBCdUksT0FBRCxJQUFhO0FBQ3BDLFlBQUlBLFdBQVcsSUFBZixFQUFxQjtBQUNyQnhKLGdDQUF3QndKLE9BQXhCLEVBQWlDeEgsUUFBakM7QUFDRCxPQUhEO0FBSUE7O0FBRUYsU0FBSyxtQkFBTDtBQUNFQSxlQUFTcUgsUUFBUUksSUFBakI7QUFDQTtBQXBCSjtBQXNCRDs7QUFFRDs7O0FBR0EsU0FBU3JFLFlBQVQsQ0FBc0I3RSxJQUF0QixFQUE0QmdDLE9BQTVCLEVBQXFDO0FBQUEsUUFDM0I4RCxRQUQyQixHQUNhOUQsT0FEYixDQUMzQjhELFFBRDJCO0FBQUEsUUFDakJxRCxhQURpQixHQUNhbkgsT0FEYixDQUNqQm1ILGFBRGlCO0FBQUEsUUFDRkMsVUFERSxHQUNhcEgsT0FEYixDQUNGb0gsVUFERTs7QUFFbkMsU0FBTztBQUNMdEQsWUFESztBQUVMcUQsaUJBRks7QUFHTEMsY0FISztBQUlMcEo7QUFKSyxHQUFQO0FBTUQ7O0FBR0Q7OztBQUdBLFNBQVM2SCxjQUFULENBQXdCd0IsSUFBeEIsRUFBOEIxRCxHQUE5QixFQUFtQztBQUNqQyxNQUFJMkQsbUJBQVdsRyxNQUFYLEdBQW9CLENBQXhCLEVBQTJCO0FBQ3pCO0FBQ0EsV0FBTyxJQUFJa0csa0JBQUosQ0FBZUQsSUFBZixFQUFxQjFELEdBQXJCLENBQVA7QUFDRCxHQUhELE1BR087QUFDTDtBQUNBLFdBQU8sSUFBSTJELGtCQUFKLENBQWUsRUFBRUQsSUFBRixFQUFRMUQsR0FBUixFQUFmLENBQVA7QUFDRDtBQUNGIiwiZmlsZSI6IkV4cG9ydE1hcC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcydcblxuaW1wb3J0IGRvY3RyaW5lIGZyb20gJ2RvY3RyaW5lJ1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnXG5cbmltcG9ydCB7IFNvdXJjZUNvZGUgfSBmcm9tICdlc2xpbnQnXG5cbmltcG9ydCBwYXJzZSBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3BhcnNlJ1xuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuaW1wb3J0IGlzSWdub3JlZCwgeyBoYXNWYWxpZEV4dGVuc2lvbiB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvaWdub3JlJ1xuXG5pbXBvcnQgeyBoYXNoT2JqZWN0IH0gZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9oYXNoJ1xuaW1wb3J0ICogYXMgdW5hbWJpZ3VvdXMgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy91bmFtYmlndW91cydcblxuY29uc3QgbG9nID0gZGVidWcoJ2VzbGludC1wbHVnaW4taW1wb3J0OkV4cG9ydE1hcCcpXG5cbmNvbnN0IGV4cG9ydENhY2hlID0gbmV3IE1hcCgpXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEV4cG9ydE1hcCB7XG4gIGNvbnN0cnVjdG9yKHBhdGgpIHtcbiAgICB0aGlzLnBhdGggPSBwYXRoXG4gICAgdGhpcy5uYW1lc3BhY2UgPSBuZXcgTWFwKClcbiAgICAvLyB0b2RvOiByZXN0cnVjdHVyZSB0byBrZXkgb24gcGF0aCwgdmFsdWUgaXMgcmVzb2x2ZXIgKyBtYXAgb2YgbmFtZXNcbiAgICB0aGlzLnJlZXhwb3J0cyA9IG5ldyBNYXAoKVxuICAgIC8qKlxuICAgICAqIHN0YXItZXhwb3J0c1xuICAgICAqIEB0eXBlIHtTZXR9IG9mICgpID0+IEV4cG9ydE1hcFxuICAgICAqL1xuICAgIHRoaXMuZGVwZW5kZW5jaWVzID0gbmV3IFNldCgpXG4gICAgLyoqXG4gICAgICogZGVwZW5kZW5jaWVzIG9mIHRoaXMgbW9kdWxlIHRoYXQgYXJlIG5vdCBleHBsaWNpdGx5IHJlLWV4cG9ydGVkXG4gICAgICogQHR5cGUge01hcH0gZnJvbSBwYXRoID0gKCkgPT4gRXhwb3J0TWFwXG4gICAgICovXG4gICAgdGhpcy5pbXBvcnRzID0gbmV3IE1hcCgpXG4gICAgdGhpcy5lcnJvcnMgPSBbXVxuICB9XG5cbiAgZ2V0IGhhc0RlZmF1bHQoKSB7IHJldHVybiB0aGlzLmdldCgnZGVmYXVsdCcpICE9IG51bGwgfSAvLyBzdHJvbmdlciB0aGFuIHRoaXMuaGFzXG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgbGV0IHNpemUgPSB0aGlzLm5hbWVzcGFjZS5zaXplICsgdGhpcy5yZWV4cG9ydHMuc2l6ZVxuICAgIHRoaXMuZGVwZW5kZW5jaWVzLmZvckVhY2goZGVwID0+IHtcbiAgICAgIGNvbnN0IGQgPSBkZXAoKVxuICAgICAgLy8gQ0pTIC8gaWdub3JlZCBkZXBlbmRlbmNpZXMgd29uJ3QgZXhpc3QgKCM3MTcpXG4gICAgICBpZiAoZCA9PSBudWxsKSByZXR1cm5cbiAgICAgIHNpemUgKz0gZC5zaXplXG4gICAgfSlcbiAgICByZXR1cm4gc2l6ZVxuICB9XG5cbiAgLyoqXG4gICAqIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGNoZWNrIGV4cGxpY2l0bHkgcmUtZXhwb3J0ZWQgbmFtZXMgZm9yIGV4aXN0ZW5jZVxuICAgKiBpbiB0aGUgYmFzZSBuYW1lc3BhY2UsIGJ1dCBpdCB3aWxsIGV4cGFuZCBhbGwgYGV4cG9ydCAqIGZyb20gJy4uLidgIGV4cG9ydHNcbiAgICogaWYgbm90IGZvdW5kIGluIHRoZSBleHBsaWNpdCBuYW1lc3BhY2UuXG4gICAqIEBwYXJhbSAge3N0cmluZ30gIG5hbWVcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gdHJ1ZSBpZiBgbmFtZWAgaXMgZXhwb3J0ZWQgYnkgdGhpcyBtb2R1bGUuXG4gICAqL1xuICBoYXMobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB0cnVlXG4gICAgaWYgKHRoaXMucmVleHBvcnRzLmhhcyhuYW1lKSkgcmV0dXJuIHRydWVcblxuICAgIC8vIGRlZmF1bHQgZXhwb3J0cyBtdXN0IGJlIGV4cGxpY2l0bHkgcmUtZXhwb3J0ZWQgKCMzMjgpXG4gICAgaWYgKG5hbWUgIT09ICdkZWZhdWx0Jykge1xuICAgICAgZm9yIChsZXQgZGVwIG9mIHRoaXMuZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIGxldCBpbm5lck1hcCA9IGRlcCgpXG5cbiAgICAgICAgLy8gdG9kbzogcmVwb3J0IGFzIHVucmVzb2x2ZWQ/XG4gICAgICAgIGlmICghaW5uZXJNYXApIGNvbnRpbnVlXG5cbiAgICAgICAgaWYgKGlubmVyTWFwLmhhcyhuYW1lKSkgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8qKlxuICAgKiBlbnN1cmUgdGhhdCBpbXBvcnRlZCBuYW1lIGZ1bGx5IHJlc29sdmVzLlxuICAgKiBAcGFyYW0gIHtbdHlwZV19ICBuYW1lIFtkZXNjcmlwdGlvbl1cbiAgICogQHJldHVybiB7Qm9vbGVhbn0gICAgICBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBoYXNEZWVwKG5hbWUpIHtcbiAgICBpZiAodGhpcy5uYW1lc3BhY2UuaGFzKG5hbWUpKSByZXR1cm4geyBmb3VuZDogdHJ1ZSwgcGF0aDogW3RoaXNdIH1cblxuICAgIGlmICh0aGlzLnJlZXhwb3J0cy5oYXMobmFtZSkpIHtcbiAgICAgIGNvbnN0IHJlZXhwb3J0cyA9IHRoaXMucmVleHBvcnRzLmdldChuYW1lKVxuICAgICAgICAgICwgaW1wb3J0ZWQgPSByZWV4cG9ydHMuZ2V0SW1wb3J0KClcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4geyBmb3VuZDogdHJ1ZSwgcGF0aDogW3RoaXNdIH1cblxuICAgICAgLy8gc2FmZWd1YXJkIGFnYWluc3QgY3ljbGVzLCBvbmx5IGlmIG5hbWUgbWF0Y2hlc1xuICAgICAgaWYgKGltcG9ydGVkLnBhdGggPT09IHRoaXMucGF0aCAmJiByZWV4cG9ydHMubG9jYWwgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHsgZm91bmQ6IGZhbHNlLCBwYXRoOiBbdGhpc10gfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWVwID0gaW1wb3J0ZWQuaGFzRGVlcChyZWV4cG9ydHMubG9jYWwpXG4gICAgICBkZWVwLnBhdGgudW5zaGlmdCh0aGlzKVxuXG4gICAgICByZXR1cm4gZGVlcFxuICAgIH1cblxuXG4gICAgLy8gZGVmYXVsdCBleHBvcnRzIG11c3QgYmUgZXhwbGljaXRseSByZS1leHBvcnRlZCAoIzMyOClcbiAgICBpZiAobmFtZSAhPT0gJ2RlZmF1bHQnKSB7XG4gICAgICBmb3IgKGxldCBkZXAgb2YgdGhpcy5kZXBlbmRlbmNpZXMpIHtcbiAgICAgICAgbGV0IGlubmVyTWFwID0gZGVwKClcbiAgICAgICAgaWYgKGlubmVyTWFwID09IG51bGwpIHJldHVybiB7IGZvdW5kOiB0cnVlLCBwYXRoOiBbdGhpc10gfVxuICAgICAgICAvLyB0b2RvOiByZXBvcnQgYXMgdW5yZXNvbHZlZD9cbiAgICAgICAgaWYgKCFpbm5lck1hcCkgY29udGludWVcblxuICAgICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXNcbiAgICAgICAgaWYgKGlubmVyTWFwLnBhdGggPT09IHRoaXMucGF0aCkgY29udGludWVcblxuICAgICAgICBsZXQgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmhhc0RlZXAobmFtZSlcbiAgICAgICAgaWYgKGlubmVyVmFsdWUuZm91bmQpIHtcbiAgICAgICAgICBpbm5lclZhbHVlLnBhdGgudW5zaGlmdCh0aGlzKVxuICAgICAgICAgIHJldHVybiBpbm5lclZhbHVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBmb3VuZDogZmFsc2UsIHBhdGg6IFt0aGlzXSB9XG4gIH1cblxuICBnZXQobmFtZSkge1xuICAgIGlmICh0aGlzLm5hbWVzcGFjZS5oYXMobmFtZSkpIHJldHVybiB0aGlzLm5hbWVzcGFjZS5nZXQobmFtZSlcblxuICAgIGlmICh0aGlzLnJlZXhwb3J0cy5oYXMobmFtZSkpIHtcbiAgICAgIGNvbnN0IHJlZXhwb3J0cyA9IHRoaXMucmVleHBvcnRzLmdldChuYW1lKVxuICAgICAgICAgICwgaW1wb3J0ZWQgPSByZWV4cG9ydHMuZ2V0SW1wb3J0KClcblxuICAgICAgLy8gaWYgaW1wb3J0IGlzIGlnbm9yZWQsIHJldHVybiBleHBsaWNpdCAnbnVsbCdcbiAgICAgIGlmIChpbXBvcnRlZCA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXMsIG9ubHkgaWYgbmFtZSBtYXRjaGVzXG4gICAgICBpZiAoaW1wb3J0ZWQucGF0aCA9PT0gdGhpcy5wYXRoICYmIHJlZXhwb3J0cy5sb2NhbCA9PT0gbmFtZSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgICByZXR1cm4gaW1wb3J0ZWQuZ2V0KHJlZXhwb3J0cy5sb2NhbClcbiAgICB9XG5cbiAgICAvLyBkZWZhdWx0IGV4cG9ydHMgbXVzdCBiZSBleHBsaWNpdGx5IHJlLWV4cG9ydGVkICgjMzI4KVxuICAgIGlmIChuYW1lICE9PSAnZGVmYXVsdCcpIHtcbiAgICAgIGZvciAobGV0IGRlcCBvZiB0aGlzLmRlcGVuZGVuY2llcykge1xuICAgICAgICBsZXQgaW5uZXJNYXAgPSBkZXAoKVxuICAgICAgICAvLyB0b2RvOiByZXBvcnQgYXMgdW5yZXNvbHZlZD9cbiAgICAgICAgaWYgKCFpbm5lck1hcCkgY29udGludWVcblxuICAgICAgICAvLyBzYWZlZ3VhcmQgYWdhaW5zdCBjeWNsZXNcbiAgICAgICAgaWYgKGlubmVyTWFwLnBhdGggPT09IHRoaXMucGF0aCkgY29udGludWVcblxuICAgICAgICBsZXQgaW5uZXJWYWx1ZSA9IGlubmVyTWFwLmdldChuYW1lKVxuICAgICAgICBpZiAoaW5uZXJWYWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaW5uZXJWYWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGZvckVhY2goY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICB0aGlzLm5hbWVzcGFjZS5mb3JFYWNoKCh2LCBuKSA9PlxuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2LCBuLCB0aGlzKSlcblxuICAgIHRoaXMucmVleHBvcnRzLmZvckVhY2goKHJlZXhwb3J0cywgbmFtZSkgPT4ge1xuICAgICAgY29uc3QgcmVleHBvcnRlZCA9IHJlZXhwb3J0cy5nZXRJbXBvcnQoKVxuICAgICAgLy8gY2FuJ3QgbG9vayB1cCBtZXRhIGZvciBpZ25vcmVkIHJlLWV4cG9ydHMgKCMzNDgpXG4gICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHJlZXhwb3J0ZWQgJiYgcmVleHBvcnRlZC5nZXQocmVleHBvcnRzLmxvY2FsKSwgbmFtZSwgdGhpcylcbiAgICB9KVxuXG4gICAgdGhpcy5kZXBlbmRlbmNpZXMuZm9yRWFjaChkZXAgPT4ge1xuICAgICAgY29uc3QgZCA9IGRlcCgpXG4gICAgICAvLyBDSlMgLyBpZ25vcmVkIGRlcGVuZGVuY2llcyB3b24ndCBleGlzdCAoIzcxNylcbiAgICAgIGlmIChkID09IG51bGwpIHJldHVyblxuXG4gICAgICBkLmZvckVhY2goKHYsIG4pID0+XG4gICAgICAgIG4gIT09ICdkZWZhdWx0JyAmJiBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHYsIG4sIHRoaXMpKVxuICAgIH0pXG4gIH1cblxuICAvLyB0b2RvOiBrZXlzLCB2YWx1ZXMsIGVudHJpZXM/XG5cbiAgcmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgbm9kZTogZGVjbGFyYXRpb24uc291cmNlLFxuICAgICAgbWVzc2FnZTogYFBhcnNlIGVycm9ycyBpbiBpbXBvcnRlZCBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfSc6IGAgK1xuICAgICAgICAgICAgICAgICAgYCR7dGhpcy5lcnJvcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5tYXAoZSA9PiBgJHtlLm1lc3NhZ2V9ICgke2UubGluZU51bWJlcn06JHtlLmNvbHVtbn0pYClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpfWAsXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIHBhcnNlIGRvY3MgZnJvbSB0aGUgZmlyc3Qgbm9kZSB0aGF0IGhhcyBsZWFkaW5nIGNvbW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGNhcHR1cmVEb2Moc291cmNlLCBkb2NTdHlsZVBhcnNlcnMsIC4uLm5vZGVzKSB7XG4gIGNvbnN0IG1ldGFkYXRhID0ge31cblxuICAvLyAnc29tZScgc2hvcnQtY2lyY3VpdHMgb24gZmlyc3QgJ3RydWUnXG4gIG5vZGVzLnNvbWUobiA9PiB7XG4gICAgdHJ5IHtcblxuICAgICAgbGV0IGxlYWRpbmdDb21tZW50c1xuXG4gICAgICAvLyBuLmxlYWRpbmdDb21tZW50cyBpcyBsZWdhY3kgYGF0dGFjaENvbW1lbnRzYCBiZWhhdmlvclxuICAgICAgaWYgKCdsZWFkaW5nQ29tbWVudHMnIGluIG4pIHtcbiAgICAgICAgbGVhZGluZ0NvbW1lbnRzID0gbi5sZWFkaW5nQ29tbWVudHNcbiAgICAgIH0gZWxzZSBpZiAobi5yYW5nZSkge1xuICAgICAgICBsZWFkaW5nQ29tbWVudHMgPSBzb3VyY2UuZ2V0Q29tbWVudHNCZWZvcmUobilcbiAgICAgIH1cblxuICAgICAgaWYgKCFsZWFkaW5nQ29tbWVudHMgfHwgbGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGZvciAobGV0IG5hbWUgaW4gZG9jU3R5bGVQYXJzZXJzKSB7XG4gICAgICAgIGNvbnN0IGRvYyA9IGRvY1N0eWxlUGFyc2Vyc1tuYW1lXShsZWFkaW5nQ29tbWVudHMpXG4gICAgICAgIGlmIChkb2MpIHtcbiAgICAgICAgICBtZXRhZGF0YS5kb2MgPSBkb2NcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBtZXRhZGF0YVxufVxuXG5jb25zdCBhdmFpbGFibGVEb2NTdHlsZVBhcnNlcnMgPSB7XG4gIGpzZG9jOiBjYXB0dXJlSnNEb2MsXG4gIHRvbWRvYzogY2FwdHVyZVRvbURvYyxcbn1cblxuLyoqXG4gKiBwYXJzZSBKU0RvYyBmcm9tIGxlYWRpbmcgY29tbWVudHNcbiAqIEBwYXJhbSAgey4uLlt0eXBlXX0gY29tbWVudHMgW2Rlc2NyaXB0aW9uXVxuICogQHJldHVybiB7e2RvYzogb2JqZWN0fX1cbiAqL1xuZnVuY3Rpb24gY2FwdHVyZUpzRG9jKGNvbW1lbnRzKSB7XG4gIGxldCBkb2NcblxuICAvLyBjYXB0dXJlIFhTRG9jXG4gIGNvbW1lbnRzLmZvckVhY2goY29tbWVudCA9PiB7XG4gICAgLy8gc2tpcCBub24tYmxvY2sgY29tbWVudHNcbiAgICBpZiAoY29tbWVudC50eXBlICE9PSAnQmxvY2snKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgZG9jID0gZG9jdHJpbmUucGFyc2UoY29tbWVudC52YWx1ZSwgeyB1bndyYXA6IHRydWUgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8qIGRvbid0IGNhcmUsIGZvciBub3c/IG1heWJlIGFkZCB0byBgZXJyb3JzP2AgKi9cbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGRvY1xufVxuXG4vKipcbiAgKiBwYXJzZSBUb21Eb2Mgc2VjdGlvbiBmcm9tIGNvbW1lbnRzXG4gICovXG5mdW5jdGlvbiBjYXB0dXJlVG9tRG9jKGNvbW1lbnRzKSB7XG4gIC8vIGNvbGxlY3QgbGluZXMgdXAgdG8gZmlyc3QgcGFyYWdyYXBoIGJyZWFrXG4gIGNvbnN0IGxpbmVzID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb21tZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGNvbW1lbnQgPSBjb21tZW50c1tpXVxuICAgIGlmIChjb21tZW50LnZhbHVlLm1hdGNoKC9eXFxzKiQvKSkgYnJlYWtcbiAgICBsaW5lcy5wdXNoKGNvbW1lbnQudmFsdWUudHJpbSgpKVxuICB9XG5cbiAgLy8gcmV0dXJuIGRvY3RyaW5lLWxpa2Ugb2JqZWN0XG4gIGNvbnN0IHN0YXR1c01hdGNoID0gbGluZXMuam9pbignICcpLm1hdGNoKC9eKFB1YmxpY3xJbnRlcm5hbHxEZXByZWNhdGVkKTpcXHMqKC4rKS8pXG4gIGlmIChzdGF0dXNNYXRjaCkge1xuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbjogc3RhdHVzTWF0Y2hbMl0sXG4gICAgICB0YWdzOiBbe1xuICAgICAgICB0aXRsZTogc3RhdHVzTWF0Y2hbMV0udG9Mb3dlckNhc2UoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IHN0YXR1c01hdGNoWzJdLFxuICAgICAgfV0sXG4gICAgfVxuICB9XG59XG5cbkV4cG9ydE1hcC5nZXQgPSBmdW5jdGlvbiAoc291cmNlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHBhdGggPSByZXNvbHZlKHNvdXJjZSwgY29udGV4dClcbiAgaWYgKHBhdGggPT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICByZXR1cm4gRXhwb3J0TWFwLmZvcihjaGlsZENvbnRleHQocGF0aCwgY29udGV4dCkpXG59XG5cbkV4cG9ydE1hcC5mb3IgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICBjb25zdCB7IHBhdGggfSA9IGNvbnRleHRcblxuICBjb25zdCBjYWNoZUtleSA9IGhhc2hPYmplY3QoY29udGV4dCkuZGlnZXN0KCdoZXgnKVxuICBsZXQgZXhwb3J0TWFwID0gZXhwb3J0Q2FjaGUuZ2V0KGNhY2hlS2V5KVxuXG4gIC8vIHJldHVybiBjYWNoZWQgaWdub3JlXG4gIGlmIChleHBvcnRNYXAgPT09IG51bGwpIHJldHVybiBudWxsXG5cbiAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhwYXRoKVxuICBpZiAoZXhwb3J0TWFwICE9IG51bGwpIHtcbiAgICAvLyBkYXRlIGVxdWFsaXR5IGNoZWNrXG4gICAgaWYgKGV4cG9ydE1hcC5tdGltZSAtIHN0YXRzLm10aW1lID09PSAwKSB7XG4gICAgICByZXR1cm4gZXhwb3J0TWFwXG4gICAgfVxuICAgIC8vIGZ1dHVyZTogY2hlY2sgY29udGVudCBlcXVhbGl0eT9cbiAgfVxuXG4gIC8vIGNoZWNrIHZhbGlkIGV4dGVuc2lvbnMgZmlyc3RcbiAgaWYgKCFoYXNWYWxpZEV4dGVuc2lvbihwYXRoLCBjb250ZXh0KSkge1xuICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbClcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLy8gY2hlY2sgZm9yIGFuZCBjYWNoZSBpZ25vcmVcbiAgaWYgKGlzSWdub3JlZChwYXRoLCBjb250ZXh0KSkge1xuICAgIGxvZygnaWdub3JlZCBwYXRoIGR1ZSB0byBpZ25vcmUgc2V0dGluZ3M6JywgcGF0aClcbiAgICBleHBvcnRDYWNoZS5zZXQoY2FjaGVLZXksIG51bGwpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMocGF0aCwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pXG5cbiAgLy8gY2hlY2sgZm9yIGFuZCBjYWNoZSB1bmFtYmlndW91cyBtb2R1bGVzXG4gIGlmICghdW5hbWJpZ3VvdXMudGVzdChjb250ZW50KSkge1xuICAgIGxvZygnaWdub3JlZCBwYXRoIGR1ZSB0byB1bmFtYmlndW91cyByZWdleDonLCBwYXRoKVxuICAgIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgbnVsbClcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgbG9nKCdjYWNoZSBtaXNzJywgY2FjaGVLZXksICdmb3IgcGF0aCcsIHBhdGgpXG4gIGV4cG9ydE1hcCA9IEV4cG9ydE1hcC5wYXJzZShwYXRoLCBjb250ZW50LCBjb250ZXh0KVxuXG4gIC8vIGFtYmlndW91cyBtb2R1bGVzIHJldHVybiBudWxsXG4gIGlmIChleHBvcnRNYXAgPT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICBleHBvcnRNYXAubXRpbWUgPSBzdGF0cy5tdGltZVxuXG4gIGV4cG9ydENhY2hlLnNldChjYWNoZUtleSwgZXhwb3J0TWFwKVxuICByZXR1cm4gZXhwb3J0TWFwXG59XG5cblxuRXhwb3J0TWFwLnBhcnNlID0gZnVuY3Rpb24gKHBhdGgsIGNvbnRlbnQsIGNvbnRleHQpIHtcbiAgdmFyIG0gPSBuZXcgRXhwb3J0TWFwKHBhdGgpXG5cbiAgdHJ5IHtcbiAgICB2YXIgYXN0ID0gcGFyc2UocGF0aCwgY29udGVudCwgY29udGV4dClcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nKCdwYXJzZSBlcnJvcjonLCBwYXRoLCBlcnIpXG4gICAgbS5lcnJvcnMucHVzaChlcnIpXG4gICAgcmV0dXJuIG0gLy8gY2FuJ3QgY29udGludWVcbiAgfVxuXG4gIGlmICghdW5hbWJpZ3VvdXMuaXNNb2R1bGUoYXN0KSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBkb2NzdHlsZSA9IChjb250ZXh0LnNldHRpbmdzICYmIGNvbnRleHQuc2V0dGluZ3NbJ2ltcG9ydC9kb2NzdHlsZSddKSB8fCBbJ2pzZG9jJ11cbiAgY29uc3QgZG9jU3R5bGVQYXJzZXJzID0ge31cbiAgZG9jc3R5bGUuZm9yRWFjaChzdHlsZSA9PiB7XG4gICAgZG9jU3R5bGVQYXJzZXJzW3N0eWxlXSA9IGF2YWlsYWJsZURvY1N0eWxlUGFyc2Vyc1tzdHlsZV1cbiAgfSlcblxuICAvLyBhdHRlbXB0IHRvIGNvbGxlY3QgbW9kdWxlIGRvY1xuICBpZiAoYXN0LmNvbW1lbnRzKSB7XG4gICAgYXN0LmNvbW1lbnRzLnNvbWUoYyA9PiB7XG4gICAgICBpZiAoYy50eXBlICE9PSAnQmxvY2snKSByZXR1cm4gZmFsc2VcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRvYyA9IGRvY3RyaW5lLnBhcnNlKGMudmFsdWUsIHsgdW53cmFwOiB0cnVlIH0pXG4gICAgICAgIGlmIChkb2MudGFncy5zb21lKHQgPT4gdC50aXRsZSA9PT0gJ21vZHVsZScpKSB7XG4gICAgICAgICAgbS5kb2MgPSBkb2NcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHsgLyogaWdub3JlICovIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBuYW1lc3BhY2VzID0gbmV3IE1hcCgpXG5cbiAgZnVuY3Rpb24gcmVtb3RlUGF0aCh2YWx1ZSkge1xuICAgIHJldHVybiByZXNvbHZlLnJlbGF0aXZlKHZhbHVlLCBwYXRoLCBjb250ZXh0LnNldHRpbmdzKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydCh2YWx1ZSkge1xuICAgIGNvbnN0IHJwID0gcmVtb3RlUGF0aCh2YWx1ZSlcbiAgICBpZiAocnAgPT0gbnVsbCkgcmV0dXJuIG51bGxcbiAgICByZXR1cm4gRXhwb3J0TWFwLmZvcihjaGlsZENvbnRleHQocnAsIGNvbnRleHQpKVxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TmFtZXNwYWNlKGlkZW50aWZpZXIpIHtcbiAgICBpZiAoIW5hbWVzcGFjZXMuaGFzKGlkZW50aWZpZXIubmFtZSkpIHJldHVyblxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiByZXNvbHZlSW1wb3J0KG5hbWVzcGFjZXMuZ2V0KGlkZW50aWZpZXIubmFtZSkpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gYWRkTmFtZXNwYWNlKG9iamVjdCwgaWRlbnRpZmllcikge1xuICAgIGNvbnN0IG5zZm4gPSBnZXROYW1lc3BhY2UoaWRlbnRpZmllcilcbiAgICBpZiAobnNmbikge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iamVjdCwgJ25hbWVzcGFjZScsIHsgZ2V0OiBuc2ZuIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIG9iamVjdFxuICB9XG5cbiAgZnVuY3Rpb24gY2FwdHVyZURlcGVuZGVuY3koZGVjbGFyYXRpb24pIHtcbiAgICBpZiAoZGVjbGFyYXRpb24uc291cmNlID09IG51bGwpIHJldHVybiBudWxsXG4gICAgaWYgKGRlY2xhcmF0aW9uLmltcG9ydEtpbmQgPT09ICd0eXBlJykgcmV0dXJuIG51bGwgLy8gc2tpcCBGbG93IHR5cGUgaW1wb3J0c1xuICAgIGNvbnN0IGltcG9ydGVkU3BlY2lmaWVycyA9IG5ldyBTZXQoKVxuICAgIGNvbnN0IHN1cHBvcnRlZFR5cGVzID0gbmV3IFNldChbJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInLCAnSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyJ10pXG4gICAgbGV0IGhhc0ltcG9ydGVkVHlwZSA9IGZhbHNlXG4gICAgaWYgKGRlY2xhcmF0aW9uLnNwZWNpZmllcnMpIHtcbiAgICAgIGRlY2xhcmF0aW9uLnNwZWNpZmllcnMuZm9yRWFjaChzcGVjaWZpZXIgPT4ge1xuICAgICAgICBjb25zdCBpc1R5cGUgPSBzcGVjaWZpZXIuaW1wb3J0S2luZCA9PT0gJ3R5cGUnXG4gICAgICAgIGhhc0ltcG9ydGVkVHlwZSA9IGhhc0ltcG9ydGVkVHlwZSB8fCBpc1R5cGVcblxuICAgICAgICBpZiAoc3VwcG9ydGVkVHlwZXMuaGFzKHNwZWNpZmllci50eXBlKSAmJiAhaXNUeXBlKSB7XG4gICAgICAgICAgaW1wb3J0ZWRTcGVjaWZpZXJzLmFkZChzcGVjaWZpZXIudHlwZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3BlY2lmaWVyLnR5cGUgPT09ICdJbXBvcnRTcGVjaWZpZXInICYmICFpc1R5cGUpIHtcbiAgICAgICAgICBpbXBvcnRlZFNwZWNpZmllcnMuYWRkKHNwZWNpZmllci5pbXBvcnRlZC5uYW1lKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIC8vIG9ubHkgRmxvdyB0eXBlcyB3ZXJlIGltcG9ydGVkXG4gICAgaWYgKGhhc0ltcG9ydGVkVHlwZSAmJiBpbXBvcnRlZFNwZWNpZmllcnMuc2l6ZSA9PT0gMCkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHAgPSByZW1vdGVQYXRoKGRlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZSlcbiAgICBpZiAocCA9PSBudWxsKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGV4aXN0aW5nID0gbS5pbXBvcnRzLmdldChwKVxuICAgIGlmIChleGlzdGluZyAhPSBudWxsKSByZXR1cm4gZXhpc3RpbmcuZ2V0dGVyXG5cbiAgICBjb25zdCBnZXR0ZXIgPSB0aHVua0ZvcihwLCBjb250ZXh0KVxuICAgIG0uaW1wb3J0cy5zZXQocCwge1xuICAgICAgZ2V0dGVyLFxuICAgICAgc291cmNlOiB7ICAvLyBjYXB0dXJpbmcgYWN0dWFsIG5vZGUgcmVmZXJlbmNlIGhvbGRzIGZ1bGwgQVNUIGluIG1lbW9yeSFcbiAgICAgICAgdmFsdWU6IGRlY2xhcmF0aW9uLnNvdXJjZS52YWx1ZSxcbiAgICAgICAgbG9jOiBkZWNsYXJhdGlvbi5zb3VyY2UubG9jLFxuICAgICAgfSxcbiAgICAgIGltcG9ydGVkU3BlY2lmaWVycyxcbiAgICB9KVxuICAgIHJldHVybiBnZXR0ZXJcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZSA9IG1ha2VTb3VyY2VDb2RlKGNvbnRlbnQsIGFzdClcblxuICBhc3QuYm9keS5mb3JFYWNoKGZ1bmN0aW9uIChuKSB7XG5cbiAgICBpZiAobi50eXBlID09PSAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJykge1xuICAgICAgY29uc3QgZXhwb3J0TWV0YSA9IGNhcHR1cmVEb2Moc291cmNlLCBkb2NTdHlsZVBhcnNlcnMsIG4pXG4gICAgICBpZiAobi5kZWNsYXJhdGlvbi50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgYWRkTmFtZXNwYWNlKGV4cG9ydE1ldGEsIG4uZGVjbGFyYXRpb24pXG4gICAgICB9XG4gICAgICBtLm5hbWVzcGFjZS5zZXQoJ2RlZmF1bHQnLCBleHBvcnRNZXRhKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG4udHlwZSA9PT0gJ0V4cG9ydEFsbERlY2xhcmF0aW9uJykge1xuICAgICAgY29uc3QgZ2V0dGVyID0gY2FwdHVyZURlcGVuZGVuY3kobilcbiAgICAgIGlmIChnZXR0ZXIpIG0uZGVwZW5kZW5jaWVzLmFkZChnZXR0ZXIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBjYXB0dXJlIG5hbWVzcGFjZXMgaW4gY2FzZSBvZiBsYXRlciBleHBvcnRcbiAgICBpZiAobi50eXBlID09PSAnSW1wb3J0RGVjbGFyYXRpb24nKSB7XG4gICAgICBjYXB0dXJlRGVwZW5kZW5jeShuKVxuICAgICAgbGV0IG5zXG4gICAgICBpZiAobi5zcGVjaWZpZXJzLnNvbWUocyA9PiBzLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInICYmIChucyA9IHMpKSkge1xuICAgICAgICBuYW1lc3BhY2VzLnNldChucy5sb2NhbC5uYW1lLCBuLnNvdXJjZS52YWx1ZSlcbiAgICAgIH1cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChuLnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJykge1xuICAgICAgLy8gY2FwdHVyZSBkZWNsYXJhdGlvblxuICAgICAgaWYgKG4uZGVjbGFyYXRpb24gIT0gbnVsbCkge1xuICAgICAgICBzd2l0Y2ggKG4uZGVjbGFyYXRpb24udHlwZSkge1xuICAgICAgICAgIGNhc2UgJ0Z1bmN0aW9uRGVjbGFyYXRpb24nOlxuICAgICAgICAgIGNhc2UgJ0NsYXNzRGVjbGFyYXRpb24nOlxuICAgICAgICAgIGNhc2UgJ1R5cGVBbGlhcyc6IC8vIGZsb3d0eXBlIHdpdGggYmFiZWwtZXNsaW50IHBhcnNlclxuICAgICAgICAgIGNhc2UgJ0ludGVyZmFjZURlY2xhcmF0aW9uJzpcbiAgICAgICAgICBjYXNlICdEZWNsYXJlRnVuY3Rpb24nOlxuICAgICAgICAgIGNhc2UgJ1RTRGVjbGFyZUZ1bmN0aW9uJzpcbiAgICAgICAgICBjYXNlICdUU0VudW1EZWNsYXJhdGlvbic6XG4gICAgICAgICAgY2FzZSAnVFNUeXBlQWxpYXNEZWNsYXJhdGlvbic6XG4gICAgICAgICAgY2FzZSAnVFNJbnRlcmZhY2VEZWNsYXJhdGlvbic6XG4gICAgICAgICAgY2FzZSAnVFNBYnN0cmFjdENsYXNzRGVjbGFyYXRpb24nOlxuICAgICAgICAgIGNhc2UgJ1RTTW9kdWxlRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgbS5uYW1lc3BhY2Uuc2V0KG4uZGVjbGFyYXRpb24uaWQubmFtZSwgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgbikpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ1ZhcmlhYmxlRGVjbGFyYXRpb24nOlxuICAgICAgICAgICAgbi5kZWNsYXJhdGlvbi5kZWNsYXJhdGlvbnMuZm9yRWFjaCgoZCkgPT5cbiAgICAgICAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUoZC5pZCxcbiAgICAgICAgICAgICAgICBpZCA9PiBtLm5hbWVzcGFjZS5zZXQoaWQubmFtZSwgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgZCwgbikpKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbnNvdXJjZSA9IG4uc291cmNlICYmIG4uc291cmNlLnZhbHVlXG4gICAgICBuLnNwZWNpZmllcnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgICBjb25zdCBleHBvcnRNZXRhID0ge31cbiAgICAgICAgbGV0IGxvY2FsXG5cbiAgICAgICAgc3dpdGNoIChzLnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdFeHBvcnREZWZhdWx0U3BlY2lmaWVyJzpcbiAgICAgICAgICAgIGlmICghbi5zb3VyY2UpIHJldHVyblxuICAgICAgICAgICAgbG9jYWwgPSAnZGVmYXVsdCdcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgY2FzZSAnRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyJzpcbiAgICAgICAgICAgIG0ubmFtZXNwYWNlLnNldChzLmV4cG9ydGVkLm5hbWUsIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRNZXRhLCAnbmFtZXNwYWNlJywge1xuICAgICAgICAgICAgICBnZXQoKSB7IHJldHVybiByZXNvbHZlSW1wb3J0KG5zb3VyY2UpIH0sXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIGNhc2UgJ0V4cG9ydFNwZWNpZmllcic6XG4gICAgICAgICAgICBpZiAoIW4uc291cmNlKSB7XG4gICAgICAgICAgICAgIG0ubmFtZXNwYWNlLnNldChzLmV4cG9ydGVkLm5hbWUsIGFkZE5hbWVzcGFjZShleHBvcnRNZXRhLCBzLmxvY2FsKSlcbiAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlbHNlIGZhbGxzIHRocm91Z2hcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgbG9jYWwgPSBzLmxvY2FsLm5hbWVcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICAvLyB0b2RvOiBKU0RvY1xuICAgICAgICBtLnJlZXhwb3J0cy5zZXQocy5leHBvcnRlZC5uYW1lLCB7IGxvY2FsLCBnZXRJbXBvcnQ6ICgpID0+IHJlc29sdmVJbXBvcnQobnNvdXJjZSkgfSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVGhpcyBkb2Vzbid0IGRlY2xhcmUgYW55dGhpbmcsIGJ1dCBjaGFuZ2VzIHdoYXQncyBiZWluZyBleHBvcnRlZC5cbiAgICBpZiAobi50eXBlID09PSAnVFNFeHBvcnRBc3NpZ25tZW50Jykge1xuICAgICAgY29uc3QgbW9kdWxlRGVjbHMgPSBhc3QuYm9keS5maWx0ZXIoKGJvZHlOb2RlKSA9PlxuICAgICAgICBib2R5Tm9kZS50eXBlID09PSAnVFNNb2R1bGVEZWNsYXJhdGlvbicgJiYgYm9keU5vZGUuaWQubmFtZSA9PT0gbi5leHByZXNzaW9uLm5hbWVcbiAgICAgIClcbiAgICAgIG1vZHVsZURlY2xzLmZvckVhY2goKG1vZHVsZURlY2wpID0+IHtcbiAgICAgICAgaWYgKG1vZHVsZURlY2wgJiYgbW9kdWxlRGVjbC5ib2R5ICYmIG1vZHVsZURlY2wuYm9keS5ib2R5KSB7XG4gICAgICAgICAgbW9kdWxlRGVjbC5ib2R5LmJvZHkuZm9yRWFjaCgobW9kdWxlQmxvY2tOb2RlKSA9PiB7XG4gICAgICAgICAgICAvLyBFeHBvcnQtYXNzaWdubWVudCBleHBvcnRzIGFsbCBtZW1iZXJzIGluIHRoZSBuYW1lc3BhY2UsIGV4cGxpY2l0bHkgZXhwb3J0ZWQgb3Igbm90LlxuICAgICAgICAgICAgY29uc3QgZXhwb3J0ZWREZWNsID0gbW9kdWxlQmxvY2tOb2RlLnR5cGUgPT09ICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJyA/XG4gICAgICAgICAgICAgIG1vZHVsZUJsb2NrTm9kZS5kZWNsYXJhdGlvbiA6XG4gICAgICAgICAgICAgIG1vZHVsZUJsb2NrTm9kZVxuXG4gICAgICAgICAgICBpZiAoZXhwb3J0ZWREZWNsLnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0aW9uJykge1xuICAgICAgICAgICAgICBleHBvcnRlZERlY2wuZGVjbGFyYXRpb25zLmZvckVhY2goKGRlY2wpID0+XG4gICAgICAgICAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUoZGVjbC5pZCwoaWQpID0+IG0ubmFtZXNwYWNlLnNldChcbiAgICAgICAgICAgICAgICAgIGlkLm5hbWUsXG4gICAgICAgICAgICAgICAgICBjYXB0dXJlRG9jKHNvdXJjZSwgZG9jU3R5bGVQYXJzZXJzLCBkZWNsLCBleHBvcnRlZERlY2wsIG1vZHVsZUJsb2NrTm9kZSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtLm5hbWVzcGFjZS5zZXQoXG4gICAgICAgICAgICAgICAgZXhwb3J0ZWREZWNsLmlkLm5hbWUsXG4gICAgICAgICAgICAgICAgY2FwdHVyZURvYyhzb3VyY2UsIGRvY1N0eWxlUGFyc2VycywgbW9kdWxlQmxvY2tOb2RlKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gbVxufVxuXG4vKipcbiAqIFRoZSBjcmVhdGlvbiBvZiB0aGlzIGNsb3N1cmUgaXMgaXNvbGF0ZWQgZnJvbSBvdGhlciBzY29wZXNcbiAqIHRvIGF2b2lkIG92ZXItcmV0ZW50aW9uIG9mIHVucmVsYXRlZCB2YXJpYWJsZXMsIHdoaWNoIGhhc1xuICogY2F1c2VkIG1lbW9yeSBsZWFrcy4gU2VlICMxMjY2LlxuICovXG5mdW5jdGlvbiB0aHVua0ZvcihwLCBjb250ZXh0KSB7XG4gIHJldHVybiAoKSA9PiBFeHBvcnRNYXAuZm9yKGNoaWxkQ29udGV4dChwLCBjb250ZXh0KSlcbn1cblxuXG4vKipcbiAqIFRyYXZlcnNlIGEgcGF0dGVybi9pZGVudGlmaWVyIG5vZGUsIGNhbGxpbmcgJ2NhbGxiYWNrJ1xuICogZm9yIGVhY2ggbGVhZiBpZGVudGlmaWVyLlxuICogQHBhcmFtICB7bm9kZX0gICBwYXR0ZXJuXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZShwYXR0ZXJuLCBjYWxsYmFjaykge1xuICBzd2l0Y2ggKHBhdHRlcm4udHlwZSkge1xuICAgIGNhc2UgJ0lkZW50aWZpZXInOiAvLyBiYXNlIGNhc2VcbiAgICAgIGNhbGxiYWNrKHBhdHRlcm4pXG4gICAgICBicmVha1xuXG4gICAgY2FzZSAnT2JqZWN0UGF0dGVybic6XG4gICAgICBwYXR0ZXJuLnByb3BlcnRpZXMuZm9yRWFjaChwID0+IHtcbiAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUocC52YWx1ZSwgY2FsbGJhY2spXG4gICAgICB9KVxuICAgICAgYnJlYWtcblxuICAgIGNhc2UgJ0FycmF5UGF0dGVybic6XG4gICAgICBwYXR0ZXJuLmVsZW1lbnRzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIHJlY3Vyc2l2ZVBhdHRlcm5DYXB0dXJlKGVsZW1lbnQsIGNhbGxiYWNrKVxuICAgICAgfSlcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlICdBc3NpZ25tZW50UGF0dGVybic6XG4gICAgICBjYWxsYmFjayhwYXR0ZXJuLmxlZnQpXG4gICAgICBicmVha1xuICB9XG59XG5cbi8qKlxuICogZG9uJ3QgaG9sZCBmdWxsIGNvbnRleHQgb2JqZWN0IGluIG1lbW9yeSwganVzdCBncmFiIHdoYXQgd2UgbmVlZC5cbiAqL1xuZnVuY3Rpb24gY2hpbGRDb250ZXh0KHBhdGgsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBzZXR0aW5ncywgcGFyc2VyT3B0aW9ucywgcGFyc2VyUGF0aCB9ID0gY29udGV4dFxuICByZXR1cm4ge1xuICAgIHNldHRpbmdzLFxuICAgIHBhcnNlck9wdGlvbnMsXG4gICAgcGFyc2VyUGF0aCxcbiAgICBwYXRoLFxuICB9XG59XG5cblxuLyoqXG4gKiBzb21ldGltZXMgbGVnYWN5IHN1cHBvcnQgaXNuJ3QgX3RoYXRfIGhhcmQuLi4gcmlnaHQ/XG4gKi9cbmZ1bmN0aW9uIG1ha2VTb3VyY2VDb2RlKHRleHQsIGFzdCkge1xuICBpZiAoU291cmNlQ29kZS5sZW5ndGggPiAxKSB7XG4gICAgLy8gRVNMaW50IDNcbiAgICByZXR1cm4gbmV3IFNvdXJjZUNvZGUodGV4dCwgYXN0KVxuICB9IGVsc2Uge1xuICAgIC8vIEVTTGludCA0LCA1XG4gICAgcmV0dXJuIG5ldyBTb3VyY2VDb2RlKHsgdGV4dCwgYXN0IH0pXG4gIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/importType.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/importType.js new file mode 100644 index 0000000..8f94a09 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/importType.js @@ -0,0 +1,151 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +exports.isAbsolute = isAbsolute; +exports.isBuiltIn = isBuiltIn; +exports.isExternalModule = isExternalModule; +exports.isExternalModuleMain = isExternalModuleMain; +exports.isScoped = isScoped; +exports.isScopedMain = isScopedMain; +exports.isScopedModule = isScopedModule; +exports.default = resolveImportType; + +var _core = require('resolve/lib/core'); + +var _core2 = _interopRequireDefault(_core); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function baseModule(name) { + if (isScoped(name)) { + var _name$split = name.split('/'), + _name$split2 = _slicedToArray(_name$split, 2); + + const scope = _name$split2[0], + pkg = _name$split2[1]; + + return `${scope}/${pkg}`; + } + + var _name$split3 = name.split('/'), + _name$split4 = _slicedToArray(_name$split3, 1); + + const pkg = _name$split4[0]; + + return pkg; +} + +function isAbsolute(name) { + return name.indexOf('/') === 0; +} + +// path is defined only when a resolver resolves to a non-standard path +function isBuiltIn(name, settings, path) { + if (path || !name) return false; + const base = baseModule(name); + const extras = settings && settings['import/core-modules'] || []; + return _core2.default[base] || extras.indexOf(base) > -1; +} + +function isExternalPath(path, name, settings) { + const folders = settings && settings['import/external-module-folders'] || ['node_modules']; + return !path || folders.some(folder => isSubpath(folder, path)); +} + +function isSubpath(subpath, path) { + const normPath = path.replace(/\\/g, '/'); + const normSubpath = subpath.replace(/\\/g, '/').replace(/\/$/, ''); + if (normSubpath.length === 0) { + return false; + } + const left = normPath.indexOf(normSubpath); + const right = left + normSubpath.length; + return left !== -1 && (left === 0 || normSubpath[0] !== '/' && normPath[left - 1] === '/') && (right >= normPath.length || normPath[right] === '/'); +} + +const externalModuleRegExp = /^\w/; +function isExternalModule(name, settings, path) { + return externalModuleRegExp.test(name) && isExternalPath(path, name, settings); +} + +const externalModuleMainRegExp = /^[\w]((?!\/).)*$/; +function isExternalModuleMain(name, settings, path) { + return externalModuleMainRegExp.test(name) && isExternalPath(path, name, settings); +} + +const scopedRegExp = /^@[^/]*\/?[^/]+/; +function isScoped(name) { + return name && scopedRegExp.test(name); +} + +const scopedMainRegExp = /^@[^/]+\/?[^/]+$/; +function isScopedMain(name) { + return name && scopedMainRegExp.test(name); +} + +function isInternalModule(name, settings, path) { + const internalScope = settings && settings['import/internal-regex']; + const matchesScopedOrExternalRegExp = scopedRegExp.test(name) || externalModuleRegExp.test(name); + return matchesScopedOrExternalRegExp && (internalScope && new RegExp(internalScope).test(name) || !isExternalPath(path, name, settings)); +} + +function isRelativeToParent(name) { + return (/^\.\.$|^\.\.[\\/]/.test(name) + ); +} + +const indexFiles = ['.', './', './index', './index.js']; +function isIndex(name) { + return indexFiles.indexOf(name) !== -1; +} + +function isRelativeToSibling(name) { + return (/^\.[\\/]/.test(name) + ); +} + +function typeTest(name, settings, path) { + if (isAbsolute(name, settings, path)) { + return 'absolute'; + } + if (isBuiltIn(name, settings, path)) { + return 'builtin'; + } + if (isInternalModule(name, settings, path)) { + return 'internal'; + } + if (isExternalModule(name, settings, path)) { + return 'external'; + } + if (isScoped(name, settings, path)) { + return 'external'; + } + if (isRelativeToParent(name, settings, path)) { + return 'parent'; + } + if (isIndex(name, settings, path)) { + return 'index'; + } + if (isRelativeToSibling(name, settings, path)) { + return 'sibling'; + } + return 'unknown'; +} + +function isScopedModule(name) { + return name.indexOf('@') === 0; +} + +function resolveImportType(name, context) { + return typeTest(name, context.settings, (0, _resolve2.default)(name, context)); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2ltcG9ydFR5cGUuanMiXSwibmFtZXMiOlsiaXNBYnNvbHV0ZSIsImlzQnVpbHRJbiIsImlzRXh0ZXJuYWxNb2R1bGUiLCJpc0V4dGVybmFsTW9kdWxlTWFpbiIsImlzU2NvcGVkIiwiaXNTY29wZWRNYWluIiwiaXNTY29wZWRNb2R1bGUiLCJyZXNvbHZlSW1wb3J0VHlwZSIsImJhc2VNb2R1bGUiLCJuYW1lIiwic3BsaXQiLCJzY29wZSIsInBrZyIsImluZGV4T2YiLCJzZXR0aW5ncyIsInBhdGgiLCJiYXNlIiwiZXh0cmFzIiwiY29yZU1vZHVsZXMiLCJpc0V4dGVybmFsUGF0aCIsImZvbGRlcnMiLCJzb21lIiwiZm9sZGVyIiwiaXNTdWJwYXRoIiwic3VicGF0aCIsIm5vcm1QYXRoIiwicmVwbGFjZSIsIm5vcm1TdWJwYXRoIiwibGVuZ3RoIiwibGVmdCIsInJpZ2h0IiwiZXh0ZXJuYWxNb2R1bGVSZWdFeHAiLCJ0ZXN0IiwiZXh0ZXJuYWxNb2R1bGVNYWluUmVnRXhwIiwic2NvcGVkUmVnRXhwIiwic2NvcGVkTWFpblJlZ0V4cCIsImlzSW50ZXJuYWxNb2R1bGUiLCJpbnRlcm5hbFNjb3BlIiwibWF0Y2hlc1Njb3BlZE9yRXh0ZXJuYWxSZWdFeHAiLCJSZWdFeHAiLCJpc1JlbGF0aXZlVG9QYXJlbnQiLCJpbmRleEZpbGVzIiwiaXNJbmRleCIsImlzUmVsYXRpdmVUb1NpYmxpbmciLCJ0eXBlVGVzdCIsImNvbnRleHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O1FBYWdCQSxVLEdBQUFBLFU7UUFLQUMsUyxHQUFBQSxTO1FBMEJBQyxnQixHQUFBQSxnQjtRQUtBQyxvQixHQUFBQSxvQjtRQUtBQyxRLEdBQUFBLFE7UUFLQUMsWSxHQUFBQSxZO1FBbUNBQyxjLEdBQUFBLGM7a0JBSVFDLGlCOztBQWxHeEI7Ozs7QUFFQTs7Ozs7O0FBRUEsU0FBU0MsVUFBVCxDQUFvQkMsSUFBcEIsRUFBMEI7QUFDeEIsTUFBSUwsU0FBU0ssSUFB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bnRlbnQiOlsiaW1wb3J0IGNvcmVNb2R1bGVzIGZyb20gJ3Jlc29sdmUvbGliL2NvcmUnXG5cbmltcG9ydCByZXNvbHZlIGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvcmVzb2x2ZSdcblxuZnVuY3Rpb24gYmFzZU1vZHVsZShuYW1lKSB7XG4gIGlmIChpc1Njb3BlZChuYW1lKSkge1xuICAgIGNvbnN0IFtzY29wZSwgcGtnXSA9IG5hbWUuc3BsaXQoJy8nKVxuICAgIHJldHVybiBgJHtzY29wZX0vJHtwa2d9YFxuICB9XG4gIGNvbnN0IFtwa2ddID0gbmFtZS5zcGxpdCgnLycpXG4gIHJldHVybiBwa2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWJzb2x1dGUobmFtZSkge1xuICByZXR1cm4gbmFtZS5pbmRleE9mKCcvJykgPT09IDBcbn1cblxuLy8gcGF0aCBpcyBkZWZpbmVkIG9ubHkgd2hlbiBhIHJlc29sdmVyIHJlc29sdmVzIHRvIGEgbm9uLXN0YW5kYXJkIHBhdGhcbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0SW4obmFtZSwgc2V0dGluZ3MsIHBhdGgpIHtcbiAgaWYgKHBhdGggfHwgIW5hbWUpIHJldHVybiBmYWxzZVxuICBjb25zdCBiYXNlID0gYmFzZU1vZHVsZShuYW1lKVxuICBjb25zdCBleHRyYXMgPSAoc2V0dGluZ3MgJiYgc2V0dGluZ3NbJ2ltcG9ydC9jb3JlLW1vZHVsZXMnXSkgfHwgW11cbiAgcmV0dXJuIGNvcmVNb2R1bGVzW2Jhc2VdIHx8IGV4dHJhcy5pbmRleE9mKGJhc2UpID4gLTFcbn1cblxuZnVuY3Rpb24gaXNFeHRlcm5hbFBhdGgocGF0aCwgbmFtZSwgc2V0dGluZ3MpIHtcbiAgY29uc3QgZm9sZGVycyA9IChzZXR0aW5ncyAmJiBzZXR0aW5nc1snaW1wb3J0L2V4dGVybmFsLW1vZHVsZS1mb2xkZXJzJ10pIHx8IFsnbm9kZV9tb2R1bGVzJ11cbiAgcmV0dXJuICFwYXRoIHx8IGZvbGRlcnMuc29tZShmb2xkZXIgPT4gaXNTdWJwYXRoKGZvbGRlciwgcGF0aCkpXG59XG5cbmZ1bmN0aW9uIGlzU3VicGF0aChzdWJwYXRoLCBwYXRoKSB7XG4gIGNvbnN0IG5vcm1QYXRoID0gcGF0aC5yZXBsYWNlKC9cXFxcL2csICcvJylcbiAgY29uc3Qgbm9ybVN1YnBhdGggPSBzdWJwYXRoLnJlcGxhY2UoL1xcXFwvZywgJy8nKS5yZXBsYWNlKC9cXC8kLywgJycpXG4gIGlmIChub3JtU3VicGF0aC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBjb25zdCBsZWZ0ID0gbm9ybVBhdGguaW5kZXhPZihub3JtU3VicGF0aClcbiAgY29uc3QgcmlnaHQgPSBsZWZ0ICsgbm9ybVN1YnBhdGgubGVuZ3RoXG4gIHJldHVybiBsZWZ0ICE9PSAtMSAmJlxuICAgICAgICAobGVmdCA9PT0gMCB8fCBub3JtU3VicGF0aFswXSAhPT0gJy8nICYmIG5vcm1QYXRoW2xlZnQgLSAxXSA9PT0gJy8nKSAmJlxuICAgICAgICAocmlnaHQgPj0gbm9ybVBhdGgubGVuZ3RoIHx8IG5vcm1QYXRoW3JpZ2h0XSA9PT0gJy8nKVxufVxuXG5jb25zdCBleHRlcm5hbE1vZHVsZVJlZ0V4cCA9IC9eXFx3L1xuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxNb2R1bGUobmFtZSwgc2V0dGluZ3MsIHBhdGgpIHtcbiAgcmV0dXJuIGV4dGVybmFsTW9kdWxlUmVnRXhwLnRlc3QobmFtZSkgJiYgaXNFeHRlcm5hbFBhdGgocGF0aCwgbmFtZSwgc2V0dGluZ3MpXG59XG5cbmNvbnN0IGV4dGVybmFsTW9kdWxlTWFpblJlZ0V4cCA9IC9eW1xcd10oKD8hXFwvKS4pKiQvXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbE1vZHVsZU1haW4obmFtZSwgc2V0dGluZ3MsIHBhdGgpIHtcbiAgcmV0dXJuIGV4dGVybmFsTW9kdWxlTWFpblJlZ0V4cC50ZXN0KG5hbWUpICYmIGlzRXh0ZXJuYWxQYXRoKHBhdGgsIG5hbWUsIHNldHRpbmdzKVxufVxuXG5jb25zdCBzY29wZWRSZWdFeHAgPSAvXkBbXi9dKlxcLz9bXi9dKy9cbmV4cG9ydCBmdW5jdGlvbiBpc1Njb3BlZChuYW1lKSB7XG4gIHJldHVybiBuYW1lICYmIHNjb3BlZFJlZ0V4cC50ZXN0KG5hbWUpXG59XG5cbmNvbnN0IHNjb3BlZE1haW5SZWdFeHAgPSAvXkBbXi9dK1xcLz9bXi9dKyQvXG5leHBvcnQgZnVuY3Rpb24gaXNTY29wZWRNYWluKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUgJiYgc2NvcGVkTWFpblJlZ0V4cC50ZXN0KG5hbWUpXG59XG5cbmZ1bmN0aW9uIGlzSW50ZXJuYWxNb2R1bGUobmFtZSwgc2V0dGluZ3MsIHBhdGgpIHtcbiAgY29uc3QgaW50ZXJuYWxTY29wZSA9IChzZXR0aW5ncyAmJiBzZXR0aW5nc1snaW1wb3J0L2ludGVybmFsLXJlZ2V4J10pXG4gIGNvbnN0IG1hdGNoZXNTY29wZWRPckV4dGVybmFsUmVnRXhwID0gc2NvcGVkUmVnRXhwLnRlc3QobmFtZSkgfHwgZXh0ZXJuYWxNb2R1bGVSZWdFeHAudGVzdChuYW1lKVxuICByZXR1cm4gKG1hdGNoZXNTY29wZWRPckV4dGVybmFsUmVnRXhwICYmIChpbnRlcm5hbFNjb3BlICYmIG5ldyBSZWdFeHAoaW50ZXJuYWxTY29wZSkudGVzdChuYW1lKSB8fCAhaXNFeHRlcm5hbFBhdGgocGF0aCwgbmFtZSwgc2V0dGluZ3MpKSlcbn1cblxuZnVuY3Rpb24gaXNSZWxhdGl2ZVRvUGFyZW50KG5hbWUpIHtcbiAgcmV0dXJuL15cXC5cXC4kfF5cXC5cXC5bXFxcXC9dLy50ZXN0KG5hbWUpXG59XG5cbmNvbnN0IGluZGV4RmlsZXMgPSBbJy4nLCAnLi8nLCAnLi9pbmRleCcsICcuL2luZGV4LmpzJ11cbmZ1bmN0aW9uIGlzSW5kZXgobmFtZSkge1xuICByZXR1cm4gaW5kZXhGaWxlcy5pbmRleE9mKG5hbWUpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBpc1JlbGF0aXZlVG9TaWJsaW5nKG5hbWUpIHtcbiAgcmV0dXJuIC9eXFwuW1xcXFwvXS8udGVzdChuYW1lKVxufVxuXG5mdW5jdGlvbiB0eXBlVGVzdChuYW1lLCBzZXR0aW5ncywgcGF0aCkge1xuICBpZiAoaXNBYnNvbHV0ZShuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdhYnNvbHV0ZScgfVxuICBpZiAoaXNCdWlsdEluKG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ2J1aWx0aW4nIH1cbiAgaWYgKGlzSW50ZXJuYWxNb2R1bGUobmFtZSwgc2V0dGluZ3MsIHBhdGgpKSB7IHJldHVybiAnaW50ZXJuYWwnIH1cbiAgaWYgKGlzRXh0ZXJuYWxNb2R1bGUobmFtZSwgc2V0dGluZ3MsIHBhdGgpKSB7IHJldHVybiAnZXh0ZXJuYWwnIH1cbiAgaWYgKGlzU2NvcGVkKG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ2V4dGVybmFsJyB9XG4gIGlmIChpc1JlbGF0aXZlVG9QYXJlbnQobmFtZSwgc2V0dGluZ3MsIHBhdGgpKSB7IHJldHVybiAncGFyZW50JyB9XG4gIGlmIChpc0luZGV4KG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ2luZGV4JyB9XG4gIGlmIChpc1JlbGF0aXZlVG9TaWJsaW5nKG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ3NpYmxpbmcnIH1cbiAgcmV0dXJuICd1bmtub3duJ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTY29wZWRNb2R1bGUobmFtZSkge1xuICByZXR1cm4gbmFtZS5pbmRleE9mKCdAJykgPT09IDBcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzb2x2ZUltcG9ydFR5cGUobmFtZSwgY29udGV4dCkge1xuICByZXR1cm4gdHlwZVRlc3QobmFtZSwgY29udGV4dC5zZXR0aW5ncywgcmVzb2x2ZShuYW1lLCBjb250ZXh0KSlcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/staticRequire.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/staticRequire.js new file mode 100644 index 0000000..496fe7b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/core/staticRequire.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = isStaticRequire; +// todo: merge with module visitor +function isStaticRequire(node) { + return node && node.callee && node.callee.type === 'Identifier' && node.callee.name === 'require' && node.arguments.length === 1 && node.arguments[0].type === 'Literal' && typeof node.arguments[0].value === 'string'; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3N0YXRpY1JlcXVpcmUuanMiXSwibmFtZXMiOlsiaXNTdGF0aWNSZXF1aXJlIiwibm9kZSIsImNhbGxlZSIsInR5cGUiLCJuYW1lIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7O2tCQUN3QkEsZTtBQUR4QjtBQUNlLFNBQVNBLGVBQVQsQ0FBeUJDLElBQXpCLEVBQStCO0FBQzVDLFNBQU9BLFFBQ0xBLEtBQUtDLE1BREEsSUFFTEQsS0FBS0MsTUFBTCxDQUFZQyxJQUFaLEtBQXFCLFlBRmhCLElBR0xGLEtBQUtDLE1BQUwsQ0FBWUUsSUFBWixLQUFxQixTQUhoQixJQUlMSCxLQUFLSSxTQUFMLENBQWVDLE1BQWYsS0FBMEIsQ0FKckIsSUFLTEwsS0FBS0ksU0FBTCxDQUFlLENBQWYsRUFBa0JGLElBQWxCLEtBQTJCLFNBTHRCLElBTUwsT0FBT0YsS0FBS0ksU0FBTCxDQUFlLENBQWYsRUFBa0JFLEtBQXpCLEtBQW1DLFFBTnJDO0FBT0QiLCJmaWxlIjoic3RhdGljUmVxdWlyZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRvZG86IG1lcmdlIHdpdGggbW9kdWxlIHZpc2l0b3JcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU3RhdGljUmVxdWlyZShub2RlKSB7XG4gIHJldHVybiBub2RlICYmXG4gICAgbm9kZS5jYWxsZWUgJiZcbiAgICBub2RlLmNhbGxlZS50eXBlID09PSAnSWRlbnRpZmllcicgJiZcbiAgICBub2RlLmNhbGxlZS5uYW1lID09PSAncmVxdWlyZScgJiZcbiAgICBub2RlLmFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiZcbiAgICBub2RlLmFyZ3VtZW50c1swXS50eXBlID09PSAnTGl0ZXJhbCcgJiZcbiAgICB0eXBlb2Ygbm9kZS5hcmd1bWVudHNbMF0udmFsdWUgPT09ICdzdHJpbmcnXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/docsUrl.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/docsUrl.js new file mode 100644 index 0000000..8a94e8c --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/docsUrl.js @@ -0,0 +1,21 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = docsUrl; + +var _package = require('../package.json'); + +var _package2 = _interopRequireDefault(_package); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const repoUrl = 'https://github.com/benmosher/eslint-plugin-import'; + +function docsUrl(ruleName) { + let commitish = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : `v${_package2.default.version}`; + + return `${repoUrl}/blob/${commitish}/docs/rules/${ruleName}.md`; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kb2NzVXJsLmpzIl0sIm5hbWVzIjpbImRvY3NVcmwiLCJyZXBvVXJsIiwicnVsZU5hbWUiLCJjb21taXRpc2giLCJwa2ciLCJ2ZXJzaW9uIl0sIm1hcHBpbmdzIjoiOzs7OztrQkFJd0JBLE87O0FBSnhCOzs7Ozs7QUFFQSxNQUFNQyxVQUFVLG1EQUFoQjs7QUFFZSxTQUFTRCxPQUFULENBQWlCRSxRQUFqQixFQUEwRDtBQUFBLE1BQS9CQyxTQUErQix1RUFBbEIsSUFBR0Msa0JBQUlDLE9BQVEsRUFBRzs7QUFDdkUsU0FBUSxHQUFFSixPQUFRLFNBQVFFLFNBQVUsZUFBY0QsUUFBUyxLQUEzRDtBQUNEIiwiZmlsZSI6ImRvY3NVcmwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGtnIGZyb20gJy4uL3BhY2thZ2UuanNvbidcblxuY29uc3QgcmVwb1VybCA9ICdodHRwczovL2dpdGh1Yi5jb20vYmVubW9zaGVyL2VzbGludC1wbHVnaW4taW1wb3J0J1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkb2NzVXJsKHJ1bGVOYW1lLCBjb21taXRpc2ggPSBgdiR7cGtnLnZlcnNpb259YCkge1xuICByZXR1cm4gYCR7cmVwb1VybH0vYmxvYi8ke2NvbW1pdGlzaH0vZG9jcy9ydWxlcy8ke3J1bGVOYW1lfS5tZGBcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/importDeclaration.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/importDeclaration.js new file mode 100644 index 0000000..8c64ac3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/importDeclaration.js @@ -0,0 +1,11 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = importDeclaration; +function importDeclaration(context) { + var ancestors = context.getAncestors(); + return ancestors[ancestors.length - 1]; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbXBvcnREZWNsYXJhdGlvbi5qcyJdLCJuYW1lcyI6WyJpbXBvcnREZWNsYXJhdGlvbiIsImNvbnRleHQiLCJhbmNlc3RvcnMiLCJnZXRBbmNlc3RvcnMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O2tCQUF3QkEsaUI7QUFBVCxTQUFTQSxpQkFBVCxDQUEyQkMsT0FBM0IsRUFBb0M7QUFDakQsTUFBSUMsWUFBWUQsUUFBUUUsWUFBUixFQUFoQjtBQUNBLFNBQU9ELFVBQVVBLFVBQVVFLE1BQVYsR0FBbUIsQ0FBN0IsQ0FBUDtBQUNEIiwiZmlsZSI6ImltcG9ydERlY2xhcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW1wb3J0RGVjbGFyYXRpb24oY29udGV4dCkge1xuICB2YXIgYW5jZXN0b3JzID0gY29udGV4dC5nZXRBbmNlc3RvcnMoKVxuICByZXR1cm4gYW5jZXN0b3JzW2FuY2VzdG9ycy5sZW5ndGggLSAxXVxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/index.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/index.js new file mode 100644 index 0000000..4981497 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/index.js @@ -0,0 +1,73 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +const rules = exports.rules = { + 'no-unresolved': require('./rules/no-unresolved'), + 'named': require('./rules/named'), + 'default': require('./rules/default'), + 'namespace': require('./rules/namespace'), + 'no-namespace': require('./rules/no-namespace'), + 'export': require('./rules/export'), + 'no-mutable-exports': require('./rules/no-mutable-exports'), + 'extensions': require('./rules/extensions'), + 'no-restricted-paths': require('./rules/no-restricted-paths'), + 'no-internal-modules': require('./rules/no-internal-modules'), + 'group-exports': require('./rules/group-exports'), + 'no-relative-parent-imports': require('./rules/no-relative-parent-imports'), + + 'no-self-import': require('./rules/no-self-import'), + 'no-cycle': require('./rules/no-cycle'), + 'no-named-default': require('./rules/no-named-default'), + 'no-named-as-default': require('./rules/no-named-as-default'), + 'no-named-as-default-member': require('./rules/no-named-as-default-member'), + 'no-anonymous-default-export': require('./rules/no-anonymous-default-export'), + 'no-unused-modules': require('./rules/no-unused-modules'), + + 'no-commonjs': require('./rules/no-commonjs'), + 'no-amd': require('./rules/no-amd'), + 'no-duplicates': require('./rules/no-duplicates'), + 'first': require('./rules/first'), + 'max-dependencies': require('./rules/max-dependencies'), + 'no-extraneous-dependencies': require('./rules/no-extraneous-dependencies'), + 'no-absolute-path': require('./rules/no-absolute-path'), + 'no-nodejs-modules': require('./rules/no-nodejs-modules'), + 'no-webpack-loader-syntax': require('./rules/no-webpack-loader-syntax'), + 'order': require('./rules/order'), + 'newline-after-import': require('./rules/newline-after-import'), + 'prefer-default-export': require('./rules/prefer-default-export'), + 'no-default-export': require('./rules/no-default-export'), + 'no-named-export': require('./rules/no-named-export'), + 'no-dynamic-require': require('./rules/no-dynamic-require'), + 'unambiguous': require('./rules/unambiguous'), + 'no-unassigned-import': require('./rules/no-unassigned-import'), + 'no-useless-path-segments': require('./rules/no-useless-path-segments'), + 'dynamic-import-chunkname': require('./rules/dynamic-import-chunkname'), + + // export + 'exports-last': require('./rules/exports-last'), + + // metadata-based + 'no-deprecated': require('./rules/no-deprecated'), + + // deprecated aliases to rules + 'imports-first': require('./rules/imports-first') +}; + +const configs = exports.configs = { + 'recommended': require('../config/recommended'), + + 'errors': require('../config/errors'), + 'warnings': require('../config/warnings'), + + // shhhh... work in progress "secret" rules + 'stage-0': require('../config/stage-0'), + + // useful stuff for folks using various environments + 'react': require('../config/react'), + 'react-native': require('../config/react-native'), + 'electron': require('../config/electron'), + 'typescript': require('../config/typescript') +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJydWxlcyIsInJlcXVpcmUiLCJjb25maWdzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFPLE1BQU1BLHdCQUFRO0FBQ25CLG1CQUFpQkMsUUFBUSx1QkFBUixDQURFO0FBRW5CLFdBQVNBLFFBQVEsZUFBUixDQUZVO0FBR25CLGFBQVdBLFFBQVEsaUJBQVIsQ0FIUTtBQUluQixlQUFhQSxRQUFRLG1CQUFSLENBSk07QUFLbkIsa0JBQWdCQSxRQUFRLHNCQUFSLENBTEc7QUFNbkIsWUFBVUEsUUFBUSxnQkFBUixDQU5TO0FBT25CLHdCQUFzQkEsUUFBUSw0QkFBUixDQVBIO0FBUW5CLGdCQUFjQSxRQUFRLG9CQUFSLENBUks7QUFTbkIseUJBQXVCQSxRQUFRLDZCQUFSLENBVEo7QUFVbkIseUJBQXVCQSxRQUFRLDZCQUFSLENBVko7QUFXbkIsbUJBQWlCQSxRQUFRLHVCQUFSLENBWEU7QUFZbkIsZ0NBQThCQSxRQUFRLG9DQUFSLENBWlg7O0FBY25CLG9CQUFrQkEsUUFBUSx3QkFBUixDQWRDO0FBZW5CLGNBQVlBLFFBQVEsa0JBQVIsQ0FmTztBQWdCbkIsc0JBQW9CQSxRQUFRLDBCQUFSLENBaEJEO0FBaUJuQix5QkFBdUJBLFFBQVEsNkJBQVIsQ0FqQko7QUFrQm5CLGdDQUE4QkEsUUFBUSxvQ0FBUixDQWxCWDtBQW1CbkIsaUNBQStCQSxRQUFRLHFDQUFSLENBbkJaO0FBb0JuQix1QkFBcUJBLFFBQVEsMkJBQVIsQ0FwQkY7O0FBc0JuQixpQkFBZUEsUUFBUSxxQkFBUixDQXRCSTtBQXVCbkIsWUFBVUEsUUFBUSxnQkFBUixDQXZCUztBQXdCbkIsbUJBQWlCQSxRQUFRLHVCQUFSLENBeEJFO0FBeUJuQixXQUFTQSxRQUFRLGVBQVIsQ0F6QlU7QUEwQm5CLHNCQUFvQkEsUUFBUSwwQkFBUixDQTFCRDtBQTJCbkIsZ0NBQThCQSxRQUFRLG9DQUFSLENBM0JYO0FBNEJuQixzQkFBb0JBLFFBQVEsMEJBQVIsQ0E1QkQ7QUE2Qm5CLHVCQUFxQkEsUUFBUSwyQkFBUixDQTdCRjtBQThCbkIsOEJBQTRCQSxRQUFRLGtDQUFSLENBOUJUO0FBK0JuQixXQUFTQSxRQUFRLGVBQVIsQ0EvQlU7QUFnQ25CLDBCQUF3QkEsUUFBUSw4QkFBUixDQWhDTDtBQWlDbkIsMkJBQXlCQSxRQUFRLCtCQUFSLENBakNOO0FBa0NuQix1QkFBcUJBLFFBQVEsMkJBQVIsQ0FsQ0Y7QUFtQ25CLHFCQUFtQkEsUUFBUSx5QkFBUixDQW5DQTtBQW9DbkIsd0JBQXNCQSxRQUFRLDRCQUFSLENBcENIO0FBcUNuQixpQkFBZUEsUUFBUSxxQkFBUixDQXJDSTtBQXNDbkIsMEJBQXdCQSxRQUFRLDhCQUFSLENBdENMO0FBdUNuQiw4QkFBNEJBLFFBQVEsa0NBQVIsQ0F2Q1Q7QUF3Q25CLDhCQUE0QkEsUUFBUSxrQ0FBUixDQXhDVDs7QUEwQ25CO0FBQ0Esa0JBQWdCQSxRQUFRLHNCQUFSLENBM0NHOztBQTZDbkI7QUFDQSxtQkFBaUJBLFFBQVEsdUJBQVIsQ0E5Q0U7O0FBZ0RuQjtBQUNBLG1CQUFpQkEsUUFBUSx1QkFBUjtBQWpERSxDQUFkOztBQW9EQSxNQUFNQyw0QkFBVTtBQUNyQixpQkFBZUQsUUFBUSx1QkFBUixDQURNOztBQUdyQixZQUFVQSxRQUFRLGtCQUFSLENBSFc7QUFJckIsY0FBWUEsUUFBUSxvQkFBUixDQUpTOztBQU1yQjtBQUNBLGFBQVdBLFFBQVEsbUJBQVIsQ0FQVTs7QUFTckI7QUFDQSxXQUFTQSxRQUFRLGlCQUFSLENBVlk7QUFXckIsa0JBQWdCQSxRQUFRLHdCQUFSLENBWEs7QUFZckIsY0FBWUEsUUFBUSxvQkFBUixDQVpTO0FBYXJCLGdCQUFjQSxRQUFRLHNCQUFSO0FBYk8sQ0FBaEIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgcnVsZXMgPSB7XG4gICduby11bnJlc29sdmVkJzogcmVxdWlyZSgnLi9ydWxlcy9uby11bnJlc29sdmVkJyksXG4gICduYW1lZCc6IHJlcXVpcmUoJy4vcnVsZXMvbmFtZWQnKSxcbiAgJ2RlZmF1bHQnOiByZXF1aXJlKCcuL3J1bGVzL2RlZmF1bHQnKSxcbiAgJ25hbWVzcGFjZSc6IHJlcXVpcmUoJy4vcnVsZXMvbmFtZXNwYWNlJyksXG4gICduby1uYW1lc3BhY2UnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5hbWVzcGFjZScpLFxuICAnZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9leHBvcnQnKSxcbiAgJ25vLW11dGFibGUtZXhwb3J0cyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbXV0YWJsZS1leHBvcnRzJyksXG4gICdleHRlbnNpb25zJzogcmVxdWlyZSgnLi9ydWxlcy9leHRlbnNpb25zJyksXG4gICduby1yZXN0cmljdGVkLXBhdGhzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1yZXN0cmljdGVkLXBhdGhzJyksXG4gICduby1pbnRlcm5hbC1tb2R1bGVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1pbnRlcm5hbC1tb2R1bGVzJyksXG4gICdncm91cC1leHBvcnRzJzogcmVxdWlyZSgnLi9ydWxlcy9ncm91cC1leHBvcnRzJyksXG4gICduby1yZWxhdGl2ZS1wYXJlbnQtaW1wb3J0cyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHMnKSxcblxuICAnbm8tc2VsZi1pbXBvcnQnOiByZXF1aXJlKCcuL3J1bGVzL25vLXNlbGYtaW1wb3J0JyksXG4gICduby1jeWNsZSc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tY3ljbGUnKSxcbiAgJ25vLW5hbWVkLWRlZmF1bHQnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5hbWVkLWRlZmF1bHQnKSxcbiAgJ25vLW5hbWVkLWFzLWRlZmF1bHQnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5hbWVkLWFzLWRlZmF1bHQnKSxcbiAgJ25vLW5hbWVkLWFzLWRlZmF1bHQtbWVtYmVyJzogcmVxdWlyZSgnLi9ydWxlcy9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlcicpLFxuICAnbm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0JzogcmVxdWlyZSgnLi9ydWxlcy9uby1hbm9ueW1vdXMtZGVmYXVsdC1leHBvcnQnKSxcbiAgJ25vLXVudXNlZC1tb2R1bGVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby11bnVzZWQtbW9kdWxlcycpLFxuXG4gICduby1jb21tb25qcyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tY29tbW9uanMnKSxcbiAgJ25vLWFtZCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tYW1kJyksXG4gICduby1kdXBsaWNhdGVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1kdXBsaWNhdGVzJyksXG4gICdmaXJzdCc6IHJlcXVpcmUoJy4vcnVsZXMvZmlyc3QnKSxcbiAgJ21heC1kZXBlbmRlbmNpZXMnOiByZXF1aXJlKCcuL3J1bGVzL21heC1kZXBlbmRlbmNpZXMnKSxcbiAgJ25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzJzogcmVxdWlyZSgnLi9ydWxlcy9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcycpLFxuICAnbm8tYWJzb2x1dGUtcGF0aCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tYWJzb2x1dGUtcGF0aCcpLFxuICAnbm8tbm9kZWpzLW1vZHVsZXMnOiByZXF1aXJlKCcuL3J1bGVzL25vLW5vZGVqcy1tb2R1bGVzJyksXG4gICduby13ZWJwYWNrLWxvYWRlci1zeW50YXgnOiByZXF1aXJlKCcuL3J1bGVzL25vLXdlYnBhY2stbG9hZGVyLXN5bnRheCcpLFxuICAnb3JkZXInOiByZXF1aXJlKCcuL3J1bGVzL29yZGVyJyksXG4gICduZXdsaW5lLWFmdGVyLWltcG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbmV3bGluZS1hZnRlci1pbXBvcnQnKSxcbiAgJ3ByZWZlci1kZWZhdWx0LWV4cG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvcHJlZmVyLWRlZmF1bHQtZXhwb3J0JyksXG4gICduby1kZWZhdWx0LWV4cG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tZGVmYXVsdC1leHBvcnQnKSxcbiAgJ25vLW5hbWVkLWV4cG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tbmFtZWQtZXhwb3J0JyksXG4gICduby1keW5hbWljLXJlcXVpcmUnOiByZXF1aXJlKCcuL3J1bGVzL25vLWR5bmFtaWMtcmVxdWlyZScpLFxuICAndW5hbWJpZ3VvdXMnOiByZXF1aXJlKCcuL3J1bGVzL3VuYW1iaWd1b3VzJyksXG4gICduby11bmFzc2lnbmVkLWltcG9ydCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tdW5hc3NpZ25lZC1pbXBvcnQnKSxcbiAgJ25vLXVzZWxlc3MtcGF0aC1zZWdtZW50cyc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tdXNlbGVzcy1wYXRoLXNlZ21lbnRzJyksXG4gICdkeW5hbWljLWltcG9ydC1jaHVua25hbWUnOiByZXF1aXJlKCcuL3J1bGVzL2R5bmFtaWMtaW1wb3J0LWNodW5rbmFtZScpLFxuXG4gIC8vIGV4cG9ydFxuICAnZXhwb3J0cy1sYXN0JzogcmVxdWlyZSgnLi9ydWxlcy9leHBvcnRzLWxhc3QnKSxcblxuICAvLyBtZXRhZGF0YS1iYXNlZFxuICAnbm8tZGVwcmVjYXRlZCc6IHJlcXVpcmUoJy4vcnVsZXMvbm8tZGVwcmVjYXRlZCcpLFxuXG4gIC8vIGRlcHJlY2F0ZWQgYWxpYXNlcyB0byBydWxlc1xuICAnaW1wb3J0cy1maXJzdCc6IHJlcXVpcmUoJy4vcnVsZXMvaW1wb3J0cy1maXJzdCcpLFxufVxuXG5leHBvcnQgY29uc3QgY29uZmlncyA9IHtcbiAgJ3JlY29tbWVuZGVkJzogcmVxdWlyZSgnLi4vY29uZmlnL3JlY29tbWVuZGVkJyksXG5cbiAgJ2Vycm9ycyc6IHJlcXVpcmUoJy4uL2NvbmZpZy9lcnJvcnMnKSxcbiAgJ3dhcm5pbmdzJzogcmVxdWlyZSgnLi4vY29uZmlnL3dhcm5pbmdzJyksXG5cbiAgLy8gc2hoaGguLi4gd29yayBpbiBwcm9ncmVzcyBcInNlY3JldFwiIHJ1bGVzXG4gICdzdGFnZS0wJzogcmVxdWlyZSgnLi4vY29uZmlnL3N0YWdlLTAnKSxcblxuICAvLyB1c2VmdWwgc3R1ZmYgZm9yIGZvbGtzIHVzaW5nIHZhcmlvdXMgZW52aXJvbm1lbnRzXG4gICdyZWFjdCc6IHJlcXVpcmUoJy4uL2NvbmZpZy9yZWFjdCcpLFxuICAncmVhY3QtbmF0aXZlJzogcmVxdWlyZSgnLi4vY29uZmlnL3JlYWN0LW5hdGl2ZScpLFxuICAnZWxlY3Ryb24nOiByZXF1aXJlKCcuLi9jb25maWcvZWxlY3Ryb24nKSxcbiAgJ3R5cGVzY3JpcHQnOiByZXF1aXJlKCcuLi9jb25maWcvdHlwZXNjcmlwdCcpLFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/default.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/default.js new file mode 100644 index 0000000..2e69fce --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/default.js @@ -0,0 +1,48 @@ +'use strict'; + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('default') + }, + schema: [] + }, + + create: function (context) { + + function checkDefault(specifierType, node) { + + const defaultSpecifier = node.specifiers.find(specifier => specifier.type === specifierType); + + if (!defaultSpecifier) return; + var imports = _ExportMap2.default.get(node.source.value, context); + if (imports == null) return; + + if (imports.errors.length) { + imports.reportErrors(context, node); + } else if (imports.get('default') === undefined) { + context.report({ + node: defaultSpecifier, + message: `No default export found in imported module "${node.source.value}".` + }); + } + } + + return { + 'ImportDeclaration': checkDefault.bind(null, 'ImportDefaultSpecifier'), + 'ExportNamedDeclaration': checkDefault.bind(null, 'ExportDefaultSpecifier') + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9kZWZhdWx0LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0IiwiY2hlY2tEZWZhdWx0Iiwic3BlY2lmaWVyVHlwZSIsIm5vZGUiLCJkZWZhdWx0U3BlY2lmaWVyIiwic3BlY2lmaWVycyIsImZpbmQiLCJzcGVjaWZpZXIiLCJpbXBvcnRzIiwiRXhwb3J0cyIsImdldCIsInNvdXJjZSIsInZhbHVlIiwiZXJyb3JzIiwibGVuZ3RoIiwicmVwb3J0RXJyb3JzIiwidW5kZWZpbmVkIiwicmVwb3J0IiwibWVzc2FnZSIsImJpbmQiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7QUFDQTs7Ozs7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFNBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLFNBQVI7QUFERCxLQUZGO0FBS0pDLFlBQVE7QUFMSixHQURTOztBQVNmQyxVQUFRLFVBQVVDLE9BQVYsRUFBbUI7O0FBRXpCLGFBQVNDLFlBQVQsQ0FBc0JDLGFBQXRCLEVBQXFDQyxJQUFyQyxFQUEyQzs7QUFFekMsWUFBTUMsbUJBQW1CRCxLQUFLRSxVQUFMLENBQWdCQyxJQUFoQixDQUN2QkMsYUFBYUEsVUFBVVosSUFBVixLQUFtQk8sYUFEVCxDQUF6Qjs7QUFJQSxVQUFJLENBQUNFLGdCQUFMLEVBQXVCO0FBQ3ZCLFVBQUlJLFVBQVVDLG9CQUFRQyxHQUFSLENBQVlQLEtBQUtRLE1BQUwsQ0FBWUMsS0FBeEIsRUFBK0JaLE9BQS9CLENBQWQ7QUFDQSxVQUFJUSxXQUFXLElBQWYsRUFBcUI7O0FBRXJCLFVBQUlBLFFBQVFLLE1BQVIsQ0FBZUMsTUFBbkIsRUFBMkI7QUFDekJOLGdCQUFRTyxZQUFSLENBQXFCZixPQUFyQixFQUE4QkcsSUFBOUI7QUFDRCxPQUZELE1BRU8sSUFBSUssUUFBUUUsR0FBUixDQUFZLFNBQVosTUFBMkJNLFNBQS9CLEVBQTBDO0FBQy9DaEIsZ0JBQVFpQixNQUFSLENBQWU7QUFDYmQsZ0JBQU1DLGdCQURPO0FBRWJjLG1CQUFVLCtDQUE4Q2YsS0FBS1EsTUFBTCxDQUFZQyxLQUFNO0FBRjdELFNBQWY7QUFJRDtBQUNGOztBQUVELFdBQU87QUFDTCwyQkFBcUJYLGFBQWFrQixJQUFiLENBQWtCLElBQWxCLEVBQXdCLHdCQUF4QixDQURoQjtBQUVMLGdDQUEwQmxCLGFBQWFrQixJQUFiLENBQWtCLElBQWxCLEVBQXdCLHdCQUF4QjtBQUZyQixLQUFQO0FBSUQ7QUFuQ2MsQ0FBakIiLCJmaWxlIjoiZGVmYXVsdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHBvcnRzIGZyb20gJy4uL0V4cG9ydE1hcCdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnZGVmYXVsdCcpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG5cbiAgICBmdW5jdGlvbiBjaGVja0RlZmF1bHQoc3BlY2lmaWVyVHlwZSwgbm9kZSkge1xuXG4gICAgICBjb25zdCBkZWZhdWx0U3BlY2lmaWVyID0gbm9kZS5zcGVjaWZpZXJzLmZpbmQoXG4gICAgICAgIHNwZWNpZmllciA9PiBzcGVjaWZpZXIudHlwZSA9PT0gc3BlY2lmaWVyVHlwZVxuICAgICAgKVxuXG4gICAgICBpZiAoIWRlZmF1bHRTcGVjaWZpZXIpIHJldHVyblxuICAgICAgdmFyIGltcG9ydHMgPSBFeHBvcnRzLmdldChub2RlLnNvdXJjZS52YWx1ZSwgY29udGV4dClcbiAgICAgIGlmIChpbXBvcnRzID09IG51bGwpIHJldHVyblxuXG4gICAgICBpZiAoaW1wb3J0cy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgIGltcG9ydHMucmVwb3J0RXJyb3JzKGNvbnRleHQsIG5vZGUpXG4gICAgICB9IGVsc2UgaWYgKGltcG9ydHMuZ2V0KCdkZWZhdWx0JykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZTogZGVmYXVsdFNwZWNpZmllcixcbiAgICAgICAgICBtZXNzYWdlOiBgTm8gZGVmYXVsdCBleHBvcnQgZm91bmQgaW4gaW1wb3J0ZWQgbW9kdWxlIFwiJHtub2RlLnNvdXJjZS52YWx1ZX1cIi5gLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAnSW1wb3J0RGVjbGFyYXRpb24nOiBjaGVja0RlZmF1bHQuYmluZChudWxsLCAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcicpLFxuICAgICAgJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nOiBjaGVja0RlZmF1bHQuYmluZChudWxsLCAnRXhwb3J0RGVmYXVsdFNwZWNpZmllcicpLFxuICAgIH1cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js new file mode 100644 index 0000000..605eb79 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/dynamic-import-chunkname.js @@ -0,0 +1,126 @@ +'use strict'; + +var _vm = require('vm'); + +var _vm2 = _interopRequireDefault(_vm); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('dynamic-import-chunkname') + }, + schema: [{ + type: 'object', + properties: { + importFunctions: { + type: 'array', + uniqueItems: true, + items: { + type: 'string' + } + }, + webpackChunknameFormat: { + type: 'string' + } + } + }] + }, + + create: function (context) { + const config = context.options[0]; + + var _ref = config || {}, + _ref$importFunctions = _ref.importFunctions; + + const importFunctions = _ref$importFunctions === undefined ? [] : _ref$importFunctions; + + var _ref2 = config || {}, + _ref2$webpackChunknam = _ref2.webpackChunknameFormat; + + const webpackChunknameFormat = _ref2$webpackChunknam === undefined ? '[0-9a-zA-Z-_/.]+' : _ref2$webpackChunknam; + + + const paddedCommentRegex = /^ (\S[\s\S]+\S) $/; + const commentStyleRegex = /^( \w+: ("[^"]*"|\d+|false|true),?)+ $/; + const chunkSubstrFormat = ` webpackChunkName: "${webpackChunknameFormat}",? `; + const chunkSubstrRegex = new RegExp(chunkSubstrFormat); + + return { + CallExpression(node) { + if (node.callee.type !== 'Import' && importFunctions.indexOf(node.callee.name) < 0) { + return; + } + + const sourceCode = context.getSourceCode(); + const arg = node.arguments[0]; + const leadingComments = sourceCode.getComments(arg).leading; + + if (!leadingComments || leadingComments.length === 0) { + context.report({ + node, + message: 'dynamic imports require a leading comment with the webpack chunkname' + }); + return; + } + + let isChunknamePresent = false; + + for (const comment of leadingComments) { + if (comment.type !== 'Block') { + context.report({ + node, + message: 'dynamic imports require a /* foo */ style comment, not a // foo comment' + }); + return; + } + + if (!paddedCommentRegex.test(comment.value)) { + context.report({ + node, + message: `dynamic imports require a block comment padded with spaces - /* foo */` + }); + return; + } + + try { + // just like webpack itself does + _vm2.default.runInNewContext(`(function(){return {${comment.value}}})()`); + } catch (error) { + context.report({ + node, + message: `dynamic imports require a "webpack" comment with valid syntax` + }); + return; + } + + if (!commentStyleRegex.test(comment.value)) { + context.report({ + node, + message: `dynamic imports require a leading comment in the form /*${chunkSubstrFormat}*/` + }); + return; + } + + if (chunkSubstrRegex.test(comment.value)) { + isChunknamePresent = true; + } + } + + if (!isChunknamePresent) { + context.report({ + node, + message: `dynamic imports require a leading comment in the form /*${chunkSubstrFormat}*/` + }); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9keW5hbWljLWltcG9ydC1jaHVua25hbWUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsInByb3BlcnRpZXMiLCJpbXBvcnRGdW5jdGlvbnMiLCJ1bmlxdWVJdGVtcyIsIml0ZW1zIiwid2VicGFja0NodW5rbmFtZUZvcm1hdCIsImNyZWF0ZSIsImNvbnRleHQiLCJjb25maWciLCJvcHRpb25zIiwicGFkZGVkQ29tbWVudFJlZ2V4IiwiY29tbWVudFN0eWxlUmVnZXgiLCJjaHVua1N1YnN0ckZvcm1hdCIsImNodW5rU3Vic3RyUmVnZXgiLCJSZWdFeHAiLCJDYWxsRXhwcmVzc2lvbiIsIm5vZGUiLCJjYWxsZWUiLCJpbmRleE9mIiwibmFtZSIsInNvdXJjZUNvZGUiLCJnZXRTb3VyY2VDb2RlIiwiYXJnIiwiYXJndW1lbnRzIiwibGVhZGluZ0NvbW1lbnRzIiwiZ2V0Q29tbWVudHMiLCJsZWFkaW5nIiwibGVuZ3RoIiwicmVwb3J0IiwibWVzc2FnZSIsImlzQ2h1bmtuYW1lUHJlc2VudCIsImNvbW1lbnQiLCJ0ZXN0IiwidmFsdWUiLCJ2bSIsInJ1bkluTmV3Q29udGV4dCIsImVycm9yIl0sIm1hcHBpbmdzIjoiOztBQUFBOzs7O0FBQ0E7Ozs7OztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxZQURGO0FBRUpDLFVBQU07QUFDSkMsV0FBSyx1QkFBUSwwQkFBUjtBQURELEtBRkY7QUFLSkMsWUFBUSxDQUFDO0FBQ1BILFlBQU0sUUFEQztBQUVQSSxrQkFBWTtBQUNWQyx5QkFBaUI7QUFDZkwsZ0JBQU0sT0FEUztBQUVmTSx1QkFBYSxJQUZFO0FBR2ZDLGlCQUFPO0FBQ0xQLGtCQUFNO0FBREQ7QUFIUSxTQURQO0FBUVZRLGdDQUF3QjtBQUN0QlIsZ0JBQU07QUFEZ0I7QUFSZDtBQUZMLEtBQUQ7QUFMSixHQURTOztBQXVCZlMsVUFBUSxVQUFVQyxPQUFWLEVBQW1CO0FBQ3pCLFVBQU1DLFNBQVNELFFBQVFFLE9BQVIsQ0FBZ0IsQ0FBaEIsQ0FBZjs7QUFEeUIsZUFFUUQsVUFBVSxFQUZsQjtBQUFBLG9DQUVqQk4sZUFGaUI7O0FBQUEsVUFFakJBLGVBRmlCLHdDQUVDLEVBRkQ7O0FBQUEsZ0JBRytCTSxVQUFVLEVBSHpDO0FBQUEsc0NBR2pCSCxzQkFIaUI7O0FBQUEsVUFHakJBLHNCQUhpQix5Q0FHUSxrQkFIUjs7O0FBS3pCLFVBQU1LLHFCQUFxQixtQkFBM0I7QUFDQSxVQUFNQyxvQkFBb0Isd0NBQTFCO0FBQ0EsVUFBTUMsb0JBQXFCLHVCQUFzQlAsc0JBQXVCLE1BQXhFO0FBQ0EsVUFBTVEsbUJBQW1CLElBQUlDLE1BQUosQ0FBV0YsaUJBQVgsQ0FBekI7O0FBRUEsV0FBTztBQUNMRyxxQkFBZUMsSUFBZixFQUFxQjtBQUNuQixZQUFJQSxLQUFLQyxNQUFMLENBQVlwQixJQUFaLEtBQXFCLFFBQXJCLElBQWlDSyxnQkFBZ0JnQixPQUFoQixDQUF3QkYsS0FBS0MsTUFBTCxDQUFZRSxJQUFwQyxJQUE0QyxDQUFqRixFQUFvRjtBQUNsRjtBQUNEOztBQUVELGNBQU1DLGFBQWFiLFFBQVFjLGFBQVIsRUFBbkI7QUFDQSxjQUFNQyxNQUFNTixLQUFLTyxTQUFMLENBQWUsQ0FBZixDQUFaO0FBQ0EsY0FBTUMsa0JBQWtCSixXQUFXSyxXQUFYLENBQXVCSCxHQUF2QixFQUE0QkksT0FBcEQ7O0FBRUEsWUFBSSxDQUFDRixlQUFELElBQW9CQSxnQkFBZ0JHLE1BQWhCLEtBQTJCLENBQW5ELEVBQXNEO0FBQ3BEcEIsa0JBQVFxQixNQUFSLENBQWU7QUFDYlosZ0JBRGE7QUFFYmEscUJBQVM7QUFGSSxXQUFmO0FBSUE7QUFDRDs7QUFFRCxZQUFJQyxxQkFBcUIsS0FBekI7O0FBRUEsYUFBSyxNQUFNQyxPQUFYLElBQXNCUCxlQUF0QixFQUF1QztBQUNyQyxjQUFJTyxRQUFRbEMsSUFBUixLQUFpQixPQUFyQixFQUE4QjtBQUM1QlUsb0JBQVFxQixNQUFSLENBQWU7QUFDYlosa0JBRGE7QUFFYmEsdUJBQVM7QUFGSSxhQUFmO0FBSUE7QUFDRDs7QUFFRCxjQUFJLENBQUNuQixtQkFBbUJzQixJQUFuQixDQUF3QkQsUUFBUUUsS0FBaEMsQ0FBTCxFQUE2QztBQUMzQzFCLG9CQUFRcUIsTUFBUixDQUFlO0FBQ2JaLGtCQURhO0FBRWJhLHVCQUFVO0FBRkcsYUFBZjtBQUlBO0FBQ0Q7O0FBRUQsY0FBSTtBQUNGO0FBQ0FLLHlCQUFHQyxlQUFILENBQW9CLHVCQUFzQkosUUFBUUUsS0FBTSxPQUF4RDtBQUNELFdBSEQsQ0FJQSxPQUFPRyxLQUFQLEVBQWM7QUFDWjdCLG9CQUFRcUIsTUFBUixDQUFlO0FBQ2JaLGtCQURhO0FBRWJhLHVCQUFVO0FBRkcsYUFBZjtBQUlBO0FBQ0Q7O0FBRUQsY0FBSSxDQUFDbEIsa0JBQWtCcUIsSUFBbEIsQ0FBdUJELFFBQVFFLEtBQS9CLENBQUwsRUFBNEM7QUFDMUMxQixvQkFBUXFCLE1BQVIsQ0FBZTtBQUNiWixrQkFEYTtBQUViYSx1QkFDRywyREFBMERqQixpQkFBa0I7QUFIbEUsYUFBZjtBQUtBO0FBQ0Q7O0FBRUQsY0FBSUMsaUJBQWlCbUIsSUFBakIsQ0FBc0JELFFBQVFFLEtBQTlCLENBQUosRUFBMEM7QUFDeENILGlDQUFxQixJQUFyQjtBQUNEO0FBQ0Y7O0FBRUQsWUFBSSxDQUFDQSxrQkFBTCxFQUF5QjtBQUN2QnZCLGtCQUFRcUIsTUFBUixDQUFlO0FBQ2JaLGdCQURhO0FBRWJhLHFCQUNHLDJEQUEwRGpCLGlCQUFrQjtBQUhsRSxXQUFmO0FBS0Q7QUFDRjtBQXRFSSxLQUFQO0FBd0VEO0FBekdjLENBQWpCIiwiZmlsZSI6ImR5bmFtaWMtaW1wb3J0LWNodW5rbmFtZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB2bSBmcm9tICd2bSdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnZHluYW1pYy1pbXBvcnQtY2h1bmtuYW1lJyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFt7XG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgaW1wb3J0RnVuY3Rpb25zOiB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgd2VicGFja0NodW5rbmFtZUZvcm1hdDoge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgY29uc3QgY29uZmlnID0gY29udGV4dC5vcHRpb25zWzBdXG4gICAgY29uc3QgeyBpbXBvcnRGdW5jdGlvbnMgPSBbXSB9ID0gY29uZmlnIHx8IHt9XG4gICAgY29uc3QgeyB3ZWJwYWNrQ2h1bmtuYW1lRm9ybWF0ID0gJ1swLTlhLXpBLVotXy8uXSsnIH0gPSBjb25maWcgfHwge31cblxuICAgIGNvbnN0IHBhZGRlZENvbW1lbnRSZWdleCA9IC9eIChcXFNbXFxzXFxTXStcXFMpICQvXG4gICAgY29uc3QgY29tbWVudFN0eWxlUmVnZXggPSAvXiggXFx3KzogKFwiW15cIl0qXCJ8XFxkK3xmYWxzZXx0cnVlKSw/KSsgJC9cbiAgICBjb25zdCBjaHVua1N1YnN0ckZvcm1hdCA9IGAgd2VicGFja0NodW5rTmFtZTogXCIke3dlYnBhY2tDaHVua25hbWVGb3JtYXR9XCIsPyBgXG4gICAgY29uc3QgY2h1bmtTdWJzdHJSZWdleCA9IG5ldyBSZWdFeHAoY2h1bmtTdWJzdHJGb3JtYXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZS5jYWxsZWUudHlwZSAhPT0gJ0ltcG9ydCcgJiYgaW1wb3J0RnVuY3Rpb25zLmluZGV4T2Yobm9kZS5jYWxsZWUubmFtZSkgPCAwKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKClcbiAgICAgICAgY29uc3QgYXJnID0gbm9kZS5hcmd1bWVudHNbMF1cbiAgICAgICAgY29uc3QgbGVhZGluZ0NvbW1lbnRzID0gc291cmNlQ29kZS5nZXRDb21tZW50cyhhcmcpLmxlYWRpbmdcblxuICAgICAgICBpZiAoIWxlYWRpbmdDb21tZW50cyB8fCBsZWFkaW5nQ29tbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICdkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIGxlYWRpbmcgY29tbWVudCB3aXRoIHRoZSB3ZWJwYWNrIGNodW5rbmFtZScsXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpc0NodW5rbmFtZVByZXNlbnQgPSBmYWxzZVxuXG4gICAgICAgIGZvciAoY29uc3QgY29tbWVudCBvZiBsZWFkaW5nQ29tbWVudHMpIHtcbiAgICAgICAgICBpZiAoY29tbWVudC50eXBlICE9PSAnQmxvY2snKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6ICdkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIC8qIGZvbyAqLyBzdHlsZSBjb21tZW50LCBub3QgYSAvLyBmb28gY29tbWVudCcsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFwYWRkZWRDb21tZW50UmVnZXgudGVzdChjb21tZW50LnZhbHVlKSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBgZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSBibG9jayBjb21tZW50IHBhZGRlZCB3aXRoIHNwYWNlcyAtIC8qIGZvbyAqL2AsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIGp1c3QgbGlrZSB3ZWJwYWNrIGl0c2VsZiBkb2VzXG4gICAgICAgICAgICB2bS5ydW5Jbk5ld0NvbnRleHQoYChmdW5jdGlvbigpe3JldHVybiB7JHtjb21tZW50LnZhbHVlfX19KSgpYClcbiAgICAgICAgICB9XG4gICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGBkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIFwid2VicGFja1wiIGNvbW1lbnQgd2l0aCB2YWxpZCBzeW50YXhgLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghY29tbWVudFN0eWxlUmVnZXgudGVzdChjb21tZW50LnZhbHVlKSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICAgIGBkeW5hbWljIGltcG9ydHMgcmVxdWlyZSBhIGxlYWRpbmcgY29tbWVudCBpbiB0aGUgZm9ybSAvKiR7Y2h1bmtTdWJzdHJGb3JtYXR9Ki9gLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChjaHVua1N1YnN0clJlZ2V4LnRlc3QoY29tbWVudC52YWx1ZSkpIHtcbiAgICAgICAgICAgIGlzQ2h1bmtuYW1lUHJlc2VudCA9IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWlzQ2h1bmtuYW1lUHJlc2VudCkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICBgZHluYW1pYyBpbXBvcnRzIHJlcXVpcmUgYSBsZWFkaW5nIGNvbW1lbnQgaW4gdGhlIGZvcm0gLyoke2NodW5rU3Vic3RyRm9ybWF0fSovYCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/export.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/export.js new file mode 100644 index 0000000..8241a82 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/export.js @@ -0,0 +1,173 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +var _arrayIncludes = require('array-includes'); + +var _arrayIncludes2 = _interopRequireDefault(_arrayIncludes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* +Notes on TypeScript namespaces aka TSModuleDeclaration: + +There are two forms: +- active namespaces: namespace Foo {} / module Foo {} +- ambient modules; declare module "eslint-plugin-import" {} + +active namespaces: +- cannot contain a default export +- cannot contain an export all +- cannot contain a multi name export (export { a, b }) +- can have active namespaces nested within them + +ambient namespaces: +- can only be defined in .d.ts files +- cannot be nested within active namespaces +- have no other restrictions +*/ + +const rootProgram = 'root'; +const tsTypePrefix = 'type:'; + +/** + * Detect function overloads like: + * ```ts + * export function foo(a: number); + * export function foo(a: string); + * export function foo(a: number|string) { return a; } + * ``` + * @param {Set} nodes + * @returns {boolean} + */ +function isTypescriptFunctionOverloads(nodes) { + const types = new Set(Array.from(nodes, node => node.parent.type)); + return types.has('TSDeclareFunction') && (types.size === 1 || types.size === 2 && types.has('FunctionDeclaration')); +} + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('export') + }, + schema: [] + }, + + create: function (context) { + const namespace = new Map([[rootProgram, new Map()]]); + + function addNamed(name, node, parent, isType) { + if (!namespace.has(parent)) { + namespace.set(parent, new Map()); + } + const named = namespace.get(parent); + + const key = isType ? `${tsTypePrefix}${name}` : name; + let nodes = named.get(key); + + if (nodes == null) { + nodes = new Set(); + named.set(key, nodes); + } + + nodes.add(node); + } + + function getParent(node) { + if (node.parent && node.parent.type === 'TSModuleBlock') { + return node.parent.parent; + } + + // just in case somehow a non-ts namespace export declaration isn't directly + // parented to the root Program node + return rootProgram; + } + + return { + 'ExportDefaultDeclaration': node => addNamed('default', node, getParent(node)), + + 'ExportSpecifier': node => addNamed(node.exported.name, node.exported, getParent(node)), + + 'ExportNamedDeclaration': function (node) { + if (node.declaration == null) return; + + const parent = getParent(node); + // support for old TypeScript versions + const isTypeVariableDecl = node.declaration.kind === 'type'; + + if (node.declaration.id != null) { + if ((0, _arrayIncludes2.default)(['TSTypeAliasDeclaration', 'TSInterfaceDeclaration'], node.declaration.type)) { + addNamed(node.declaration.id.name, node.declaration.id, parent, true); + } else { + addNamed(node.declaration.id.name, node.declaration.id, parent, isTypeVariableDecl); + } + } + + if (node.declaration.declarations != null) { + for (let declaration of node.declaration.declarations) { + (0, _ExportMap.recursivePatternCapture)(declaration.id, v => addNamed(v.name, v, parent, isTypeVariableDecl)); + } + } + }, + + 'ExportAllDeclaration': function (node) { + if (node.source == null) return; // not sure if this is ever true + + const remoteExports = _ExportMap2.default.get(node.source.value, context); + if (remoteExports == null) return; + + if (remoteExports.errors.length) { + remoteExports.reportErrors(context, node); + return; + } + + const parent = getParent(node); + + let any = false; + remoteExports.forEach((v, name) => name !== 'default' && (any = true) && // poor man's filter + addNamed(name, node, parent)); + + if (!any) { + context.report(node.source, `No named exports found in module '${node.source.value}'.`); + } + }, + + 'Program:exit': function () { + for (let _ref of namespace) { + var _ref2 = _slicedToArray(_ref, 2); + + let named = _ref2[1]; + + for (let _ref3 of named) { + var _ref4 = _slicedToArray(_ref3, 2); + + let name = _ref4[0]; + let nodes = _ref4[1]; + + if (nodes.size <= 1) continue; + + if (isTypescriptFunctionOverloads(nodes)) continue; + + for (let node of nodes) { + if (name === 'default') { + context.report(node, 'Multiple default exports.'); + } else { + context.report(node, `Multiple exports of name '${name.replace(tsTypePrefix, '')}'.`); + } + } + } + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9leHBvcnQuanMiXSwibmFtZXMiOlsicm9vdFByb2dyYW0iLCJ0c1R5cGVQcmVmaXgiLCJpc1R5cGVzY3JpcHRGdW5jdGlvbk92ZXJsb2FkcyIsIm5vZGVzIiwidHlwZXMiLCJTZXQiLCJBcnJheSIsImZyb20iLCJub2RlIiwicGFyZW50IiwidHlwZSIsImhhcyIsInNpemUiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0IiwibmFtZXNwYWNlIiwiTWFwIiwiYWRkTmFtZWQiLCJuYW1lIiwiaXNUeXBlIiwic2V0IiwibmFtZWQiLCJnZXQiLCJrZXkiLCJhZGQiLCJnZXRQYXJlbnQiLCJleHBvcnRlZCIsImRlY2xhcmF0aW9uIiwiaXNUeXBlVmFyaWFibGVEZWNsIiwia2luZCIsImlkIiwiZGVjbGFyYXRpb25zIiwidiIsInNvdXJjZSIsInJlbW90ZUV4cG9ydHMiLCJFeHBvcnRNYXAiLCJ2YWx1ZSIsImVycm9ycyIsImxlbmd0aCIsInJlcG9ydEVycm9ycyIsImFueSIsImZvckVhY2giLCJyZXBvcnQiLCJyZXBsYWNlIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSxNQUFNQSxjQUFjLE1BQXBCO0FBQ0EsTUFBTUMsZUFBZSxPQUFyQjs7QUFFQTs7Ozs7Ozs7OztBQVVBLFNBQVNDLDZCQUFULENBQXVDQyxLQUF2QyxFQUE4QztBQUM1QyxRQUFNQyxRQUFRLElBQUlDLEdBQUosQ0FBUUMsTUFBTUMsSUFBTixDQUFXSixLQUFYLEVBQWtCSyxRQUFRQSxLQUFLQyxNQUFMLENBQVlDLElBQXRDLENBQVIsQ0FBZDtBQUNBLFNBQ0VOLE1BQU1PLEdBQU4sQ0FBVSxtQkFBVixNQUVFUCxNQUFNUSxJQUFOLEtBQWUsQ0FBZixJQUNDUixNQUFNUSxJQUFOLEtBQWUsQ0FBZixJQUFvQlIs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QUFDL0IsZ0JBQUlBLE1BQU1TLElBQU4sSUFBYyxDQUFsQixFQUFxQjs7QUFFckIsZ0JBQUlWLDhCQUE4QkMsS0FBOUIsQ0FBSixFQUEwQzs7QUFFMUMsaUJBQUssSUFBSUssSUFBVCxJQUFpQkwsS0FBakIsRUFBd0I7QUFDdEIsa0JBQUlxQixTQUFTLFNBQWIsRUFBd0I7QUFDdEJKLHdCQUFRNEIsTUFBUixDQUFleEMsSUFBZixFQUFxQiwyQkFBckI7QUFDRCxlQUZELE1BRU87QUFDTFksd0JBQVE0QixNQUFSLENBQ0V4QyxJQURGLEVBRUcsNkJBQTRCZ0IsS0FBS3lCLE9BQUwsQ0FBYWhELFlBQWIsRUFBMkIsRUFBM0IsQ0FBK0IsSUFGOUQ7QUFJRDtBQUNGO0FBQ0Y7QUFDRjtBQUNGO0FBM0VJLEtBQVA7QUE2RUQ7QUFwSGMsQ0FBakIiLCJmaWxlIjoiZXhwb3J0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV4cG9ydE1hcCwgeyByZWN1cnNpdmVQYXR0ZXJuQ2FwdHVyZSB9IGZyb20gJy4uL0V4cG9ydE1hcCdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5pbXBvcnQgaW5jbHVkZXMgZnJvbSAnYXJyYXktaW5jbHVkZXMnXG5cbi8qXG5Ob3RlcyBvbiBUeXBlU2NyaXB0IG5hbWVzcGFjZXMgYWthIFRTTW9kdWxlRGVjbGFyYXRpb246XG5cblRoZXJlIGFyZSB0d28gZm9ybXM6XG4tIGFjdGl2ZSBuYW1lc3BhY2VzOiBuYW1lc3BhY2UgRm9vIHt9IC8gbW9kdWxlIEZvbyB7fVxuLSBhbWJpZW50IG1vZHVsZXM7IGRlY2xhcmUgbW9kdWxlIFwiZXNsaW50LXBsdWdpbi1pbXBvcnRcIiB7fVxuXG5hY3RpdmUgbmFtZXNwYWNlczpcbi0gY2Fubm90IGNvbnRhaW4gYSBkZWZhdWx0IGV4cG9ydFxuLSBjYW5ub3QgY29udGFpbiBhbiBleHBvcnQgYWxsXG4tIGNhbm5vdCBjb250YWluIGEgbXVsdGkgbmFtZSBleHBvcnQgKGV4cG9ydCB7IGEsIGIgfSlcbi0gY2FuIGhhdmUgYWN0aXZlIG5hbWVzcGFjZXMgbmVzdGVkIHdpdGhpbiB0aGVtXG5cbmFtYmllbnQgbmFtZXNwYWNlczpcbi0gY2FuIG9ubHkgYmUgZGVmaW5lZCBpbiAuZC50cyBmaWxlc1xuLSBjYW5ub3QgYmUgbmVzdGVkIHdpdGhpbiBhY3RpdmUgbmFtZXNwYWNlc1xuLSBoYXZlIG5vIG90aGVyIHJlc3RyaWN0aW9uc1xuKi9cblxuY29uc3Qgcm9vdFByb2dyYW0gPSAncm9vdCdcbmNvbnN0IHRzVHlwZVByZWZpeCA9ICd0eXBlOidcblxuLyoqXG4gKiBEZXRlY3QgZnVuY3Rpb24gb3ZlcmxvYWRzIGxpa2U6XG4gKiBgYGB0c1xuICogZXhwb3J0IGZ1bmN0aW9uIGZvbyhhOiBudW1iZXIpO1xuICogZXhwb3J0IGZ1bmN0aW9uIGZvbyhhOiBzdHJpbmcpO1xuICogZXhwb3J0IGZ1bmN0aW9uIGZvbyhhOiBudW1iZXJ8c3RyaW5nKSB7IHJldHVybiBhOyB9XG4gKiBgYGBcbiAqIEBwYXJhbSB7U2V0PE9iamVjdD59IG5vZGVzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNUeXBlc2NyaXB0RnVuY3Rpb25PdmVybG9hZHMobm9kZXMpIHtcbiAgY29uc3QgdHlwZXMgPSBuZXcgU2V0KEFycmF5LmZyb20obm9kZXMsIG5vZGUgPT4gbm9kZS5wYXJlbnQudHlwZSkpXG4gIHJldHVybiAoXG4gICAgdHlwZXMuaGFzKCdUU0RlY2xhcmVGdW5jdGlvbicpICYmXG4gICAgKFxuICAgICAgdHlwZXMuc2l6ZSA9PT0gMSB8fFxuICAgICAgKHR5cGVzLnNpemUgPT09IDIgJiYgdHlwZXMuaGFzKCdGdW5jdGlvbkRlY2xhcmF0aW9uJykpXG4gICAgKVxuICApXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnZXhwb3J0JyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBuZXcgTWFwKFtbcm9vdFByb2dyYW0sIG5ldyBNYXAoKV1dKVxuXG4gICAgZnVuY3Rpb24gYWRkTmFtZWQobmFtZSwgbm9kZSwgcGFyZW50LCBpc1R5cGUpIHtcbiAgICAgIGlmICghbmFtZXNwYWNlLmhhcyhwYXJlbnQpKSB7XG4gICAgICAgIG5hbWVzcGFjZS5zZXQocGFyZW50LCBuZXcgTWFwKCkpXG4gICAgICB9XG4gICAgICBjb25zdCBuYW1lZCA9IG5hbWVzcGFjZS5nZXQocGFyZW50KVxuXG4gICAgICBjb25zdCBrZXkgPSBpc1R5cGUgPyBgJHt0c1R5cGVQcmVmaXh9JHtuYW1lfWAgOiBuYW1lXG4gICAgICBsZXQgbm9kZXMgPSBuYW1lZC5nZXQoa2V5KVxuXG4gICAgICBpZiAobm9kZXMgPT0gbnVsbCkge1xuICAgICAgICBub2RlcyA9IG5ldyBTZXQoKVxuICAgICAgICBuYW1lZC5zZXQoa2V5LCBub2RlcylcbiAgICAgIH1cblxuICAgICAgbm9kZXMuYWRkKG5vZGUpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UGFyZW50KG5vZGUpIHtcbiAgICAgIGlmIChub2RlLnBhcmVudCAmJiBub2RlLnBhcmVudC50eXBlID09PSAnVFNNb2R1bGVCbG9jaycpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50LnBhcmVudFxuICAgICAgfVxuXG4gICAgICAvLyBqdXN0IGluIGNhc2Ugc29tZWhvdyBhIG5vbi10cyBuYW1lc3BhY2UgZXhwb3J0IGRlY2xhcmF0aW9uIGlzbid0IGRpcmVjdGx5XG4gICAgICAvLyBwYXJlbnRlZCB0byB0aGUgcm9vdCBQcm9ncmFtIG5vZGVcbiAgICAgIHJldHVybiByb290UHJvZ3JhbVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJzogKG5vZGUpID0+IGFkZE5hbWVkKCdkZWZhdWx0Jywgbm9kZSwgZ2V0UGFyZW50KG5vZGUpKSxcblxuICAgICAgJ0V4cG9ydFNwZWNpZmllcic6IChub2RlKSA9PiBhZGROYW1lZChub2RlLmV4cG9ydGVkLm5hbWUsIG5vZGUuZXhwb3J0ZWQsIGdldFBhcmVudChub2RlKSksXG5cbiAgICAgICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJzogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuZGVjbGFyYXRpb24gPT0gbnVsbCkgcmV0dXJuXG5cbiAgICAgICAgY29uc3QgcGFyZW50ID0gZ2V0UGFyZW50KG5vZGUpXG4gICAgICAgIC8vIHN1cHBvcnQgZm9yIG9sZCBUeXBlU2NyaXB0IHZlcnNpb25zXG4gICAgICAgIGNvbnN0IGlzVHlwZVZhcmlhYmxlRGVjbCA9IG5vZGUuZGVjbGFyYXRpb24ua2luZCA9PT0gJ3R5cGUnXG5cbiAgICAgICAgaWYgKG5vZGUuZGVjbGFyYXRpb24uaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmIChpbmNsdWRlcyhbXG4gICAgICAgICAgICAnVFNUeXBlQWxpYXNEZWNsYXJhdGlvbicsXG4gICAgICAgICAgICAnVFNJbnRlcmZhY2VEZWNsYXJhdGlvbicsXG4gICAgICAgICAgXSwgbm9kZS5kZWNsYXJhdGlvbi50eXBlKSkge1xuICAgICAgICAgICAgYWRkTmFtZWQobm9kZS5kZWNsYXJhdGlvbi5pZC5uYW1lLCBub2RlLmRlY2xhcmF0aW9uLmlkLCBwYXJlbnQsIHRydWUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFkZE5hbWVkKG5vZGUuZGVjbGFyYXRpb24uaWQubmFtZSwgbm9kZS5kZWNsYXJhdGlvbi5pZCwgcGFyZW50LCBpc1R5cGVWYXJpYWJsZURlY2wpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zICE9IG51bGwpIHtcbiAgICAgICAgICBmb3IgKGxldCBkZWNsYXJhdGlvbiBvZiBub2RlLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucykge1xuICAgICAgICAgICAgcmVjdXJzaXZlUGF0dGVybkNhcHR1cmUoZGVjbGFyYXRpb24uaWQsIHYgPT5cbiAgICAgICAgICAgICAgYWRkTmFtZWQodi5uYW1lLCB2LCBwYXJlbnQsIGlzVHlwZVZhcmlhYmxlRGVjbCkpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICAnRXhwb3J0QWxsRGVjbGFyYXRpb24nOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5zb3VyY2UgPT0gbnVsbCkgcmV0dXJuIC8vIG5vdCBzdXJlIGlmIHRoaXMgaXMgZXZlciB0cnVlXG5cbiAgICAgICAgY29uc3QgcmVtb3RlRXhwb3J0cyA9IEV4cG9ydE1hcC5nZXQobm9kZS5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgICAgIGlmIChyZW1vdGVFeHBvcnRzID09IG51bGwpIHJldHVyblxuXG4gICAgICAgIGlmIChyZW1vdGVFeHBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICByZW1vdGVFeHBvcnRzLnJlcG9ydEVycm9ycyhjb250ZXh0LCBub2RlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcGFyZW50ID0gZ2V0UGFyZW50KG5vZGUpXG5cbiAgICAgICAgbGV0IGFueSA9IGZhbHNlXG4gICAgICAgIHJlbW90ZUV4cG9ydHMuZm9yRWFjaCgodiwgbmFtZSkgPT5cbiAgICAgICAgICBuYW1lICE9PSAnZGVmYXVsdCcgJiZcbiAgICAgICAgICAoYW55ID0gdHJ1ZSkgJiYgLy8gcG9vciBtYW4ncyBmaWx0ZXJcbiAgICAgICAgICBhZGROYW1lZChuYW1lLCBub2RlLCBwYXJlbnQpKVxuXG4gICAgICAgIGlmICghYW55KSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQobm9kZS5zb3VyY2UsXG4gICAgICAgICAgICBgTm8gbmFtZWQgZXhwb3J0cyBmb3VuZCBpbiBtb2R1bGUgJyR7bm9kZS5zb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICAnUHJvZ3JhbTpleGl0JzogZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKGxldCBbLCBuYW1lZF0gb2YgbmFtZXNwYWNlKSB7XG4gICAgICAgICAgZm9yIChsZXQgW25hbWUsIG5vZGVzXSBvZiBuYW1lZCkge1xuICAgICAgICAgICAgaWYgKG5vZGVzLnNpemUgPD0gMSkgY29udGludWVcblxuICAgICAgICAgICAgaWYgKGlzVHlwZXNjcmlwdEZ1bmN0aW9uT3ZlcmxvYWRzKG5vZGVzKSkgY29udGludWVcblxuICAgICAgICAgICAgZm9yIChsZXQgbm9kZSBvZiBub2Rlcykge1xuICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2RlZmF1bHQnKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQobm9kZSwgJ011bHRpcGxlIGRlZmF1bHQgZXhwb3J0cy4nKVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KFxuICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgIGBNdWx0aXBsZSBleHBvcnRzIG9mIG5hbWUgJyR7bmFtZS5yZXBsYWNlKHRzVHlwZVByZWZpeCwgJycpfScuYFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/exports-last.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/exports-last.js new file mode 100644 index 0000000..a8ff6a7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/exports-last.js @@ -0,0 +1,50 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isNonExportStatement(_ref) { + let type = _ref.type; + + return type !== 'ExportDefaultDeclaration' && type !== 'ExportNamedDeclaration' && type !== 'ExportAllDeclaration'; +} + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('exports-last') + }, + schema: [] + }, + + create: function (context) { + return { + Program: function (_ref2) { + let body = _ref2.body; + + const lastNonExportStatementIndex = body.reduce(function findLastIndex(acc, item, index) { + if (isNonExportStatement(item)) { + return index; + } + return acc; + }, -1); + + if (lastNonExportStatementIndex !== -1) { + body.slice(0, lastNonExportStatementIndex).forEach(function checkNonExport(node) { + if (!isNonExportStatement(node)) { + context.report({ + node, + message: 'Export statements should appear at the end of the file' + }); + } + }); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9leHBvcnRzLWxhc3QuanMiXSwibmFtZXMiOlsiaXNOb25FeHBvcnRTdGF0ZW1lbnQiLCJ0eXBlIiwibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJkb2NzIiwidXJsIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsIlByb2dyYW0iLCJib2R5IiwibGFzdE5vbkV4cG9ydFN0YXRlbWVudEluZGV4IiwicmVkdWNlIiwiZmluZExhc3RJbmRleCIsImFjYyIsIml0ZW0iLCJpbmRleCIsInNsaWNlIiwiZm9yRWFjaCIsImNoZWNrTm9uRXhwb3J0Iiwibm9kZSIsInJlcG9ydCIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7OztBQUVBLFNBQVNBLG9CQUFULE9BQXdDO0FBQUEsTUFBUkMsSUFBUSxRQUFSQSxJQUFROztBQUN0QyxTQUFPQSxTQUFTLDBCQUFULElBQ0xBLFNBQVMsd0JBREosSUFFTEEsU0FBUyxzQkFGWDtBQUdEOztBQUVEQyxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkgsVUFBTSxZQURGO0FBRUpJLFVBQU07QUFDSkMsV0FBSyx1QkFBUSxjQUFSO0FBREQsS0FGRjtBQUtKQyxZQUFRO0FBTEosR0FEUzs7QUFTZkMsVUFBUSxVQUFVQyxPQUFWLEVBQW1CO0FBQ3pCLFdBQU87QUFDTEMsZUFBUyxpQkFBb0I7QUFBQSxZQUFSQyxJQUFRLFNBQVJBLElBQVE7O0FBQzNCLGNBQU1DLDhCQUE4QkQsS0FBS0UsTUFBTCxDQUFZLFNBQVNDLGFBQVQsQ0FBdUJDLEdBQXZCLEVBQTRCQyxJQUE1QixFQUFrQ0MsS0FBbEMsRUFBeUM7QUFDdkYsY0FBSWpCLHFCQUFxQmdCLElBQXJCLENBQUosRUFBZ0M7QUFDOUIsbUJBQU9DLEtBQVA7QUFDRDtBQUNELGlCQUFPRixHQUFQO0FBQ0QsU0FMbUMsRUFLakMsQ0FBQyxDQUxnQyxDQUFwQzs7QUFPQSxZQUFJSCxnQ0FBZ0MsQ0FBQyxDQUFyQyxFQUF3QztBQUN0Q0QsZUFBS08sS0FBTCxDQUFXLENBQVgsRUFBY04sMkJBQWQsRUFBMkNPLE9BQTNDLENBQW1ELFNBQVNDLGNBQVQsQ0FBd0JDLElBQXhCLEVBQThCO0FBQy9FLGdCQUFJLENBQUNyQixxQkFBcUJxQixJQUFyQixDQUFMLEVBQWlDO0FBQy9CWixzQkFBUWEsTUFBUixDQUFlO0FBQ2JELG9CQURhO0FBRWJFLHlCQUFTO0FBRkksZUFBZjtBQUlEO0FBQ0YsV0FQRDtBQVFEO0FBQ0Y7QUFuQkksS0FBUDtBQXFCRDtBQS9CYyxDQUFqQiIsImZpbGUiOiJleHBvcnRzLWxhc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5mdW5jdGlvbiBpc05vbkV4cG9ydFN0YXRlbWVudCh7IHR5cGUgfSkge1xuICByZXR1cm4gdHlwZSAhPT0gJ0V4cG9ydERlZmF1bHREZWNsYXJhdGlvbicgJiZcbiAgICB0eXBlICE9PSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicgJiZcbiAgICB0eXBlICE9PSAnRXhwb3J0QWxsRGVjbGFyYXRpb24nXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnZXhwb3J0cy1sYXN0JyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgUHJvZ3JhbTogZnVuY3Rpb24gKHsgYm9keSB9KSB7XG4gICAgICAgIGNvbnN0IGxhc3ROb25FeHBvcnRTdGF0ZW1lbnRJbmRleCA9IGJvZHkucmVkdWNlKGZ1bmN0aW9uIGZpbmRMYXN0SW5kZXgoYWNjLCBpdGVtLCBpbmRleCkge1xuICAgICAgICAgIGlmIChpc05vbkV4cG9ydFN0YXRlbWVudChpdGVtKSkge1xuICAgICAgICAgICAgcmV0dXJuIGluZGV4XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgfSwgLTEpXG5cbiAgICAgICAgaWYgKGxhc3ROb25FeHBvcnRTdGF0ZW1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBib2R5LnNsaWNlKDAsIGxhc3ROb25FeHBvcnRTdGF0ZW1lbnRJbmRleCkuZm9yRWFjaChmdW5jdGlvbiBjaGVja05vbkV4cG9ydChub2RlKSB7XG4gICAgICAgICAgICBpZiAoIWlzTm9uRXhwb3J0U3RhdGVtZW50KG5vZGUpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdFeHBvcnQgc3RhdGVtZW50cyBzaG91bGQgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/extensions.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/extensions.js new file mode 100644 index 0000000..29b5a8a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/extensions.js @@ -0,0 +1,189 @@ +'use strict'; + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _importType = require('../core/importType'); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const enumValues = { enum: ['always', 'ignorePackages', 'never'] }; +const patternProperties = { + type: 'object', + patternProperties: { '.*': enumValues } +}; +const properties = { + type: 'object', + properties: { + 'pattern': patternProperties, + 'ignorePackages': { type: 'boolean' } + } +}; + +function buildProperties(context) { + + const result = { + defaultConfig: 'never', + pattern: {}, + ignorePackages: false + }; + + context.options.forEach(obj => { + + // If this is a string, set defaultConfig to its value + if (typeof obj === 'string') { + result.defaultConfig = obj; + return; + } + + // If this is not the new structure, transfer all props to result.pattern + if (obj.pattern === undefined && obj.ignorePackages === undefined) { + Object.assign(result.pattern, obj); + return; + } + + // If pattern is provided, transfer all props + if (obj.pattern !== undefined) { + Object.assign(result.pattern, obj.pattern); + } + + // If ignorePackages is provided, transfer it to result + if (obj.ignorePackages !== undefined) { + result.ignorePackages = obj.ignorePackages; + } + }); + + if (result.defaultConfig === 'ignorePackages') { + result.defaultConfig = 'always'; + result.ignorePackages = true; + } + + return result; +} + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('extensions') + }, + + schema: { + anyOf: [{ + type: 'array', + items: [enumValues], + additionalItems: false + }, { + type: 'array', + items: [enumValues, properties], + additionalItems: false + }, { + type: 'array', + items: [properties], + additionalItems: false + }, { + type: 'array', + items: [patternProperties], + additionalItems: false + }, { + type: 'array', + items: [enumValues, patternProperties], + additionalItems: false + }] + } + }, + + create: function (context) { + + const props = buildProperties(context); + + function getModifier(extension) { + return props.pattern[extension] || props.defaultConfig; + } + + function isUseOfExtensionRequired(extension, isPackage) { + return getModifier(extension) === 'always' && (!props.ignorePackages || !isPackage); + } + + function isUseOfExtensionForbidden(extension) { + return getModifier(extension) === 'never'; + } + + function isResolvableWithoutExtension(file) { + const extension = _path2.default.extname(file); + const fileWithoutExtension = file.slice(0, -extension.length); + const resolvedFileWithoutExtension = (0, _resolve2.default)(fileWithoutExtension, context); + + return resolvedFileWithoutExtension === (0, _resolve2.default)(file, context); + } + + function isExternalRootModule(file) { + const slashCount = file.split('/').length - 1; + + if ((0, _importType.isScopedModule)(file) && slashCount <= 1) return true; + if ((0, _importType.isExternalModule)(file, context, (0, _resolve2.default)(file, context)) && !slashCount) return true; + return false; + } + + function checkFileExtension(node) { + const source = node.source; + + // bail if the declaration doesn't have a source, e.g. "export { foo };" + + if (!source) return; + + const importPathWithQueryString = source.value; + + // don't enforce anything on builtins + if ((0, _importType.isBuiltIn)(importPathWithQueryString, context.settings)) return; + + const importPath = importPathWithQueryString.replace(/\?(.*)$/, ''); + + // don't enforce in root external packages as they may have names with `.js`. + // Like `import Decimal from decimal.js`) + if (isExternalRootModule(importPath)) return; + + const resolvedPath = (0, _resolve2.default)(importPath, context); + + // get extension from resolved path, if possible. + // for unresolved, use source value. + const extension = _path2.default.extname(resolvedPath || importPath).substring(1); + + // determine if this is a module + const isPackage = (0, _importType.isExternalModule)(importPath, context.settings) || (0, _importType.isScoped)(importPath); + + if (!extension || !importPath.endsWith(`.${extension}`)) { + const extensionRequired = isUseOfExtensionRequired(extension, isPackage); + const extensionForbidden = isUseOfExtensionForbidden(extension); + if (extensionRequired && !extensionForbidden) { + context.report({ + node: source, + message: `Missing file extension ${extension ? `"${extension}" ` : ''}for "${importPathWithQueryString}"` + }); + } + } else if (extension) { + if (isUseOfExtensionForbidden(extension) && isResolvableWithoutExtension(importPath)) { + context.report({ + node: source, + message: `Unexpected use of file extension "${extension}" for "${importPathWithQueryString}"` + }); + } + } + } + + return { + ImportDeclaration: checkFileExtension, + ExportNamedDeclaration: checkFileExtension + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9leHRlbnNpb25zLmpzIl0sIm5hbWVzIjpbImVudW1WYWx1ZXMiLCJlbnVtIiwicGF0dGVyblByb3BlcnRpZXMiLCJ0eXBlIiwicHJvcGVydGllcyIsImJ1aWxkUHJvcGVydGllcyIsImNvbnRleHQiLCJyZXN1bHQiLCJkZWZhdWx0Q29uZmlnIiwicGF0dGVybiIsImlnbm9yZVBhY2thZ2VzIiwib3B0aW9ucyIsImZvckVhY2giLCJvYmoiLCJ1bmRlZmluZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJhbnlPZiIsIml0ZW1zIiwiYWRkaXRpb25hbEl0ZW1zIiwiY3JlYXRlIiwicHJvcHMiLCJnZXRNb2RpZmllciIsImV4dGVuc2lvbiIsImlzVXNlT2ZFeHRlbnNpb25SZXF1aXJlZCIsImlzUGFja2FnZSIsImlzVXNlT2ZFeHRlbnNpb25Gb3JiaWRkZW4iLCJpc1Jlc29sdmFibGVXaXRob3V0RXh0ZW5zaW9uIiwiZmlsZSIsInBhdGgiLCJleHRuYW1lIiwiZmlsZVdpdGhvdXRFeHRlbnNpb24iLCJzbGljZSIsImxlbmd0aCIsInJlc29sdmVkRmlsZVdpdGhvdXRFeHRlbnNpb24iLCJpc0V4dGVybmFsUm9vdE1vZHVsZSIsInNsYXNoQ291bnQiLCJzcGxpdCIsImNoZWNrRmlsZUV4dGVuc2lvbiIsIm5vZGUiLCJzb3VyY2UiLCJpbXBvcnRQYXRoV2l0aFF1ZXJ5U3RyaW5nIiwidmFsdWUiLCJzZXR0aW5ncyIsImltcG9ydFBhdGgiLCJyZXBsYWNlIiwicmVzb2x2ZWRQYXRoIiwic3Vic3RyaW5nIiwiZW5kc1dpdGgiLCJleHRlbnNpb25SZXF1aXJlZCIsImV4dGVuc2lvbkZvcmJpZGRlbiIsInJlcG9ydCIsIm1lc3NhZ2UiLCJJbXBvcnREZWNsYXJhdGlvbiIsIkV4cG9ydE5hbWVkRGVjbGFyYXRpb24iXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7QUFF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LEtBQVA7QUFJRDtBQS9IYyxDQUFqQiIsImZpbGUiOiJleHRlbnNpb25zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcblxuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuaW1wb3J0IHsgaXNCdWlsdEluLCBpc0V4dGVybmFsTW9kdWxlLCBpc1Njb3BlZCwgaXNTY29wZWRNb2R1bGUgfSBmcm9tICcuLi9jb3JlL2ltcG9ydFR5cGUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5jb25zdCBlbnVtVmFsdWVzID0geyBlbnVtOiBbICdhbHdheXMnLCAnaWdub3JlUGFja2FnZXMnLCAnbmV2ZXInIF0gfVxuY29uc3QgcGF0dGVyblByb3BlcnRpZXMgPSB7XG4gIHR5cGU6ICdvYmplY3QnLFxuICBwYXR0ZXJuUHJvcGVydGllczogeyAnLionOiBlbnVtVmFsdWVzIH0sXG59XG5jb25zdCBwcm9wZXJ0aWVzID0ge1xuICB0eXBlOiAnb2JqZWN0JyxcbiAgcHJvcGVydGllczoge1xuICAgICdwYXR0ZXJuJzogcGF0dGVyblByb3BlcnRpZXMsXG4gICAgJ2lnbm9yZVBhY2thZ2VzJzogeyB0eXBlOiAnYm9vbGVhbicgfSxcbiAgfSxcbn1cblxuZnVuY3Rpb24gYnVpbGRQcm9wZXJ0aWVzKGNvbnRleHQpIHtcblxuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIGRlZmF1bHRDb25maWc6ICduZXZlcicsXG4gICAgICBwYXR0ZXJuOiB7fSxcbiAgICAgIGlnbm9yZVBhY2thZ2VzOiBmYWxzZSxcbiAgICB9XG5cbiAgICBjb250ZXh0Lm9wdGlvbnMuZm9yRWFjaChvYmogPT4ge1xuXG4gICAgICAvLyBJZiB0aGlzIGlzIGEgc3RyaW5nLCBzZXQgZGVmYXVsdENvbmZpZyB0byBpdHMgdmFsdWVcbiAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXN1bHQuZGVmYXVsdENvbmZpZyA9IG9ialxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIG5ldyBzdHJ1Y3R1cmUsIHRyYW5zZmVyIGFsbCBwcm9wcyB0byByZXN1bHQucGF0dGVyblxuICAgICAgaWYgKG9iai5wYXR0ZXJuID09PSB1bmRlZmluZWQgJiYgb2JqLmlnbm9yZVBhY2thZ2VzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQucGF0dGVybiwgb2JqKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gSWYgcGF0dGVybiBpcyBwcm92aWRlZCwgdHJhbnNmZXIgYWxsIHByb3BzXG4gICAgICBpZiAob2JqLnBhdHRlcm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHJlc3VsdC5wYXR0ZXJuLCBvYmoucGF0dGVybilcbiAgICAgIH1cblxuICAgICAgLy8gSWYgaWdub3JlUGFja2FnZXMgaXMgcHJvdmlkZWQsIHRyYW5zZmVyIGl0IHRvIHJlc3VsdFxuICAgICAgaWYgKG9iai5pZ25vcmVQYWNrYWdlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlc3VsdC5pZ25vcmVQYWNrYWdlcyA9IG9iai5pZ25vcmVQYWNrYWdlc1xuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAocmVzdWx0LmRlZmF1bHRDb25maWcgPT09ICdpZ25vcmVQYWNrYWdlcycpIHtcbiAgICAgIHJlc3VsdC5kZWZhdWx0Q29uZmlnID0gJ2Fsd2F5cydcbiAgICAgIHJlc3VsdC5pZ25vcmVQYWNrYWdlcyA9IHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnZXh0ZW5zaW9ucycpLFxuICAgIH0sXG5cbiAgICBzY2hlbWE6IHtcbiAgICAgIGFueU9mOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiBbZW51bVZhbHVlc10sXG4gICAgICAgICAgYWRkaXRpb25hbEl0ZW1zOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICAgIGVudW1WYWx1ZXMsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWRkaXRpb25hbEl0ZW1zOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgaXRlbXM6IFtwcm9wZXJ0aWVzXSxcbiAgICAgICAgICBhZGRpdGlvbmFsSXRlbXM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczogW3BhdHRlcm5Qcm9wZXJ0aWVzXSxcbiAgICAgICAgICBhZGRpdGlvbmFsSXRlbXM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczogW1xuICAgICAgICAgICAgZW51bVZhbHVlcyxcbiAgICAgICAgICAgIHBhdHRlcm5Qcm9wZXJ0aWVzLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgYWRkaXRpb25hbEl0ZW1zOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG5cbiAgICBjb25zdCBwcm9wcyA9IGJ1aWxkUHJvcGVydGllcyhjb250ZXh0KVxuXG4gICAgZnVuY3Rpb24gZ2V0TW9kaWZpZXIoZXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm4gcHJvcHMucGF0dGVybltleHRlbnNpb25dIHx8IHByb3BzLmRlZmF1bHRDb25maWdcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc1VzZU9mRXh0ZW5zaW9uUmVxdWlyZWQoZXh0ZW5zaW9uLCBpc1BhY2thZ2UpIHtcbiAgICAgIHJldHVybiBnZXRNb2RpZmllcihleHRlbnNpb24pID09PSAnYWx3YXlzJyAmJiAoIXByb3BzLmlnbm9yZVBhY2thZ2VzIHx8ICFpc1BhY2thZ2UpXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNVc2VPZkV4dGVuc2lvbkZvcmJpZGRlbihleHRlbnNpb24pIHtcbiAgICAgIHJldHVybiBnZXRNb2RpZmllcihleHRlbnNpb24pID09PSAnbmV2ZXInXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNSZXNvbHZhYmxlV2l0aG91dEV4dGVuc2lvbihmaWxlKSB7XG4gICAgICBjb25zdCBleHRlbnNpb24gPSBwYXRoLmV4dG5hbWUoZmlsZSlcbiAgICAgIGNvbnN0IGZpbGVXaXRob3V0RXh0ZW5zaW9uID0gZmlsZS5zbGljZSgwLCAtZXh0ZW5zaW9uLmxlbmd0aClcbiAgICAgIGNvbnN0IHJlc29sdmVkRmlsZVdpdGhvdXRFeHRlbnNpb24gPSByZXNvbHZlKGZpbGVXaXRob3V0RXh0ZW5zaW9uLCBjb250ZXh0KVxuXG4gICAgICByZXR1cm4gcmVzb2x2ZWRGaWxlV2l0aG91dEV4dGVuc2lvbiA9PT0gcmVzb2x2ZShmaWxlLCBjb250ZXh0KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRXh0ZXJuYWxSb290TW9kdWxlKGZpbGUpIHtcbiAgICAgIGNvbnN0IHNsYXNoQ291bnQgPSBmaWxlLnNwbGl0KCcvJykubGVuZ3RoIC0gMVxuXG4gICAgICBpZiAoaXNTY29wZWRNb2R1bGUoZmlsZSkgJiYgc2xhc2hDb3VudCA8PSAxKSByZXR1cm4gdHJ1ZVxuICAgICAgaWYgKGlzRXh0ZXJuYWxNb2R1bGUoZmlsZSwgY29udGV4dCwgcmVzb2x2ZShmaWxlLCBjb250ZXh0KSkgJiYgIXNsYXNoQ291bnQpIHJldHVybiB0cnVlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja0ZpbGVFeHRlbnNpb24obm9kZSkge1xuICAgICAgY29uc3QgeyBzb3VyY2UgfSA9IG5vZGVcblxuICAgICAgLy8gYmFpbCBpZiB0aGUgZGVjbGFyYXRpb24gZG9lc24ndCBoYXZlIGEgc291cmNlLCBlLmcuIFwiZXhwb3J0IHsgZm9vIH07XCJcbiAgICAgIGlmICghc291cmNlKSByZXR1cm5cblxuICAgICAgY29uc3QgaW1wb3J0UGF0aFdpdGhRdWVyeVN0cmluZyA9IHNvdXJjZS52YWx1ZVxuXG4gICAgICAvLyBkb24ndCBlbmZvcmNlIGFueXRoaW5nIG9uIGJ1aWx0aW5zXG4gICAgICBpZiAoaXNCdWlsdEluKGltcG9ydFBhdGhXaXRoUXVlcnlTdHJpbmcsIGNvbnRleHQuc2V0dGluZ3MpKSByZXR1cm5cblxuICAgICAgY29uc3QgaW1wb3J0UGF0aCA9IGltcG9ydFBhdGhXaXRoUXVlcnlTdHJpbmcucmVwbGFjZSgvXFw/KC4qKSQvLCAnJylcblxuICAgICAgLy8gZG9uJ3QgZW5mb3JjZSBpbiByb290IGV4dGVybmFsIHBhY2thZ2VzIGFzIHRoZXkgbWF5IGhhdmUgbmFtZXMgd2l0aCBgLmpzYC5cbiAgICAgIC8vIExpa2UgYGltcG9ydCBEZWNpbWFsIGZyb20gZGVjaW1hbC5qc2ApXG4gICAgICBpZiAoaXNFeHRlcm5hbFJvb3RNb2R1bGUoaW1wb3J0UGF0aCkpIHJldHVyblxuXG4gICAgICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlKGltcG9ydFBhdGgsIGNvbnRleHQpXG5cbiAgICAgIC8vIGdldCBleHRlbnNpb24gZnJvbSByZXNvbHZlZCBwYXRoLCBpZiBwb3NzaWJsZS5cbiAgICAgIC8vIGZvciB1bnJlc29sdmVkLCB1c2Ugc291cmNlIHZhbHVlLlxuICAgICAgY29uc3QgZXh0ZW5zaW9uID0gcGF0aC5leHRuYW1lKHJlc29sdmVkUGF0aCB8fCBpbXBvcnRQYXRoKS5zdWJzdHJpbmcoMSlcblxuICAgICAgLy8gZGV0ZXJtaW5lIGlmIHRoaXMgaXMgYSBtb2R1bGVcbiAgICAgIGNvbnN0IGlzUGFja2FnZSA9IGlzRXh0ZXJuYWxNb2R1bGUoaW1wb3J0UGF0aCwgY29udGV4dC5zZXR0aW5ncylcbiAgICAgICAgfHwgaXNTY29wZWQoaW1wb3J0UGF0aClcblxuICAgICAgaWYgKCFleHRlbnNpb24gfHwgIWltcG9ydFBhdGguZW5kc1dpdGgoYC4ke2V4dGVuc2lvbn1gKSkge1xuICAgICAgICBjb25zdCBleHRlbnNpb25SZXF1aXJlZCA9IGlzVXNlT2ZFeHRlbnNpb25SZXF1aXJlZChleHRlbnNpb24sIGlzUGFja2FnZSlcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uRm9yYmlkZGVuID0gaXNVc2VPZkV4dGVuc2lvbkZvcmJpZGRlbihleHRlbnNpb24pXG4gICAgICAgIGlmIChleHRlbnNpb25SZXF1aXJlZCAmJiAhZXh0ZW5zaW9uRm9yYmlkZGVuKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZTogc291cmNlLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgYE1pc3NpbmcgZmlsZSBleHRlbnNpb24gJHtleHRlbnNpb24gPyBgXCIke2V4dGVuc2lvbn1cIiBgIDogJyd9Zm9yIFwiJHtpbXBvcnRQYXRoV2l0aFF1ZXJ5U3RyaW5nfVwiYCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGV4dGVuc2lvbikge1xuICAgICAgICBpZiAoaXNVc2VPZkV4dGVuc2lvbkZvcmJpZGRlbihleHRlbnNpb24pICYmIGlzUmVzb2x2YWJsZVdpdGhvdXRFeHRlbnNpb24oaW1wb3J0UGF0aCkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlOiBzb3VyY2UsXG4gICAgICAgICAgICBtZXNzYWdlOiBgVW5leHBlY3RlZCB1c2Ugb2YgZmlsZSBleHRlbnNpb24gXCIke2V4dGVuc2lvbn1cIiBmb3IgXCIke2ltcG9ydFBhdGhXaXRoUXVlcnlTdHJpbmd9XCJgLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgSW1wb3J0RGVjbGFyYXRpb246IGNoZWNrRmlsZUV4dGVuc2lvbixcbiAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb246IGNoZWNrRmlsZUV4dGVuc2lvbixcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/first.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/first.js new file mode 100644 index 0000000..751f26d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/first.js @@ -0,0 +1,128 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('first') + }, + fixable: 'code', + schema: [{ + type: 'string', + enum: ['absolute-first', 'disable-absolute-first'] + }] + }, + + create: function (context) { + function isPossibleDirective(node) { + return node.type === 'ExpressionStatement' && node.expression.type === 'Literal' && typeof node.expression.value === 'string'; + } + + return { + 'Program': function (n) { + const body = n.body, + absoluteFirst = context.options[0] === 'absolute-first', + message = 'Import in body of module; reorder to top.', + sourceCode = context.getSourceCode(), + originSourceCode = sourceCode.getText(); + let nonImportCount = 0, + anyExpressions = false, + anyRelative = false, + lastLegalImp = null, + errorInfos = [], + shouldSort = true, + lastSortNodesIndex = 0; + body.forEach(function (node, index) { + if (!anyExpressions && isPossibleDirective(node)) { + return; + } + + anyExpressions = true; + + if (node.type === 'ImportDeclaration') { + if (absoluteFirst) { + if (/^\./.test(node.source.value)) { + anyRelative = true; + } else if (anyRelative) { + context.report({ + node: node.source, + message: 'Absolute imports should come before relative imports.' + }); + } + } + if (nonImportCount > 0) { + for (let variable of context.getDeclaredVariables(node)) { + if (!shouldSort) break; + const references = variable.references; + if (references.length) { + for (let reference of references) { + if (reference.identifier.range[0] < node.range[1]) { + shouldSort = false; + break; + } + } + } + } + shouldSort && (lastSortNodesIndex = errorInfos.length); + errorInfos.push({ + node, + range: [body[index - 1].range[1], node.range[1]] + }); + } else { + lastLegalImp = node; + } + } else { + nonImportCount++; + } + }); + if (!errorInfos.length) return; + errorInfos.forEach(function (errorInfo, index) { + const node = errorInfo.node, + infos = { + node, + message + }; + if (index < lastSortNodesIndex) { + infos.fix = function (fixer) { + return fixer.insertTextAfter(node, ''); + }; + } else if (index === lastSortNodesIndex) { + const sortNodes = errorInfos.slice(0, lastSortNodesIndex + 1); + infos.fix = function (fixer) { + const removeFixers = sortNodes.map(function (_errorInfo) { + return fixer.removeRange(_errorInfo.range); + }), + range = [0, removeFixers[removeFixers.length - 1].range[1]]; + let insertSourceCode = sortNodes.map(function (_errorInfo) { + const nodeSourceCode = String.prototype.slice.apply(originSourceCode, _errorInfo.range); + if (/\S/.test(nodeSourceCode[0])) { + return '\n' + nodeSourceCode; + } + return nodeSourceCode; + }).join(''), + insertFixer = null, + replaceSourceCode = ''; + if (!lastLegalImp) { + insertSourceCode = insertSourceCode.trim() + insertSourceCode.match(/^(\s+)/)[0]; + } + insertFixer = lastLegalImp ? fixer.insertTextAfter(lastLegalImp, insertSourceCode) : fixer.insertTextBefore(body[0], insertSourceCode); + const fixers = [insertFixer].concat(removeFixers); + fixers.forEach(function (computedFixer, i) { + replaceSourceCode += originSourceCode.slice(fixers[i - 1] ? fixers[i - 1].range[1] : 0, computedFixer.range[0]) + computedFixer.text; + }); + return fixer.replaceTextRange(range, replaceSourceCode); + }; + } + context.report(infos); + }); + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9maXJzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwidXJsIiwiZml4YWJsZSIsInNjaGVtYSIsImVudW0iLCJjcmVhdGUiLCJjb250ZXh0IiwiaXNQb3NzaWJsZURpcmVjdGl2ZSIsIm5vZGUiLCJleHByZXNzaW9uIiwidmFsdWUiLCJuIiwiYm9keSIsImFic29sdXRlRmlyc3QiLCJvcHRpb25zIiwibWVzc2FnZSIsInNvdXJjZUNvZGUiLCJnZXRTb3VyY2VDb2RlIiwib3JpZ2luU291cmNlQ29kZSIsImdldFRleHQiLCJub25JbXBvcnRDb3VudCIsImFueUV4cHJlc3Npb25zIiwiYW55UmVsYXRpdmUiLCJsYXN0TGVnYWxJbXAiLCJlcnJvckluZm9zIiwic2hvdWxkU29ydCIsImxhc3RTb3J0Tm9kZXNJbmRleCIsImZvckVhY2giLCJpbmRleCIsInRlc3QiLCJzb3VyY2UiLCJyZXBvcnQiLCJ2YXJpYWJsZSIsImdldERlY2xhcmVkVmFyaWFibGVzIiwicmVmZXJlbmNlcyIsImxlbmd0aCIsInJlZmVyZW5jZSIsImlkZW50aWZpZXIiLCJyYW5nZSIsInB1c2giLCJlcnJvckluZm8iLCJpbmZvcyIsImZpeCIsImZpeGVyIiwiaW5zZXJ0VGV4dEFmdGVyIiwic29ydE5vZGVzIiwic2xpY2UiLCJyZW1vdmVGaXhlcnMiLCJtYXAiLCJfZXJyb3JJbmZvIiwicmVtb3ZlUmFuZ2UiLCJpbnNlcnRTb3VyY2VDb2RlIiwibm9kZVNvdXJjZUNvZGUiLCJTdHJpbmciLCJwcm90b3R5cGUiLCJhcHBseSIsImpvaW4iLCJpbnNlcnRGaXhlciIsInJlcGxhY2VTb3VyY2VDb2RlIiwidHJpbSIsIm1hdGNoIiwiaW5zZXJ0VGV4dEJlZm9yZSIsImZpeGVycyIsImNvbmNhdCIsImNvbXB1dGVkRml4ZXIiLCJpIiwidGV4dCIsInJlcGxhY2VUZXh0UmFuZ2UiXSwibWFwcGluZ3MiOiI7O0FBQUE7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QSxjQUFkO0FBQ0Q7QUFDRCx1QkFBT0EsY0FBUDtBQUNELGVBUmtCLEVBUWhCSSxJQVJnQixDQVFYLEVBUlcsQ0FBdkI7QUFBQSxrQkFTSUMsY0FBYyxJQVRsQjtBQUFBLGtCQVVJQyxvQkFBb0IsRUFWeEI7QUFXQSxrQkFBSSxDQUFDbkMsWUFBTCxFQUFtQjtBQUNmNEIsbUNBQ0VBLGlCQUFpQlEsSUFBakIsS0FBMEJSLGlCQUFpQlMsS0FBakIsQ0FBdUIsUUFBdkIsRUFBaUMsQ0FBakMsQ0FENUI7QUFFSDtBQUNESCw0QkFBY2xDLGVBQ0FvQixNQUFNQyxlQUFOLENBQXNCckIsWUFBdEIsRUFBb0M0QixnQkFBcEMsQ0FEQSxHQUVBUixNQUFNa0IsZ0JBQU4sQ0FBdUJqRCxLQUFLLENBQUwsQ0FBdkIsRUFBZ0N1QyxnQkFBaEMsQ0FGZDtBQUdBLG9CQUFNVyxTQUFTLENBQUNMLFdBQUQsRUFBY00sTUFBZCxDQUFxQmhCLFlBQXJCLENBQWY7QUFDQWUscUJBQU9uQyxPQUFQLENBQWUsVUFBVXFDLGFBQVYsRUFBeUJDLENBQXpCLEVBQTRCO0FBQ3pDUCxxQ0FBc0J4QyxpQkFBaUI0QixLQUFqQixDQUNwQmdCLE9BQU9HLElBQUksQ0FBWCxJQUFnQkgsT0FBT0csSUFBSSxDQUFYLEVBQWMzQixLQUFkLENBQW9CLENBQXBCLENBQWhCLEdBQXlDLENBRHJCLEVBQ3dCMEIsY0FBYzFCLEtBQWQsQ0FBb0IsQ0FBcEIsQ0FEeEIsSUFFbEIwQixjQUFjRSxJQUZsQjtBQUdELGVBSkQ7QUFLQSxxQkFBT3ZCLE1BQU13QixnQkFBTixDQUF1QjdCLEtBQXZCLEVBQThCb0IsaUJBQTlCLENBQVA7QUFDRCxhQTlCRDtBQStCRDtBQUNEcEQsa0JBQVF5QixNQUFSLENBQWVVLEtBQWY7QUFDRCxTQTdDRDtBQThDRDtBQXhHSSxLQUFQO0FBMEdEO0FBaEljLENBQWpCIiwiZmlsZSI6ImZpcnN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvY3NVcmwgZnJvbSAnLi4vZG9jc1VybCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCdmaXJzdCcpLFxuICAgIH0sXG4gICAgZml4YWJsZTogJ2NvZGUnLFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgZW51bTogWydhYnNvbHV0ZS1maXJzdCcsICdkaXNhYmxlLWFic29sdXRlLWZpcnN0J10sXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGZ1bmN0aW9uIGlzUG9zc2libGVEaXJlY3RpdmUgKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLnR5cGUgPT09ICdFeHByZXNzaW9uU3RhdGVtZW50JyAmJlxuICAgICAgICBub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gJ0xpdGVyYWwnICYmXG4gICAgICAgIHR5cGVvZiBub2RlLmV4cHJlc3Npb24udmFsdWUgPT09ICdzdHJpbmcnXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdQcm9ncmFtJzogZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgY29uc3QgYm9keSA9IG4uYm9keVxuICAgICAgICAgICAgLCBhYnNvbHV0ZUZpcnN0ID0gY29udGV4dC5vcHRpb25zWzBdID09PSAnYWJzb2x1dGUtZmlyc3QnXG4gICAgICAgICAgICAsIG1lc3NhZ2UgPSAnSW1wb3J0IGluIGJvZHkgb2YgbW9kdWxlOyByZW9yZGVyIHRvIHRvcC4nXG4gICAgICAgICAgICAsIHNvdXJjZUNvZGUgPSBjb250ZXh0LmdldFNvdXJjZUNvZGUoKVxuICAgICAgICAgICAgLCBvcmlnaW5Tb3VyY2VDb2RlID0gc291cmNlQ29kZS5nZXRUZXh0KClcbiAgICAgICAgbGV0IG5vbkltcG9ydENvdW50ID0gMFxuICAgICAgICAgICwgYW55RXhwcmVzc2lvbnMgPSBmYWxzZVxuICAgICAgICAgICwgYW55UmVsYXRpdmUgPSBmYWxzZVxuICAgICAgICAgICwgbGFzdExlZ2FsSW1wID0gbnVsbFxuICAgICAgICAgICwgZXJyb3JJbmZvcyA9IFtdXG4gICAgICAgICAgLCBzaG91bGRTb3J0ID0gdHJ1ZVxuICAgICAgICAgICwgbGFzdFNvcnROb2Rlc0luZGV4ID0gMFxuICAgICAgICBib2R5LmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGluZGV4KXtcbiAgICAgICAgICBpZiAoIWFueUV4cHJlc3Npb25zICYmIGlzUG9zc2libGVEaXJlY3RpdmUobm9kZSkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGFueUV4cHJlc3Npb25zID0gdHJ1ZVxuXG4gICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ0ltcG9ydERlY2xhcmF0aW9uJykge1xuICAgICAgICAgICAgaWYgKGFic29sdXRlRmlyc3QpIHtcbiAgICAgICAgICAgICAgaWYgKC9eXFwuLy50ZXN0KG5vZGUuc291cmNlLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGFueVJlbGF0aXZlID0gdHJ1ZVxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFueVJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICAgICAgbm9kZTogbm9kZS5zb3VyY2UsXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnQWJzb2x1dGUgaW1wb3J0cyBzaG91bGQgY29tZSBiZWZvcmUgcmVsYXRpdmUgaW1wb3J0cy4nLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub25JbXBvcnRDb3VudCA+IDApIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgdmFyaWFibGUgb2YgY29udGV4dC5nZXREZWNsYXJlZFZhcmlhYmxlcyhub2RlKSkge1xuICAgICAgICAgICAgICAgIGlmICghc2hvdWxkU29ydCkgYnJlYWtcbiAgICAgICAgICAgICAgICBjb25zdCByZWZlcmVuY2VzID0gdmFyaWFibGUucmVmZXJlbmNlc1xuICAgICAgICAgICAgICAgIGlmIChyZWZlcmVuY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcmVmZXJlbmNlIG9mIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlZmVyZW5jZS5pZGVudGlmaWVyLnJhbmdlWzBdIDwgbm9kZS5yYW5nZVsxXSkge1xuICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFNvcnQgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2hvdWxkU29ydCAmJiAobGFzdFNvcnROb2Rlc0luZGV4ID0gZXJyb3JJbmZvcy5sZW5ndGgpXG4gICAgICAgICAgICAgIGVycm9ySW5mb3MucHVzaCh7XG4gICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICByYW5nZTogW2JvZHlbaW5kZXggLSAxXS5yYW5nZVsxXSwgbm9kZS5yYW5nZVsxXV0sXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBsYXN0TGVnYWxJbXAgPSBub2RlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5vbkltcG9ydENvdW50KytcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIGlmICghZXJyb3JJbmZvcy5sZW5ndGgpIHJldHVyblxuICAgICAgICBlcnJvckluZm9zLmZvckVhY2goZnVuY3Rpb24gKGVycm9ySW5mbywgaW5kZXgpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gZXJyb3JJbmZvLm5vZGVcbiAgICAgICAgICAgICAgLCBpbmZvcyA9IHtcbiAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaW5kZXggPCBsYXN0U29ydE5vZGVzSW5kZXgpIHtcbiAgICAgICAgICAgIGluZm9zLmZpeCA9IGZ1bmN0aW9uIChmaXhlcikge1xuICAgICAgICAgICAgICByZXR1cm4gZml4ZXIuaW5zZXJ0VGV4dEFmdGVyKG5vZGUsICcnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IGxhc3RTb3J0Tm9kZXNJbmRleCkge1xuICAgICAgICAgICAgY29uc3Qgc29ydE5vZGVzID0gZXJyb3JJbmZvcy5zbGljZSgwLCBsYXN0U29ydE5vZGVzSW5kZXggKyAxKVxuICAgICAgICAgICAgaW5mb3MuZml4ID0gZnVuY3Rpb24gKGZpeGVyKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlbW92ZUZpeGVycyA9IHNvcnROb2Rlcy5tYXAoZnVuY3Rpb24gKF9lcnJvckluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpeGVyLnJlbW92ZVJhbmdlKF9lcnJvckluZm8ucmFuZ2UpXG4gICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgLCByYW5nZSA9IFswLCByZW1vdmVGaXhlcnNbcmVtb3ZlRml4ZXJzLmxlbmd0aCAtIDFdLnJhbmdlWzFdXVxuICAgICAgICAgICAgICBsZXQgaW5zZXJ0U291cmNlQ29kZSA9IHNvcnROb2Rlcy5tYXAoZnVuY3Rpb24gKF9lcnJvckluZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZVNvdXJjZUNvZGUgPSBTdHJpbmcucHJvdG90eXBlLnNsaWNlLmFwcGx5KFxuICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblNvdXJjZUNvZGUsIF9lcnJvckluZm8ucmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpZiAoL1xcUy8udGVzdChub2RlU291cmNlQ29kZVswXSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1xcbicgKyBub2RlU291cmNlQ29kZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlU291cmNlQ29kZVxuICAgICAgICAgICAgICAgICAgfSkuam9pbignJylcbiAgICAgICAgICAgICAgICAsIGluc2VydEZpeGVyID0gbnVsbFxuICAgICAgICAgICAgICAgICwgcmVwbGFjZVNvdXJjZUNvZGUgPSAnJ1xuICAgICAgICAgICAgICBpZiAoIWxhc3RMZWdhbEltcCkge1xuICAgICAgICAgICAgICAgICAgaW5zZXJ0U291cmNlQ29kZSA9XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFNvdXJjZUNvZGUudHJpbSgpICsgaW5zZXJ0U291cmNlQ29kZS5tYXRjaCgvXihcXHMrKS8pWzBdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaW5zZXJ0Rml4ZXIgPSBsYXN0TGVnYWxJbXAgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeGVyLmluc2VydFRleHRBZnRlcihsYXN0TGVnYWxJbXAsIGluc2VydFNvdXJjZUNvZGUpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlci5pbnNlcnRUZXh0QmVmb3JlKGJvZHlbMF0sIGluc2VydFNvdXJjZUNvZGUpXG4gICAgICAgICAgICAgIGNvbnN0IGZpeGVycyA9IFtpbnNlcnRGaXhlcl0uY29uY2F0KHJlbW92ZUZpeGVycylcbiAgICAgICAgICAgICAgZml4ZXJzLmZvckVhY2goZnVuY3Rpb24gKGNvbXB1dGVkRml4ZXIsIGkpIHtcbiAgICAgICAgICAgICAgICByZXBsYWNlU291cmNlQ29kZSArPSAob3JpZ2luU291cmNlQ29kZS5zbGljZShcbiAgICAgICAgICAgICAgICAgIGZpeGVyc1tpIC0gMV0gPyBmaXhlcnNbaSAtIDFdLnJhbmdlWzFdIDogMCwgY29tcHV0ZWRGaXhlci5yYW5nZVswXVxuICAgICAgICAgICAgICAgICkgKyBjb21wdXRlZEZpeGVyLnRleHQpXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIHJldHVybiBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKHJhbmdlLCByZXBsYWNlU291cmNlQ29kZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoaW5mb3MpXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/group-exports.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/group-exports.js new file mode 100644 index 0000000..fb2cf71 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/group-exports.js @@ -0,0 +1,133 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +var _object = require('object.values'); + +var _object2 = _interopRequireDefault(_object); + +var _arrayPrototype = require('array.prototype.flat'); + +var _arrayPrototype2 = _interopRequireDefault(_arrayPrototype); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const meta = { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('group-exports') + } + /* eslint-disable max-len */ +};const errors = { + ExportNamedDeclaration: 'Multiple named export declarations; consolidate all named exports into a single export declaration', + AssignmentExpression: 'Multiple CommonJS exports; consolidate all exports into a single assignment to `module.exports`' + /* eslint-enable max-len */ + + /** + * Returns an array with names of the properties in the accessor chain for MemberExpression nodes + * + * Example: + * + * `module.exports = {}` => ['module', 'exports'] + * `module.exports.property = true` => ['module', 'exports', 'property'] + * + * @param {Node} node AST Node (MemberExpression) + * @return {Array} Array with the property names in the chain + * @private + */ +};function accessorChain(node) { + const chain = []; + + do { + chain.unshift(node.property.name); + + if (node.object.type === 'Identifier') { + chain.unshift(node.object.name); + break; + } + + node = node.object; + } while (node.type === 'MemberExpression'); + + return chain; +} + +function create(context) { + const nodes = { + modules: new Set(), + commonjs: new Set(), + sources: {} + }; + + return { + ExportNamedDeclaration(node) { + if (!node.source) { + nodes.modules.add(node); + } else if (Array.isArray(nodes.sources[node.source.value])) { + nodes.sources[node.source.value].push(node); + } else { + nodes.sources[node.source.value] = [node]; + } + }, + + AssignmentExpression(node) { + if (node.left.type !== 'MemberExpression') { + return; + } + + const chain = accessorChain(node.left); + + // Assignments to module.exports + // Deeper assignments are ignored since they just modify what's already being exported + // (ie. module.exports.exported.prop = true is ignored) + if (chain[0] === 'module' && chain[1] === 'exports' && chain.length <= 3) { + nodes.commonjs.add(node); + return; + } + + // Assignments to exports (exports.* = *) + if (chain[0] === 'exports' && chain.length === 2) { + nodes.commonjs.add(node); + return; + } + }, + + 'Program:exit': function onExit() { + // Report multiple `export` declarations (ES2015 modules) + if (nodes.modules.size > 1) { + nodes.modules.forEach(node => { + context.report({ + node, + message: errors[node.type] + }); + }); + } + + // Report multiple `aggregated exports` from the same module (ES2015 modules) + (0, _arrayPrototype2.default)((0, _object2.default)(nodes.sources).filter(nodesWithSource => Array.isArray(nodesWithSource) && nodesWithSource.length > 1)).forEach(node => { + context.report({ + node, + message: errors[node.type] + }); + }); + + // Report multiple `module.exports` assignments (CommonJS) + if (nodes.commonjs.size > 1) { + nodes.commonjs.forEach(node => { + context.report({ + node, + message: errors[node.type] + }); + }); + } + } + }; +} + +module.exports = { + meta, + create +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9ncm91cC1leHBvcnRzLmpzIl0sIm5hbWVzIjpbIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsImVycm9ycyIsIkV4cG9ydE5hbWVkRGVjbGFyYXRpb24iLCJBc3NpZ25tZW50RXhwcmVzc2lvbiIsImFjY2Vzc29yQ2hhaW4iLCJub2RlIiwiY2hhaW4iLCJ1bnNoaWZ0IiwicHJvcGVydHkiLCJuYW1lIiwib2JqZWN0IiwiY3JlYXRlIiwiY29udGV4dCIsIm5vZGVzIiwibW9kdWxlcyIsIlNldCIsImNvbW1vbmpzIiwic291cmNlcyIsInNvdXJjZSIsImFkZCIsIkFycmF5IiwiaXNBcnJheSIsInZhbHVlIiwicHVzaCIsImxlZnQiLCJsZW5ndGgiLCJvbkV4aXQiLCJzaXplIiwiZm9yRWFjaCIsInJlcG9ydCIsIm1lc3NhZ2UiLCJmaWx0ZXIiLCJub2Rlc1dpdGhTb3VyY2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsTUFBTUEsT0FBTztBQUNYQyxRQUFNLFlBREs7QUFFWEMsUUFBTTtBQUNKQyxTQUFLLHVCQUFRLGVBQVI7QUFERDtBQUlSO0FBTmEsQ0FBYixDQU9BLE1BQU1DLFNBQVM7QUFDYkMsMEJBQXdCLG9HQURYO0FBRWJDLHdCQUFzQjtBQUV4Qjs7QUFFQTs7Ozs7Ozs7Ozs7O0FBTmUsQ0FBZixDQWtCQSxTQUFTQyxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUMzQixRQUFNQyxRQUFRLEVBQWQ7O0FBRUEsS0FBRztBQUNEQSxVQUFNQyxPQUFOLENBQWNGLEtBQUtHLFFBQUwsQ0FBY0MsSUFBNUI7O0FBRUEsUUFBSUosS0FBS0ssTUFBTCxDQUFZWixJQUFaLEtBQXFCLFlBQXpCLEVBQXVDO0FBQ3JDUSxZQUFNQyxPQUFOLENBQWNGLEtBQUtLLE1BQUwsQ0FBWUQsSUFBMUI7QUFDQTtBQUNEOztBQUVESixXQUFPQSxLQUFLSyxNQUFaO0FBQ0Qs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ICcuLi9kb2NzVXJsJ1xuaW1wb3J0IHZhbHVlcyBmcm9tICdvYmplY3QudmFsdWVzJ1xuaW1wb3J0IGZsYXQgZnJvbSAnYXJyYXkucHJvdG90eXBlLmZsYXQnXG5cbmNvbnN0IG1ldGEgPSB7XG4gIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgZG9jczoge1xuICAgIHVybDogZG9jc1VybCgnZ3JvdXAtZXhwb3J0cycpLFxuICB9LFxufVxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xuY29uc3QgZXJyb3JzID0ge1xuICBFeHBvcnROYW1lZERlY2xhcmF0aW9uOiAnTXVsdGlwbGUgbmFtZWQgZXhwb3J0IGRlY2xhcmF0aW9uczsgY29uc29saWRhdGUgYWxsIG5hbWVkIGV4cG9ydHMgaW50byBhIHNpbmdsZSBleHBvcnQgZGVjbGFyYXRpb24nLFxuICBBc3NpZ25tZW50RXhwcmVzc2lvbjogJ011bHRpcGxlIENvbW1vbkpTIGV4cG9ydHM7IGNvbnNvbGlkYXRlIGFsbCBleHBvcnRzIGludG8gYSBzaW5nbGUgYXNzaWdubWVudCB0byBgbW9kdWxlLmV4cG9ydHNgJyxcbn1cbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG4vKipcbiAqIFJldHVybnMgYW4gYXJyYXkgd2l0aCBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyBpbiB0aGUgYWNjZXNzb3IgY2hhaW4gZm9yIE1lbWJlckV4cHJlc3Npb24gbm9kZXNcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBtb2R1bGUuZXhwb3J0cyA9IHt9YCA9PiBbJ21vZHVsZScsICdleHBvcnRzJ11cbiAqIGBtb2R1bGUuZXhwb3J0cy5wcm9wZXJ0eSA9IHRydWVgID0+IFsnbW9kdWxlJywgJ2V4cG9ydHMnLCAncHJvcGVydHknXVxuICpcbiAqIEBwYXJhbSAgICAge05vZGV9ICAgIG5vZGUgICAgQVNUIE5vZGUgKE1lbWJlckV4cHJlc3Npb24pXG4gKiBAcmV0dXJuICAgIHtBcnJheX0gICAgICAgICAgIEFycmF5IHdpdGggdGhlIHByb3BlcnR5IG5hbWVzIGluIHRoZSBjaGFpblxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gYWNjZXNzb3JDaGFpbihub2RlKSB7XG4gIGNvbnN0IGNoYWluID0gW11cblxuICBkbyB7XG4gICAgY2hhaW4udW5zaGlmdChub2RlLnByb3BlcnR5Lm5hbWUpXG5cbiAgICBpZiAobm9kZS5vYmplY3QudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICBjaGFpbi51bnNoaWZ0KG5vZGUub2JqZWN0Lm5hbWUpXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIG5vZGUgPSBub2RlLm9iamVjdFxuICB9IHdoaWxlIChub2RlLnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJylcblxuICByZXR1cm4gY2hhaW5cbn1cblxuZnVuY3Rpb24gY3JlYXRlKGNvbnRleHQpIHtcbiAgY29uc3Qgbm9kZXMgPSB7XG4gICAgbW9kdWxlczogbmV3IFNldCgpLFxuICAgIGNvbW1vbmpzOiBuZXcgU2V0KCksXG4gICAgc291cmNlczoge30sXG4gIH1cblxuICByZXR1cm4ge1xuICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb24obm9kZSkge1xuICAgICAgaWYgKCFub2RlLnNvdXJjZSkge1xuICAgICAgICBub2Rlcy5tb2R1bGVzLmFkZChub2RlKVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5vZGVzLnNvdXJjZXNbbm9kZS5zb3VyY2UudmFsdWVdKSkge1xuICAgICAgICBub2Rlcy5zb3VyY2VzW25vZGUuc291cmNlLnZhbHVlXS5wdXNoKG5vZGUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2Rlcy5zb3VyY2VzW25vZGUuc291cmNlLnZhbHVlXSA9IFtub2RlXVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBBc3NpZ25tZW50RXhwcmVzc2lvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5sZWZ0LnR5cGUgIT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgY2hhaW4gPSBhY2Nlc3NvckNoYWluKG5vZGUubGVmdClcblxuICAgICAgLy8gQXNzaWdubWVudHMgdG8gbW9kdWxlLmV4cG9ydHNcbiAgICAgIC8vIERlZXBlciBhc3NpZ25tZW50cyBhcmUgaWdub3JlZCBzaW5jZSB0aGV5IGp1c3QgbW9kaWZ5IHdoYXQncyBhbHJlYWR5IGJlaW5nIGV4cG9ydGVkXG4gICAgICAvLyAoaWUuIG1vZHVsZS5leHBvcnRzLmV4cG9ydGVkLnByb3AgPSB0cnVlIGlzIGlnbm9yZWQpXG4gICAgICBpZiAoY2hhaW5bMF0gPT09ICdtb2R1bGUnICYmIGNoYWluWzFdID09PSAnZXhwb3J0cycgJiYgY2hhaW4ubGVuZ3RoIDw9IDMpIHtcbiAgICAgICAgbm9kZXMuY29tbW9uanMuYWRkKG5vZGUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBBc3NpZ25tZW50cyB0byBleHBvcnRzIChleHBvcnRzLiogPSAqKVxuICAgICAgaWYgKGNoYWluWzBdID09PSAnZXhwb3J0cycgJiYgY2hhaW4ubGVuZ3RoID09PSAyKSB7XG4gICAgICAgIG5vZGVzLmNvbW1vbmpzLmFkZChub2RlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJ1Byb2dyYW06ZXhpdCc6IGZ1bmN0aW9uIG9uRXhpdCgpIHtcbiAgICAgIC8vIFJlcG9ydCBtdWx0aXBsZSBgZXhwb3J0YCBkZWNsYXJhdGlvbnMgKEVTMjAxNSBtb2R1bGVzKVxuICAgICAgaWYgKG5vZGVzLm1vZHVsZXMuc2l6ZSA+IDEpIHtcbiAgICAgICAgbm9kZXMubW9kdWxlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvcnNbbm9kZS50eXBlXSxcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBSZXBvcnQgbXVsdGlwbGUgYGFnZ3JlZ2F0ZWQgZXhwb3J0c2AgZnJvbSB0aGUgc2FtZSBtb2R1bGUgKEVTMjAxNSBtb2R1bGVzKVxuICAgICAgZmxhdCh2YWx1ZXMobm9kZXMuc291cmNlcylcbiAgICAgICAgLmZpbHRlcihub2Rlc1dpdGhTb3VyY2UgPT4gQXJyYXkuaXNBcnJheShub2Rlc1dpdGhTb3VyY2UpICYmIG5vZGVzV2l0aFNvdXJjZS5sZW5ndGggPiAxKSlcbiAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogZXJyb3JzW25vZGUudHlwZV0sXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgLy8gUmVwb3J0IG11bHRpcGxlIGBtb2R1bGUuZXhwb3J0c2AgYXNzaWdubWVudHMgKENvbW1vbkpTKVxuICAgICAgaWYgKG5vZGVzLmNvbW1vbmpzLnNpemUgPiAxKSB7XG4gICAgICAgIG5vZGVzLmNvbW1vbmpzLmZvckVhY2gobm9kZSA9PiB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yc1tub2RlLnR5cGVdLFxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YSxcbiAgY3JlYXRlLFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/imports-first.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/imports-first.js new file mode 100644 index 0000000..77fd18d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/imports-first.js @@ -0,0 +1,19 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const first = require('./first'); + +const newMeta = Object.assign({}, first.meta, { + deprecated: true, + docs: { + url: (0, _docsUrl2.default)('imports-first', '7b25c1cb95ee18acc1531002fd343e1e6031f9ed') + } +}); + +module.exports = Object.assign({}, first, { meta: newMeta }); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9pbXBvcnRzLWZpcnN0LmpzIl0sIm5hbWVzIjpbImZpcnN0IiwicmVxdWlyZSIsIm5ld01ldGEiLCJPYmplY3QiLCJhc3NpZ24iLCJtZXRhIiwiZGVwcmVjYXRlZCIsImRvY3MiLCJ1cmwiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7QUFFQSxNQUFNQSxRQUFRQyxRQUFRLFNBQVIsQ0FBZDs7QUFFQSxNQUFNQyxVQUFVQyxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQkosTUFBTUssSUFBeEIsRUFBOEI7QUFDNUNDLGNBQVksSUFEZ0M7QUFFNUNDLFFBQU07QUFDSkMsU0FBSyx1QkFBUSxlQUFSLEVBQXlCLDBDQUF6QjtBQUREO0FBRnNDLENBQTlCLENBQWhCOztBQU9BQyxPQUFPQyxPQUFQLEdBQWlCUCxPQUFPQyxNQUFQLENBQWMsRUFBZCxFQUFrQkosS0FBbEIsRUFBeUIsRUFBRUssTUFBTUgsT0FBUixFQUF6QixDQUFqQiIsImZpbGUiOiJpbXBvcnRzLWZpcnN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvY3NVcmwgZnJvbSAnLi4vZG9jc1VybCdcblxuY29uc3QgZmlyc3QgPSByZXF1aXJlKCcuL2ZpcnN0JylcblxuY29uc3QgbmV3TWV0YSA9IE9iamVjdC5hc3NpZ24oe30sIGZpcnN0Lm1ldGEsIHtcbiAgZGVwcmVjYXRlZDogdHJ1ZSxcbiAgZG9jczoge1xuICAgIHVybDogZG9jc1VybCgnaW1wb3J0cy1maXJzdCcsICc3YjI1YzFjYjk1ZWUxOGFjYzE1MzEwMDJmZDM0M2UxZTYwMzFmOWVkJyksXG4gIH0sXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5hc3NpZ24oe30sIGZpcnN0LCB7IG1ldGE6IG5ld01ldGEgfSlcbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/max-dependencies.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/max-dependencies.js new file mode 100644 index 0000000..d7f2f49 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/max-dependencies.js @@ -0,0 +1,71 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const DEFAULT_MAX = 10; + +const countDependencies = (dependencies, lastNode, context) => { + var _ref = context.options[0] || { max: DEFAULT_MAX }; + + const max = _ref.max; + + + if (dependencies.size > max) { + context.report(lastNode, `Maximum number of dependencies (${max}) exceeded.`); + } +}; + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('max-dependencies') + }, + + schema: [{ + 'type': 'object', + 'properties': { + 'max': { 'type': 'number' } + }, + 'additionalProperties': false + }] + }, + + create: context => { + const dependencies = new Set(); // keep track of dependencies + let lastNode; // keep track of the last node to report on + + return { + ImportDeclaration(node) { + dependencies.add(node.source.value); + lastNode = node.source; + }, + + CallExpression(node) { + if ((0, _staticRequire2.default)(node)) { + var _node$arguments = _slicedToArray(node.arguments, 1); + + const requirePath = _node$arguments[0]; + + dependencies.add(requirePath.value); + lastNode = node; + } + }, + + 'Program:exit': function () { + countDependencies(dependencies, lastNode, context); + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9tYXgtZGVwZW5kZW5jaWVzLmpzIl0sIm5hbWVzIjpbIkRFRkFVTFRfTUFYIiwiY291bnREZXBlbmRlbmNpZXMiLCJkZXBlbmRlbmNpZXMiLCJsYXN0Tm9kZSIsImNvbnRleHQiLCJvcHRpb25zIiwibWF4Iiwic2l6ZSIsInJlcG9ydCIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJTZXQiLCJJbXBvcnREZWNsYXJhdGlvbiIsIm5vZGUiLCJhZGQiLCJzb3VyY2UiLCJ2YWx1ZSIsIkNhbGxFeHByZXNzaW9uIiwiYXJndW1lbnRzIiwicmVxdWlyZVBhdGgiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7Ozs7QUFFQSxNQUFNQSxjQUFjLEVBQXBCOztBQUVBLE1BQU1DLG9CQUFvQixDQUFDQyxZQUFELEVBQWVDLFFBQWYsRUFBeUJDLE9BQXpCLEtBQXFDO0FBQUEsYUFDL0NBLFFBQVFDLE9BQVIsQ0FBZ0IsQ0FBaEIsS0FBc0IsRUFBRUMsS0FBS04sV0FBUCxFQUR5Qjs7QUFBQSxRQUN0RE0sR0FEc0QsUUFDdERBLEdBRHNEOzs7QUFHN0QsTUFBSUosYUFBYUssSUFBYixHQUFvQkQsR0FBeEIsRUFBNkI7QUFDM0JGLFlBQVFJLE1BQVIsQ0FDRUwsUUFERixFQUVHLG1DQUFrQ0csR0FBSSxhQUZ6QztBQUlEO0FBQ0YsQ0FURDs7QUFXQUcsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sWUFERjtBQUVKQyxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsa0JBQVI7QUFERCxLQUZGOztBQU1KQyxZQUFRLENBQ047QUFDRSxjQUFRLFFBRFY7QUFFRSxvQkFBYztBQUNaLGVBQU8sRUFBRSxRQUFRLFFBQVY7QUFESyxPQUZoQjtBQUtFLDhCQUF3QjtBQUwxQixLQURNO0FBTkosR0FEUzs7QUFrQmZDLFVBQVFaLFdBQVc7QUFDakIsVUFBTUYsZUFBZSxJQUFJZSxHQUFKLEVBQXJCLENBRGlCLENBQ2M7QUFDL0IsUUFBSWQsUUFBSixDQUZpQixDQUVKOztBQUViLFdBQU87QUFDTGUsd0JBQWtCQyxJQUFsQixFQUF3QjtBQUN0QmpCLHFCQUFha0IsR0FBYixDQUFpQkQsS0FBS0UsTUFBTCxDQUFZQyxLQUE3QjtBQUNBbkIsbUJBQVdnQixLQUFLRSxNQUFoQjtBQUNELE9BSkk7O0FBTUxFLHFCQUFlSixJQUFmLEVBQXFCO0FBQ25CLFlBQUksNkJBQWdCQSxJQUFoQixDQUFKLEVBQTJCO0FBQUEsK0NBQ0RBLEtBQUtLLFNBREo7O0FBQUEsZ0JBQ2pCQyxXQURpQjs7QUFFekJ2Qix1QkFBYWtCLEdBQWIsQ0FBaUJLLFlBQVlILEtBQTdCO0FBQ0FuQixxQkFBV2dCLElBQVg7QUFDRDtBQUNGLE9BWkk7O0FBY0wsc0JBQWdCLFlBQVk7QUFDMUJsQiwwQkFBa0JDLFlBQWxCLEVBQWdDQyxRQUFoQyxFQUEwQ0MsT0FBMUM7QUFDRDtBQWhCSSxLQUFQO0FBa0JEO0FBeENjLENBQWpCIiwiZmlsZSI6Im1heC1kZXBlbmRlbmNpZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNTdGF0aWNSZXF1aXJlIGZyb20gJy4uL2NvcmUvc3RhdGljUmVxdWlyZSdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbmNvbnN0IERFRkFVTFRfTUFYID0gMTBcblxuY29uc3QgY291bnREZXBlbmRlbmNpZXMgPSAoZGVwZW5kZW5jaWVzLCBsYXN0Tm9kZSwgY29udGV4dCkgPT4ge1xuICBjb25zdCB7bWF4fSA9IGNvbnRleHQub3B0aW9uc1swXSB8fCB7IG1heDogREVGQVVMVF9NQVggfVxuXG4gIGlmIChkZXBlbmRlbmNpZXMuc2l6ZSA+IG1heCkge1xuICAgIGNvbnRleHQucmVwb3J0KFxuICAgICAgbGFzdE5vZGUsXG4gICAgICBgTWF4aW11bSBudW1iZXIgb2YgZGVwZW5kZW5jaWVzICgke21heH0pIGV4Y2VlZGVkLmBcbiAgICApXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCdtYXgtZGVwZW5kZW5jaWVzJyksXG4gICAgfSxcblxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICAndHlwZSc6ICdvYmplY3QnLFxuICAgICAgICAncHJvcGVydGllcyc6IHtcbiAgICAgICAgICAnbWF4JzogeyAndHlwZSc6ICdudW1iZXInIH0sXG4gICAgICAgIH0sXG4gICAgICAgICdhZGRpdGlvbmFsUHJvcGVydGllcyc6IGZhbHNlLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuXG4gIGNyZWF0ZTogY29udGV4dCA9PiB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gbmV3IFNldCgpIC8vIGtlZXAgdHJhY2sgb2YgZGVwZW5kZW5jaWVzXG4gICAgbGV0IGxhc3ROb2RlIC8vIGtlZXAgdHJhY2sgb2YgdGhlIGxhc3Qgbm9kZSB0byByZXBvcnQgb25cblxuICAgIHJldHVybiB7XG4gICAgICBJbXBvcnREZWNsYXJhdGlvbihub2RlKSB7XG4gICAgICAgIGRlcGVuZGVuY2llcy5hZGQobm9kZS5zb3VyY2UudmFsdWUpXG4gICAgICAgIGxhc3ROb2RlID0gbm9kZS5zb3VyY2VcbiAgICAgIH0sXG5cbiAgICAgIENhbGxFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljUmVxdWlyZShub2RlKSkge1xuICAgICAgICAgIGNvbnN0IFsgcmVxdWlyZVBhdGggXSA9IG5vZGUuYXJndW1lbnRzXG4gICAgICAgICAgZGVwZW5kZW5jaWVzLmFkZChyZXF1aXJlUGF0aC52YWx1ZSlcbiAgICAgICAgICBsYXN0Tm9kZSA9IG5vZGVcbiAgICAgICAgfVxuICAgICAgfSxcblxuICAgICAgJ1Byb2dyYW06ZXhpdCc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY291bnREZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzLCBsYXN0Tm9kZSwgY29udGV4dClcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/named.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/named.js new file mode 100644 index 0000000..62dcb64 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/named.js @@ -0,0 +1,76 @@ +'use strict'; + +var _path = require('path'); + +var path = _interopRequireWildcard(_path); + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('named') + }, + schema: [] + }, + + create: function (context) { + function checkSpecifiers(key, type, node) { + // ignore local exports and type imports/exports + if (node.source == null || node.importKind === 'type' || node.importKind === 'typeof' || node.exportKind === 'type') { + return; + } + + if (!node.specifiers.some(function (im) { + return im.type === type; + })) { + return; // no named imports/exports + } + + const imports = _ExportMap2.default.get(node.source.value, context); + if (imports == null) return; + + if (imports.errors.length) { + imports.reportErrors(context, node); + return; + } + + node.specifiers.forEach(function (im) { + if (im.type !== type) return; + + // ignore type imports + if (im.importKind === 'type' || im.importKind === 'typeof') return; + + const deepLookup = imports.hasDeep(im[key].name); + + if (!deepLookup.found) { + if (deepLookup.path.length > 1) { + const deepPath = deepLookup.path.map(i => path.relative(path.dirname(context.getFilename()), i.path)).join(' -> '); + + context.report(im[key], `${im[key].name} not found via ${deepPath}`); + } else { + context.report(im[key], im[key].name + ' not found in \'' + node.source.value + '\''); + } + } + }); + } + + return { + 'ImportDeclaration': checkSpecifiers.bind(null, 'imported', 'ImportSpecifier'), + + 'ExportNamedDeclaration': checkSpecifiers.bind(null, 'local', 'ExportSpecifier') + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uYW1lZC5qcyJdLCJuYW1lcyI6WyJwYXRoIiwibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsImNvbnRleHQiLCJjaGVja1NwZWNpZmllcnMiLCJrZXkiLCJub2RlIiwic291cmNlIiwiaW1wb3J0S2luZCIsImV4cG9ydEtpbmQiLCJzcGVjaWZpZXJzIiwic29tZSIsImltIiwiaW1wb3J0cyIsIkV4cG9ydHMiLCJnZXQiLCJ2YWx1ZSIsImVycm9ycyIsImxlbmd0aCIsInJlcG9ydEVycm9ycyIsImZvckVhY2giLCJkZWVwTG9va3VwIiwiaGFzRGVlcCIsIm5hbWUiLCJmb3VuZCIsImRlZXBQYXRoIiwibWFwIiwiaSIsInJlbGF0aXZlIiwiZGlybmFtZSIsImdldEZpbGVuYW1lIiwiam9pbiIsInJlcG9ydCIsImJpbmQiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0lBQVlBLEk7O0FBQ1o7Ozs7QUFDQTs7Ozs7Ozs7QUFFQUMsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sU0FERjtBQUVKQyxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsT0FBUjtBQURELEtBRkY7QUFLSkMsWUFBUTtBQUxKLEdBRFM7O0FBU2ZDLFVBQVEsVUFBVUMsT0FBVixFQUFtQjtBQUN6QixhQUFTQyxlQUFULENBQXlCQyxHQUF6QixFQUE4QlAsSUFBOUIsRUFBb0NRLElBQXBDLEVBQTBDO0FBQ3hDO0FBQ0EsVUFBSUEsS0FBS0MsTUFBTCxJQUFlLElBQWYsSUFBdUJELEtBQUtFLFVBQUwsS0FBb0IsTUFBM0MsSUFDQUYsS0FBS0UsVUFBTCxLQUFvQixRQURwQixJQUNpQ0YsS0FBS0csVUFBTCxLQUFvQixNQUR6RCxFQUNpRTtBQUMvRDtBQUNEOztBQUVELFVBQUksQ0FBQ0gsS0FBS0ksVUFBTCxDQUNFQyxJQURGLENBQ08sVUFBVUMsRUFBVixFQUFjO0FBQUUsZUFBT0EsR0FBR2QsSUFBSCxLQUFZQSxJQUFuQjtBQUF5QixPQURoRCxDQUFMLEVBQ3dEO0FBQ3RELGVBRHNELENBQy9DO0FBQ1I7O0FBRUQsWUFBTWUsVUFBVUMsb0JBQVFDLEdBQVIsQ0FBWVQsS0FBS0MsTUFBTCxDQUFZUyxLQUF4QixFQUErQmIsT0FBL0IsQ0FBaEI7QUFDQSxVQUFJVSxXQUFXLElBQWYsRUFBcUI7O0FBRXJCLFVBQUlBLFFBQVFJLE1BQVIsQ0FBZUMsTUFBbkIsRUFBMkI7QUFDekJMLGdCQUFRTSxZQUFSLENBQXFCaEIsT0FBckIsRUFBOEJHLElBQTlCO0FBQ0E7QUFDRDs7QUFFREEsV0FBS0ksVUFBTCxDQUFnQlUsT0FBaEIsQ0FBd0IsVUFBVVIsRUFBVixFQUFjO0FBQ3BDLFlBQUlBLEdBQUdkLElBQUgsS0FBWUEsSUFBaEIsRUFBc0I7O0FBRXRCO0FBQ0EsWUFBSWMsR0FBR0osVUFBSCxLQUFrQixNQUFsQixJQUE0QkksR0FBR0osVUFBSCxLQUFrQixRQUFsRCxFQUE0RDs7QUFFNUQsY0FBTWEsYUFBYVIsUUFBUVMsT0FBUixDQUFnQlYsR0FBR1AsR0FBSCxFQUFRa0IsSUFBeEIsQ0FBbkI7O0FBRUEsWUFBSSxDQUFDRixXQUFXRyxLQUFoQixFQUF1QjtBQUNyQixjQUFJSCxXQUFXM0IsSUFBWCxDQUFnQndCLE1BQWhCLEdBQXlCLENBQTdCLEVBQWdDO0FBQzlCLGtCQUFNTyxXQUFXSixXQUFXM0IsSUFBWCxDQUNkZ0MsR0FEYyxDQUNWQyxLQUFLakMsS0FBS2tDLFFBQUwsQ0FBY2xDLEtBQUttQyxPQUFMLENBQWExQixRQUFRMkIsV0FBUixFQUFiLENBQWQsRUFBbURILEVBQUVqQyxJQUFyRCxDQURLLEVBRWRxQyxJQUZjLENBRVQsTUFGUyxDQUFqQjs7QUFJQTVCLG9CQUFRNkIsTUFBUixDQUFlcEIsR0FBR1AsR0FBSCxDQUFmLEVBQ0csR0FBRU8sR0FBR1AsR0FBSCxFQUFRa0IsSUFBSyxrQkFBaUJFLFFBQVMsRUFENUM7QUFFRCxXQVBELE1BT087QUFDTHRCLG9CQUFRNkIsTUFBUixDQUFlcEIsR0FBR1AsR0FBSCxDQUFmLEVBQ0VPLEdBQUdQLEdBQUgsRUFBUWtCLElBQVIsR0FBZSxrQkFBZixHQUFvQ2pCLEtBQUtDLE1BQUwsQ0FBWVMsS0FBaEQsR0FBd0QsSUFEMUQ7QUFFRDtBQUNGO0FBQ0YsT0FyQkQ7QUFzQkQ7O0FBRUQsV0FBTztBQUNMLDJCQUFxQlosZ0JBQWdCNkIsSUFBaEIsQ0FBc0IsSUFBdEIsRUFDc0IsVUFEdEIsRUFFc0IsaUJBRnRCLENBRGhCOztBQU1MLGdDQUEwQjdCLGdCQUFnQjZCLElBQWhCLENBQXNCLElBQXRCLEVBQ3NCLE9BRHRCLEVBRXNCLGlCQUZ0QjtBQU5yQixLQUFQO0FBWUQ7QUFsRWMsQ0FBakIiLCJmaWxlIjoibmFtZWQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9FeHBvcnRNYXAnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25hbWVkJyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBmdW5jdGlvbiBjaGVja1NwZWNpZmllcnMoa2V5LCB0eXBlLCBub2RlKSB7XG4gICAgICAvLyBpZ25vcmUgbG9jYWwgZXhwb3J0cyBhbmQgdHlwZSBpbXBvcnRzL2V4cG9ydHNcbiAgICAgIGlmIChub2RlLnNvdXJjZSA9PSBudWxsIHx8IG5vZGUuaW1wb3J0S2luZCA9PT0gJ3R5cGUnIHx8XG4gICAgICAgICAgbm9kZS5pbXBvcnRLaW5kID09PSAndHlwZW9mJyAgfHwgbm9kZS5leHBvcnRLaW5kID09PSAndHlwZScpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmICghbm9kZS5zcGVjaWZpZXJzXG4gICAgICAgICAgICAuc29tZShmdW5jdGlvbiAoaW0pIHsgcmV0dXJuIGltLnR5cGUgPT09IHR5cGUgfSkpIHtcbiAgICAgICAgcmV0dXJuIC8vIG5vIG5hbWVkIGltcG9ydHMvZXhwb3J0c1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbXBvcnRzID0gRXhwb3J0cy5nZXQobm9kZS5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm5cblxuICAgICAgaWYgKGltcG9ydHMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICBpbXBvcnRzLnJlcG9ydEVycm9ycyhjb250ZXh0LCBub2RlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbm9kZS5zcGVjaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKGltKSB7XG4gICAgICAgIGlmIChpbS50eXBlICE9PSB0eXBlKSByZXR1cm5cblxuICAgICAgICAvLyBpZ25vcmUgdHlwZSBpbXBvcnRzXG4gICAgICAgIGlmIChpbS5pbXBvcnRLaW5kID09PSAndHlwZScgfHwgaW0uaW1wb3J0S2luZCA9PT0gJ3R5cGVvZicpIHJldHVyblxuXG4gICAgICAgIGNvbnN0IGRlZXBMb29rdXAgPSBpbXBvcnRzLmhhc0RlZXAoaW1ba2V5XS5uYW1lKVxuXG4gICAgICAgIGlmICghZGVlcExvb2t1cC5mb3VuZCkge1xuICAgICAgICAgIGlmIChkZWVwTG9va3VwLnBhdGgubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgY29uc3QgZGVlcFBhdGggPSBkZWVwTG9va3VwLnBhdGhcbiAgICAgICAgICAgICAgLm1hcChpID0+IHBhdGgucmVsYXRpdmUocGF0aC5kaXJuYW1lKGNvbnRleHQuZ2V0RmlsZW5hbWUoKSksIGkucGF0aCkpXG4gICAgICAgICAgICAgIC5qb2luKCcgLT4gJylcblxuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoaW1ba2V5XSxcbiAgICAgICAgICAgICAgYCR7aW1ba2V5XS5uYW1lfSBub3QgZm91bmQgdmlhICR7ZGVlcFBhdGh9YClcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoaW1ba2V5XSxcbiAgICAgICAgICAgICAgaW1ba2V5XS5uYW1lICsgJyBub3QgZm91bmQgaW4gXFwnJyArIG5vZGUuc291cmNlLnZhbHVlICsgJ1xcJycpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAnSW1wb3J0RGVjbGFyYXRpb24nOiBjaGVja1NwZWNpZmllcnMuYmluZCggbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdpbXBvcnRlZCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnSW1wb3J0U3BlY2lmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbic6IGNoZWNrU3BlY2lmaWVycy5iaW5kKCBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnbG9jYWwnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnRXhwb3J0U3BlY2lmaWVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgfVxuXG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/namespace.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/namespace.js new file mode 100644 index 0000000..0554188 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/namespace.js @@ -0,0 +1,223 @@ +'use strict'; + +var _declaredScope = require('eslint-module-utils/declaredScope'); + +var _declaredScope2 = _interopRequireDefault(_declaredScope); + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _importDeclaration = require('../importDeclaration'); + +var _importDeclaration2 = _interopRequireDefault(_importDeclaration); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('namespace') + }, + + schema: [{ + 'type': 'object', + 'properties': { + 'allowComputed': { + 'description': 'If `false`, will report computed (and thus, un-lintable) references ' + 'to namespace members.', + 'type': 'boolean', + 'default': false + } + }, + 'additionalProperties': false + }] + }, + + create: function namespaceRule(context) { + + // read options + var _ref = context.options[0] || {}, + _ref$allowComputed = _ref.allowComputed; + + const allowComputed = _ref$allowComputed === undefined ? false : _ref$allowComputed; + + + const namespaces = new Map(); + + function makeMessage(last, namepath) { + return `'${last.name}' not found in` + (namepath.length > 1 ? ' deeply ' : ' ') + `imported namespace '${namepath.join('.')}'.`; + } + + return { + + // pick up all imports at body entry time, to properly respect hoisting + Program: function (_ref2) { + let body = _ref2.body; + + function processBodyStatement(declaration) { + if (declaration.type !== 'ImportDeclaration') return; + + if (declaration.specifiers.length === 0) return; + + const imports = _ExportMap2.default.get(declaration.source.value, context); + if (imports == null) return null; + + if (imports.errors.length) { + imports.reportErrors(context, declaration); + return; + } + + for (const specifier of declaration.specifiers) { + switch (specifier.type) { + case 'ImportNamespaceSpecifier': + if (!imports.size) { + context.report(specifier, `No exported names found in module '${declaration.source.value}'.`); + } + namespaces.set(specifier.local.name, imports); + break; + case 'ImportDefaultSpecifier': + case 'ImportSpecifier': + { + const meta = imports.get( + // default to 'default' for default http://i.imgur.com/nj6qAWy.jpg + specifier.imported ? specifier.imported.name : 'default'); + if (!meta || !meta.namespace) break; + namespaces.set(specifier.local.name, meta.namespace); + break; + } + } + } + } + body.forEach(processBodyStatement); + }, + + // same as above, but does not add names to local map + ExportNamespaceSpecifier: function (namespace) { + var declaration = (0, _importDeclaration2.default)(context); + + var imports = _ExportMap2.default.get(declaration.source.value, context); + if (imports == null) return null; + + if (imports.errors.length) { + imports.reportErrors(context, declaration); + return; + } + + if (!imports.size) { + context.report(namespace, `No exported names found in module '${declaration.source.value}'.`); + } + }, + + // todo: check for possible redefinition + + MemberExpression: function (dereference) { + if (dereference.object.type !== 'Identifier') return; + if (!namespaces.has(dereference.object.name)) return; + + if (dereference.parent.type === 'AssignmentExpression' && dereference.parent.left === dereference) { + context.report(dereference.parent, `Assignment to member of namespace '${dereference.object.name}'.`); + } + + // go deep + var namespace = namespaces.get(dereference.object.name); + var namepath = [dereference.object.name]; + // while property is namespace and parent is member expression, keep validating + while (namespace instanceof _ExportMap2.default && dereference.type === 'MemberExpression') { + + if (dereference.computed) { + if (!allowComputed) { + context.report(dereference.property, 'Unable to validate computed reference to imported namespace \'' + dereference.object.name + '\'.'); + } + return; + } + + if (!namespace.has(dereference.property.name)) { + context.report(dereference.property, makeMessage(dereference.property, namepath)); + break; + } + + const exported = namespace.get(dereference.property.name); + if (exported == null) return; + + // stash and pop + namepath.push(dereference.property.name); + namespace = exported.namespace; + dereference = dereference.parent; + } + }, + + VariableDeclarator: function (_ref3) { + let id = _ref3.id, + init = _ref3.init; + + if (init == null) return; + if (init.type !== 'Identifier') return; + if (!namespaces.has(init.name)) return; + + // check for redefinition in intermediate scopes + if ((0, _declaredScope2.default)(context, init.name) !== 'module') return; + + // DFS traverse child namespaces + function testKey(pattern, namespace) { + let path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [init.name]; + + if (!(namespace instanceof _ExportMap2.default)) return; + + if (pattern.type !== 'ObjectPattern') return; + + for (const property of pattern.properties) { + if (property.type === 'ExperimentalRestProperty' || property.type === 'RestElement' || !property.key) { + continue; + } + + if (property.key.type !== 'Identifier') { + context.report({ + node: property, + message: 'Only destructure top-level names.' + }); + continue; + } + + if (!namespace.has(property.key.name)) { + context.report({ + node: property, + message: makeMessage(property.key, path) + }); + continue; + } + + path.push(property.key.name); + const dependencyExportMap = namespace.get(property.key.name); + // could be null when ignored or ambiguous + if (dependencyExportMap !== null) { + testKey(property.value, dependencyExportMap.namespace, path); + } + path.pop(); + } + } + + testKey(id, namespaces.get(init.name)); + }, + + JSXMemberExpression: function (_ref4) { + let object = _ref4.object, + property = _ref4.property; + + if (!namespaces.has(object.name)) return; + var namespace = namespaces.get(object.name); + if (!namespace.has(property.name)) { + context.report({ + node: property, + message: makeMessage(property, [object.name]) + }); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uYW1lc3BhY2UuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsIm5hbWVzcGFjZVJ1bGUiLCJjb250ZXh0Iiwib3B0aW9ucyIsImFsbG93Q29tcHV0ZWQiLCJuYW1lc3BhY2VzIiwiTWFwIiwibWFrZU1lc3NhZ2UiLCJsYXN0IiwibmFtZXBhdGgiLCJuYW1lIiwibGVuZ3RoIiwiam9pbiIsIlByb2dyYW0iLCJib2R5IiwicHJvY2Vzc0JvZHlTdGF0ZW1lbnQiLCJkZWNsYXJhdGlvbiIsInNwZWNpZmllcnMiLCJpbXBvcnRzIiwiRXhwb3J0cyIsImdldCIsInNvdXJjZSIsInZhbHVlIiwiZXJyb3JzIiwicmVwb3J0RXJyb3JzIiwic3BlY2lmaWVyIiwic2l6ZSIsInJlcG9ydCIsInNldCIsImxvY2FsIiwiaW1wb3J0ZWQiLCJuYW1lc3BhY2UiLCJmb3JFYWNoIiwiRXhwb3J0TmFtZXNwYWNlU3BlY2lmaWVyIiwiTWVtYmVyRXhwcmVzc2lvbiIsImRlcmVmZXJlbmNlIiwib2JqZWN0IiwiaGFzIiwicGFyZW50IiwibGVmdCIsImNvbXB1dGVkIiwicHJvcGVydHkiLCJleHBvcnRlZCIsInB1c2giLCJWYXJpYWJsZURlY2xhcmF0b3IiLCJpZCIsImluaXQiLCJ0ZXN0S2V5IiwicGF0dGVybiIsInBhdGgiLCJwcm9wZXJ0aWVzIiwia2V5Iiwibm9kZSIsIm1lc3NhZ2UiLCJkZXBlbmRlbmN5RXhwb3J0TWFwIiwicG9wIiwiSlNYTWVtYmVyRXhwcmVzc2lvbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFNBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLFdBQVI7QUFERCxLQUZGOztBQU1KQyxZQUFRLENBQ047QUFDRSxjQUFRLFFBRFY7QUFFRSxvQkFBYztBQUNaLHlCQUFpQjtBQUNmLHlCQUNFLHlFQUNBLHVCQUhhO0FBSWYsa0JBQVEsU0FKTztBQUtmLHFCQUFXO0FBTEk7QUFETCxPQUZoQjtBQVdFLDhCQUF3QjtBQVgxQixLQURNO0FBTkosR0FEUzs7QUF3QmZDLFVBQVEsU0FBU0MsYUFBVCxDQUF1QkMsT0FBdkIsRUFBZ0M7O0FBRXRDO0FBRnNDLGVBS2xDQSxRQUFRQyxPQUFSLENBQWdCLENBQWhCLEtBQXNCLEVBTFk7QUFBQSxrQ0FJcENDLGFBSm9DOztBQUFBLFVBSXBDQSxhQUpvQyxzQ0FJcEIsS0FKb0I7OztBQU90QyxVQUFNQyxhQUFhLElBQUlDLEdBQUosRUFBbkI7O0FBRUEsYUFBU0MsV0FBVCxDQUFxQkMsSUFBckIsRUFBMkJDLFFBQTNCLEVBQXFDO0FBQ2xDLGFBQVEsSUFBR0QsS0FBS0UsSUFBSyxnQkFBZCxJQUNDRCxTQUFTRSxNQUFULEdBQWtCLENBQWxCLEdBQXNCLFVBQXRCLEdBQW1DLEdBRHBDLElBRUMsdUJBQXNCRixTQUFTRyxJQUFULENBQWMsR0FBZCxDQUFtQixJQUZqRDtBQUdGOztBQUVELFdBQU87O0FBRUw7QUFDQUMsZUFBUyxpQkFBb0I7QUFBQSxZQUFSQyxJQUFRLFNBQVJBLElBQVE7O0FBQzNCLGlCQUFTQyxvQkFBVCxDQUE4QkMsV0FBOUIsRUFBMkM7QUFDekMsY0FBSUEsWUFBWXBCLElBQVosS0FBcUIsbUJBQXpCLEVBQThDOztBQUU5QyxjQUFJb0IsWUFBWUMsVUFBWixDQUF1Qk4sTUFBdkIsS0FBa0MsQ0FBdEMsRUFBeUM7O0FBRXpDLGdCQUFNTyxVQUFVQyxvQkFBUUMsR0FBUixDQUFZSixZQUFZSyxNQUFaLENBQW1CQyxLQUEvQixFQUFzQ3BCLE9BQXRDLENBQWhCO0FBQ0EsY0FBSWdCLFdBQVcsSUFBZixFQUFxQixPQUFPLElBQVA7O0FBRXJCLGNBQUlBLFFBQVFLLE1BQVIsQ0FBZVosTUFBbkIsRUFBMkI7QUFDekJPLG9CQUFRTSxZQUFSLENBQXFCdEIsT0FBckIsRUFBOEJjLFdBQTlCO0FBQ0E7QUFDRDs7QUFFRCxlQUFLLE1BQU1TLFNBQVgsSUFBd0JULFlBQVlDLFVBQXBDLEVBQWdEO0FBQzlDLG9CQUFRUSxVQUFVN0IsSUFBbEI7QUFDRSxtQkFBSywwQkFBTDtBQUNFLG9CQUFJLENBQUNzQixRQUFRUSxJQUFiLEVBQW1CO0FBQ2pCeEIsMEJBQVF5QixNQUFSLENBQWVGLFNBQWYsRUFDRyxzQ0FBcUNULFlBQVlLLE1BQVosQ0FBbUJDLEtBQU0sSUFEakU7QUFFRDtBQUNEakIsMkJBQVd1QixHQUFYLENBQWVILFVBQVVJLEtBQVYsQ0FBZ0JuQixJQUEvQixFQUFxQ1EsT0FBckM7QUFDQTtBQUNGLG1CQUFLLHdCQUFMO0FBQ0EsbUJBQUssaUJBQUw7QUFBd0I7QUFDdEIsd0JBQU12QixPQUFPdUIsUUFBUUUsR0FBUjtBQUNYO0FBQ0FLLDRCQUFVSyxRQUFWLEdBQXFCTCxVQUFVSyxRQUFWLENBQW1CcEIsSUFBeEMsR0FBK0MsU0FGcEMsQ0FBYjtBQUdBLHNCQUFJLENBQUNmLElBQUQsSUFBUyxDQUFDQSxLQUFLb0MsU0FBbkIsRUFBOEI7QUFDOUIxQiw2QkFBV3VCLEdBQVgsQ0FBZUgsVUFBVUksS0FBVixDQUFnQm5CLElBQS9CLEVBQXFDZixLQUFLb0MsU0FBMUM7QUFDQTtBQUNEO0FBaEJIO0FBa0JEO0FBQ0Y7QUFDRGpCLGFBQUtrQixPQUFMLENBQWFqQixvQkFBYjtBQUNELE9BdkNJOztBQXlDTDtBQUNBa0IsZ0NBQTBCLFVBQVVGLFNBQVYsRUFBcUI7QUFDN0MsWUFBSWYsY0FBYyxpQ0FBa0JkLE9BQWxCLENBQWxCOztBQUVBLFlBQUlnQixVQUFVQyxvQkFBUUMsR0FBUixDQUFZSixZQUFZSyxNQUFaLENBQW1CQyxLQUEvQixFQUFzQ3BCLE9BQXRDLENBQWQ7QUFDQSxZQUFJZ0IsV0FBVyxJQUFmLEVBQXFCLE9BQU8sSUFBUDs7QUFFckIsWUFBSUEsUUFBUUssTUFBUixDQUFlWixNQUFuQixFQUEyQjtBQUN6Qk8sa0JBQVFNLFlBQVIsQ0FBcUJ0QixPQUFyQixFQUE4QmMsV0FBOUI7QUFDQTtBQUNEOztBQUVELFlBQUksQ0FBQ0UsUUFBUVEsSUFBYixFQUFtQjtBQUNqQnhCLGtCQUFReUIsTUFBUixDQUFlSSxTQUFmLEVBQ0csc0NBQXFDZixZQUFZSyxNQUFaLENBQW1CQyxLQUFNLElBRGpFO0FBRUQ7QUFDRixPQXpESTs7QUEyREw7O0FBRUFZLHdCQUFrQixVQUFVQyxXQUFWLEVBQXVCO0FBQ3ZDLFlBQUlBLFlBQVlDLE1BQVosQ0FBbUJ4QyxJQUFuQixLQUE0QixZQUFoQyxFQUE4QztBQUM5QyxZQUFJLENBQUNTLFdBQVdnQyxHQUFYLENBQWVGLFlBQVlDLE1BQVosQ0FBbUIxQixJQUFsQyxDQUFMLEVBQThDOztBQUU5QyxZQUFJeUIsWUFBWUcsTUFBWixDQUFtQjFDLElBQW5CLEtBQTRCLHNCQUE1QixJQUNBdUMsWUFBWUcsTUFBWixDQUFtQkMsSUFBbkIsS0FBNEJKLFdBRGhDLEVBQzZDO0FBQ3pDakMsa0JBQVF5QixNQUFSLENBQWVRLFlBQVlHLE1BQTNCLEVBQ0ssc0NBQXFDSCxZQUFZQyxNQUFaLENBQW1CMUIsSUFBSyxJQURsRTtBQUVIOztBQUVEO0FBQ0EsWUFBSXFCLFlBQVkxQixXQUFXZSxHQUFYLENBQWVlLFlBQVlDLE1BQVosQ0FBbUIxQixJQUFsQyxDQUFoQjtBQUNBLFlBQUlELFdBQVcsQ0FBQzBCLFlBQVlDLE1BQVosQ0FBbUIxQixJQUFwQixDQUFmO0FBQ0E7QUFDQSxlQUFPcUIscUJBQXFCWixtQkFBckIsSUFDQWdCLFlBQVl2QyxJQUFaLEtBQXFCLGtCQUQ1QixFQUNnRDs7QUFFOUMsY0FBSXVDLFlBQVlLLFFBQWhCLEVBQTBCO0FBQ3hCLGdCQUFJLENBQUNwQyxhQUFMLEVBQW9CO0FBQ2xCRixzQkFBUXlCLE1BQVIsQ0FBZVEsWUFBWU0sUUFBM0IsRUFDRSxtRUFDQU4sWUFBWUMsTUFBWixDQUFtQjFCLElBRG5CLEdBQzBCLEtBRjVCO0FBR0Q7QUFDRDtBQUNEOztBQUVELGNBQUksQ0FBQ3FCLFVBQVVNLEdBQVYsQ0FBY0YsWUFBWU0sUUFBWixDQUFxQi9CLElBQW5DLENBQUwsRUFBK0M7QUFDN0NSLG9CQUFReUIsTUFBUixDQUNFUSxZQUFZTSxRQURkLEVBRUVsQyxZQUFZNEIsWUFBWU0sUUFBeEIsRUFBa0NoQyxRQUFsQyxDQUZGO0FBR0E7QUFDRDs7QUFFRCxnQkFBTWlDLFdBQVdYLFVBQVVYLEdBQVYsQ0FBY2UsWUFBWU0sUUFBWixDQUFxQi9CLElBQW5DLENBQWpCO0FBQ0EsY0FBSWdDLFlBQVksSUFBaEIsRUFBc0I7O0FBRXRCO0FBQ0FqQyxtQkFBU2tDLElBQVQsQ0FBY1IsWUFBWU0sUUFBWixDQUFxQi9CLElBQW5DO0FBQ0FxQixzQkFBWVcsU0FBU1gsU0FBckI7QUFDQUksd0JBQWNBLFlBQVlHLE1BQTFCO0FBQ0Q7QUFFRixPQXZHSTs7QUF5R0xNLDBCQUFvQixpQkFBd0I7QUFBQSxZQUFaQyxFQUFZLFNBQVpBLEVBQVk7QUFBQSxZQUFSQyxJQUFRLFNBQVJBLElBQVE7O0FBQzFDLFlBQUlBLFFBQVEsSUFBWixFQUFrQjtBQUNsQixZQUFJQSxLQUFLbEQsSUFBTCxLQUFjLFlBQWxCLEVBQWdDO0FBQ2hDLFlBQUksQ0FBQ1MsV0FBV2dDLEdBQVgsQ0FBZVMsS0FBS3BDLElBQXBCLENBQUwsRUFBZ0M7O0FBRWhDO0FBQ0EsWUFBSSw2QkFBY1IsT0FBZCxFQUF1QjRDLEtBQUtwQyxJQUE1QixNQUFzQyxRQUExQyxFQUFvRDs7QUFFcEQ7QUFDQSxpQkFBU3FDLE9BQVQsQ0FBaUJDLE9BQWpCLEVBQTBCakIsU0FBMUIsRUFBeUQ7QUFBQSxjQUFwQmtCLElBQW9CLHVFQUFiLENBQUNILEtBQUtwQyxJQUFOLENBQWE7O0FBQ3ZELGNBQUksRUFBRXFCLHFCQUFxQlosbUJBQXZCLENBQUosRUFBcUM7O0FBRXJDLGNBQUk2QixRQUFRcEQsSUFBUixLQUFpQixlQUFyQixFQUFzQzs7QUFFdEMsZUFBSyxNQUFNNkMsUUFBWCxJQUF1Qk8sUUFBUUUsVUFBL0IsRUFBMkM7QUFDekMsZ0JBQ0VULFNBQVM3QyxJQUFULEtBQWtCLDBCQUFsQixJQUNHNkMsU0FBUzdDLElBQVQsS0FBa0IsYUFEckIsSUFFRyxDQUFDNkMsU0FBU1UsR0FIZixFQUlFO0FBQ0E7QUFDRDs7QUFFRCxnQkFBSVYsU0FBU1UsR0FBVCxDQUFhdkQsSUFBYixLQUFzQixZQUExQixFQUF3QztBQUN0Q00sc0JBQVF5QixNQUFSLENBQWU7QUFDYnlCLHNCQUFNWCxRQURPO0FBRWJZLHlCQUFTO0FBRkksZUFBZjtBQUlBO0FBQ0Q7O0FBRUQsZ0JBQUksQ0FBQ3RCLFVBQVVNLEdBQVYsQ0FBY0ksU0FBU1UsR0FBVCxDQUFhekMsSUFBM0IsQ0FBTCxFQUF1QztBQUNyQ1Isc0JBQVF5QixNQUFSLENBQWU7QUFDYnlCLHNCQUFNWCxRQURPO0FBRWJZLHlCQUFTOUMsWUFBWWtDLFNBQVNVLEdBQXJCLEVBQTBCRixJQUExQjtBQUZJLGVBQWY7QUFJQTtBQUNEOztBQUVEQSxpQkFBS04sSUFBTCxDQUFVRixTQUFTVSxHQUFULENBQWF6QyxJQUF2QjtBQUNBLGtCQUFNNEMsc0JBQXNCdkIsVUFBVVgsR0FBVixDQUFjcUIsU0FBU1UsR0FBVCxDQUFhekMsSUFBM0IsQ0FBNUI7QUFDQTtBQUNBLGdCQUFJNEMsd0JBQXdCLElBQTVCLEVBQWtDO0FBQ2hDUCxzQkFBUU4sU0FBU25CLEtBQWpCLEVBQXdCZ0Msb0JBQW9CdkIsU0FBNUMsRUFBdURrQixJQUF2RDtBQUNEO0FBQ0RBLGlCQUFLTSxHQUFMO0FBQ0Q7QUFDRjs7QUFFRFIsZ0JBQVFGLEVBQVIsRUFBWXhDLFdBQVdlLEdBQVgsQ0FBZTBCLEtBQUtwQyxJQUFwQixDQUFaO0FBQ0QsT0EzSkk7O0FBNkpMOEMsMkJBQXFCLGlCQUE2QjtBQUFBLFlBQW5CcEIsTUFBbUIsU0FBbkJBLE1BQW1CO0FBQUEsWUFBWEssUUFBVyxTQUFYQSxRQUFXOztBQUMvQyxZQUFJLENBQUNwQyxXQUFXZ0MsR0FBWCxDQUFlRCxPQUFPMUIsSUFBdEIsQ0FBTCxFQUFrQztBQUNsQyxZQUFJcUIsWUFBWTFCLFdBQVdlLEdBQVgsQ0FBZWdCLE9BQU8xQixJQUF0QixDQUFoQjtBQUNBLFlBQUksQ0FBQ3FCLFVBQVVNLEdBQVYsQ0FBY0ksU0FBUy9CLElBQXZCLENBQUwsRUFBbUM7QUFDakNSLGtCQUFReUIsTUFBUixDQUFlO0FBQ2J5QixrQkFBTVgsUUFETztBQUViWSxxQkFBUzlDLFlBQVlrQyxRQUFaLEVBQXNCLENBQUNMLE9BQU8xQixJQUFSLENBQXRCO0FBRkksV0FBZjtBQUlEO0FBQ0g7QUF0S0ksS0FBUDtBQXdLRDtBQS9NYyxDQUFqQiIsImZpbGUiOiJuYW1lc3BhY2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVjbGFyZWRTY29wZSBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL2RlY2xhcmVkU2NvcGUnXG5pbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9FeHBvcnRNYXAnXG5pbXBvcnQgaW1wb3J0RGVjbGFyYXRpb24gZnJvbSAnLi4vaW1wb3J0RGVjbGFyYXRpb24nXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25hbWVzcGFjZScpLFxuICAgIH0sXG5cbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgJ3R5cGUnOiAnb2JqZWN0JyxcbiAgICAgICAgJ3Byb3BlcnRpZXMnOiB7XG4gICAgICAgICAgJ2FsbG93Q29tcHV0ZWQnOiB7XG4gICAgICAgICAgICAnZGVzY3JpcHRpb24nOlxuICAgICAgICAgICAgICAnSWYgYGZhbHNlYCwgd2lsbCByZXBvcnQgY29tcHV0ZWQgKGFuZCB0aHVzLCB1bi1saW50YWJsZSkgcmVmZXJlbmNlcyAnICtcbiAgICAgICAgICAgICAgJ3RvIG5hbWVzcGFjZSBtZW1iZXJzLicsXG4gICAgICAgICAgICAndHlwZSc6ICdib29sZWFuJyxcbiAgICAgICAgICAgICdkZWZhdWx0JzogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgJ2FkZGl0aW9uYWxQcm9wZXJ0aWVzJzogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbiBuYW1lc3BhY2VSdWxlKGNvbnRleHQpIHtcblxuICAgIC8vIHJlYWQgb3B0aW9uc1xuICAgIGNvbnN0IHtcbiAgICAgIGFsbG93Q29tcHV0ZWQgPSBmYWxzZSxcbiAgICB9ID0gY29udGV4dC5vcHRpb25zWzBdIHx8IHt9XG5cbiAgICBjb25zdCBuYW1lc3BhY2VzID0gbmV3IE1hcCgpXG5cbiAgICBmdW5jdGlvbiBtYWtlTWVzc2FnZShsYXN0LCBuYW1lcGF0aCkge1xuICAgICAgIHJldHVybiBgJyR7bGFzdC5uYW1lfScgbm90IGZvdW5kIGluYCArXG4gICAgICAgICAgICAgIChuYW1lcGF0aC5sZW5ndGggPiAxID8gJyBkZWVwbHkgJyA6ICcgJykgK1xuICAgICAgICAgICAgICBgaW1wb3J0ZWQgbmFtZXNwYWNlICcke25hbWVwYXRoLmpvaW4oJy4nKX0nLmBcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuXG4gICAgICAvLyBwaWNrIHVwIGFsbCBpbXBvcnRzIGF0IGJvZHkgZW50cnkgdGltZSwgdG8gcHJvcGVybHkgcmVzcGVjdCBob2lzdGluZ1xuICAgICAgUHJvZ3JhbTogZnVuY3Rpb24gKHsgYm9keSB9KSB7XG4gICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NCb2R5U3RhdGVtZW50KGRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9uLnR5cGUgIT09ICdJbXBvcnREZWNsYXJhdGlvbicpIHJldHVyblxuXG4gICAgICAgICAgaWYgKGRlY2xhcmF0aW9uLnNwZWNpZmllcnMubGVuZ3RoID09PSAwKSByZXR1cm5cblxuICAgICAgICAgIGNvbnN0IGltcG9ydHMgPSBFeHBvcnRzLmdldChkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgICAgICAgaWYgKGltcG9ydHMgPT0gbnVsbCkgcmV0dXJuIG51bGxcblxuICAgICAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGltcG9ydHMucmVwb3J0RXJyb3JzKGNvbnRleHQsIGRlY2xhcmF0aW9uKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChjb25zdCBzcGVjaWZpZXIgb2YgZGVjbGFyYXRpb24uc3BlY2lmaWVycykge1xuICAgICAgICAgICAgc3dpdGNoIChzcGVjaWZpZXIudHlwZSkge1xuICAgICAgICAgICAgICBjYXNlICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInOlxuICAgICAgICAgICAgICAgIGlmICghaW1wb3J0cy5zaXplKSB7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydChzcGVjaWZpZXIsXG4gICAgICAgICAgICAgICAgICAgIGBObyBleHBvcnRlZCBuYW1lcyBmb3VuZCBpbiBtb2R1bGUgJyR7ZGVjbGFyYXRpb24uc291cmNlLnZhbHVlfScuYClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmFtZXNwYWNlcy5zZXQoc3BlY2lmaWVyLmxvY2FsLm5hbWUsIGltcG9ydHMpXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgY2FzZSAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcic6XG4gICAgICAgICAgICAgIGNhc2UgJ0ltcG9ydFNwZWNpZmllcic6IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRhID0gaW1wb3J0cy5nZXQoXG4gICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvICdkZWZhdWx0JyBmb3IgZGVmYXVsdCBodHRwOi8vaS5pbWd1ci5jb20vbmo2cUFXeS5qcGdcbiAgICAgICAgICAgICAgICAgIHNwZWNpZmllci5pbXBvcnRlZCA/IHNwZWNpZmllci5pbXBvcnRlZC5uYW1lIDogJ2RlZmF1bHQnKVxuICAgICAgICAgICAgICAgIGlmICghbWV0YSB8fCAhbWV0YS5uYW1lc3BhY2UpIGJyZWFrXG4gICAgICAgICAgICAgICAgbmFtZXNwYWNlcy5zZXQoc3BlY2lmaWVyLmxvY2FsLm5hbWUsIG1ldGEubmFtZXNwYWNlKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYm9keS5mb3JFYWNoKHByb2Nlc3NCb2R5U3RhdGVtZW50KVxuICAgICAgfSxcblxuICAgICAgLy8gc2FtZSBhcyBhYm92ZSwgYnV0IGRvZXMgbm90IGFkZCBuYW1lcyB0byBsb2NhbCBtYXBcbiAgICAgIEV4cG9ydE5hbWVzcGFjZVNwZWNpZmllcjogZnVuY3Rpb24gKG5hbWVzcGFjZSkge1xuICAgICAgICB2YXIgZGVjbGFyYXRpb24gPSBpbXBvcnREZWNsYXJhdGlvbihjb250ZXh0KVxuXG4gICAgICAgIHZhciBpbXBvcnRzID0gRXhwb3J0cy5nZXQoZGVjbGFyYXRpb24uc291cmNlLnZhbHVlLCBjb250ZXh0KVxuICAgICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm4gbnVsbFxuXG4gICAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICBpbXBvcnRzLnJlcG9ydEVycm9ycyhjb250ZXh0LCBkZWNsYXJhdGlvbilcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaW1wb3J0cy5zaXplKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQobmFtZXNwYWNlLFxuICAgICAgICAgICAgYE5vIGV4cG9ydGVkIG5hbWVzIGZvdW5kIGluIG1vZHVsZSAnJHtkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICAvLyB0b2RvOiBjaGVjayBmb3IgcG9zc2libGUgcmVkZWZpbml0aW9uXG5cbiAgICAgIE1lbWJlckV4cHJlc3Npb246IGZ1bmN0aW9uIChkZXJlZmVyZW5jZSkge1xuICAgICAgICBpZiAoZGVyZWZlcmVuY2Uub2JqZWN0LnR5cGUgIT09ICdJZGVudGlmaWVyJykgcmV0dXJuXG4gICAgICAgIGlmICghbmFtZXNwYWNlcy5oYXMoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpKSByZXR1cm5cblxuICAgICAgICBpZiAoZGVyZWZlcmVuY2UucGFyZW50LnR5cGUgPT09ICdBc3NpZ25tZW50RXhwcmVzc2lvbicgJiZcbiAgICAgICAgICAgIGRlcmVmZXJlbmNlLnBhcmVudC5sZWZ0ID09PSBkZXJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoZGVyZWZlcmVuY2UucGFyZW50LFxuICAgICAgICAgICAgICAgIGBBc3NpZ25tZW50IHRvIG1lbWJlciBvZiBuYW1lc3BhY2UgJyR7ZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWV9Jy5gKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZ28gZGVlcFxuICAgICAgICB2YXIgbmFtZXNwYWNlID0gbmFtZXNwYWNlcy5nZXQoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpXG4gICAgICAgIHZhciBuYW1lcGF0aCA9IFtkZXJlZmVyZW5jZS5vYmplY3QubmFtZV1cbiAgICAgICAgLy8gd2hpbGUgcHJvcGVydHkgaXMgbmFtZXNwYWNlIGFuZCBwYXJlbnQgaXMgbWVtYmVyIGV4cHJlc3Npb24sIGtlZXAgdmFsaWRhdGluZ1xuICAgICAgICB3aGlsZSAobmFtZXNwYWNlIGluc3RhbmNlb2YgRXhwb3J0cyAmJlxuICAgICAgICAgICAgICAgZGVyZWZlcmVuY2UudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XG5cbiAgICAgICAgICBpZiAoZGVyZWZlcmVuY2UuY29tcHV0ZWQpIHtcbiAgICAgICAgICAgIGlmICghYWxsb3dDb21wdXRlZCkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydChkZXJlZmVyZW5jZS5wcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICAnVW5hYmxlIHRvIHZhbGlkYXRlIGNvbXB1dGVkIHJlZmVyZW5jZSB0byBpbXBvcnRlZCBuYW1lc3BhY2UgXFwnJyArXG4gICAgICAgICAgICAgICAgZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUgKyAnXFwnLicpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5oYXMoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KFxuICAgICAgICAgICAgICBkZXJlZmVyZW5jZS5wcm9wZXJ0eSxcbiAgICAgICAgICAgICAgbWFrZU1lc3NhZ2UoZGVyZWZlcmVuY2UucHJvcGVydHksIG5hbWVwYXRoKSlcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZXhwb3J0ZWQgPSBuYW1lc3BhY2UuZ2V0KGRlcmVmZXJlbmNlLnByb3BlcnR5Lm5hbWUpXG4gICAgICAgICAgaWYgKGV4cG9ydGVkID09IG51bGwpIHJldHVyblxuXG4gICAgICAgICAgLy8gc3Rhc2ggYW5kIHBvcFxuICAgICAgICAgIG5hbWVwYXRoLnB1c2goZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSlcbiAgICAgICAgICBuYW1lc3BhY2UgPSBleHBvcnRlZC5uYW1lc3BhY2VcbiAgICAgICAgICBkZXJlZmVyZW5jZSA9IGRlcmVmZXJlbmNlLnBhcmVudFxuICAgICAgICB9XG5cbiAgICAgIH0sXG5cbiAgICAgIFZhcmlhYmxlRGVjbGFyYXRvcjogZnVuY3Rpb24gKHsgaWQsIGluaXQgfSkge1xuICAgICAgICBpZiAoaW5pdCA9PSBudWxsKSByZXR1cm5cbiAgICAgICAgaWYgKGluaXQudHlwZSAhPT0gJ0lkZW50aWZpZXInKSByZXR1cm5cbiAgICAgICAgaWYgKCFuYW1lc3BhY2VzLmhhcyhpbml0Lm5hbWUpKSByZXR1cm5cblxuICAgICAgICAvLyBjaGVjayBmb3IgcmVkZWZpbml0aW9uIGluIGludGVybWVkaWF0ZSBzY29wZXNcbiAgICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgaW5pdC5uYW1lKSAhPT0gJ21vZHVsZScpIHJldHVyblxuXG4gICAgICAgIC8vIERGUyB0cmF2ZXJzZSBjaGlsZCBuYW1lc3BhY2VzXG4gICAgICAgIGZ1bmN0aW9uIHRlc3RLZXkocGF0dGVybiwgbmFtZXNwYWNlLCBwYXRoID0gW2luaXQubmFtZV0pIHtcbiAgICAgICAgICBpZiAoIShuYW1lc3BhY2UgaW5zdGFuY2VvZiBFeHBvcnRzKSkgcmV0dXJuXG5cbiAgICAgICAgICBpZiAocGF0dGVybi50eXBlICE9PSAnT2JqZWN0UGF0dGVybicpIHJldHVyblxuXG4gICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwYXR0ZXJuLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgcHJvcGVydHkudHlwZSA9PT0gJ0V4cGVyaW1lbnRhbFJlc3RQcm9wZXJ0eSdcbiAgICAgICAgICAgICAgfHwgcHJvcGVydHkudHlwZSA9PT0gJ1Jlc3RFbGVtZW50J1xuICAgICAgICAgICAgICB8fCAhcHJvcGVydHkua2V5XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHByb3BlcnR5LmtleS50eXBlICE9PSAnSWRlbnRpZmllcicpIHtcbiAgICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICAgIG5vZGU6IHByb3BlcnR5LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdPbmx5IGRlc3RydWN0dXJlIHRvcC1sZXZlbCBuYW1lcy4nLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIW5hbWVzcGFjZS5oYXMocHJvcGVydHkua2V5Lm5hbWUpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBub2RlOiBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBtYWtlTWVzc2FnZShwcm9wZXJ0eS5rZXksIHBhdGgpLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXRoLnB1c2gocHJvcGVydHkua2V5Lm5hbWUpXG4gICAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5RXhwb3J0TWFwID0gbmFtZXNwYWNlLmdldChwcm9wZXJ0eS5rZXkubmFtZSlcbiAgICAgICAgICAgIC8vIGNvdWxkIGJlIG51bGwgd2hlbiBpZ25vcmVkIG9yIGFtYmlndW91c1xuICAgICAgICAgICAgaWYgKGRlcGVuZGVuY3lFeHBvcnRNYXAgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgdGVzdEtleShwcm9wZXJ0eS52YWx1ZSwgZGVwZW5kZW5jeUV4cG9ydE1hcC5uYW1lc3BhY2UsIHBhdGgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXRoLnBvcCgpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGVzdEtleShpZCwgbmFtZXNwYWNlcy5nZXQoaW5pdC5uYW1lKSlcbiAgICAgIH0sXG5cbiAgICAgIEpTWE1lbWJlckV4cHJlc3Npb246IGZ1bmN0aW9uKHtvYmplY3QsIHByb3BlcnR5fSkge1xuICAgICAgICAgaWYgKCFuYW1lc3BhY2VzLmhhcyhvYmplY3QubmFtZSkpIHJldHVyblxuICAgICAgICAgdmFyIG5hbWVzcGFjZSA9IG5hbWVzcGFjZXMuZ2V0KG9iamVjdC5uYW1lKVxuICAgICAgICAgaWYgKCFuYW1lc3BhY2UuaGFzKHByb3BlcnR5Lm5hbWUpKSB7XG4gICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICBub2RlOiBwcm9wZXJ0eSxcbiAgICAgICAgICAgICBtZXNzYWdlOiBtYWtlTWVzc2FnZShwcm9wZXJ0eSwgW29iamVjdC5uYW1lXSksXG4gICAgICAgICAgIH0pXG4gICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/newline-after-import.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/newline-after-import.js new file mode 100644 index 0000000..7505299 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/newline-after-import.js @@ -0,0 +1,170 @@ +'use strict'; + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +var _debug = require('debug'); + +var _debug2 = _interopRequireDefault(_debug); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const log = (0, _debug2.default)('eslint-plugin-import:rules:newline-after-import'); + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +/** + * @fileoverview Rule to enforce new line after import not followed by another import. + * @author Radek Benkel + */ + +function containsNodeOrEqual(outerNode, innerNode) { + return outerNode.range[0] <= innerNode.range[0] && outerNode.range[1] >= innerNode.range[1]; +} + +function getScopeBody(scope) { + if (scope.block.type === 'SwitchStatement') { + log('SwitchStatement scopes not supported'); + return null; + } + + const body = scope.block.body; + + if (body && body.type === 'BlockStatement') { + return body.body; + } + + return body; +} + +function findNodeIndexInScopeBody(body, nodeToFind) { + return body.findIndex(node => containsNodeOrEqual(node, nodeToFind)); +} + +function getLineDifference(node, nextNode) { + return nextNode.loc.start.line - node.loc.end.line; +} + +function isClassWithDecorator(node) { + return node.type === 'ClassDeclaration' && node.decorators && node.decorators.length; +} + +module.exports = { + meta: { + type: 'layout', + docs: { + url: (0, _docsUrl2.default)('newline-after-import') + }, + fixable: 'whitespace', + schema: [{ + 'type': 'object', + 'properties': { + 'count': { + 'type': 'integer', + 'minimum': 1 + } + }, + 'additionalProperties': false + }] + }, + create: function (context) { + let level = 0; + const requireCalls = []; + + function checkForNewLine(node, nextNode, type) { + if (isClassWithDecorator(nextNode)) { + nextNode = nextNode.decorators[0]; + } + + const options = context.options[0] || { count: 1 }; + const lineDifference = getLineDifference(node, nextNode); + const EXPECTED_LINE_DIFFERENCE = options.count + 1; + + if (lineDifference < EXPECTED_LINE_DIFFERENCE) { + let column = node.loc.start.column; + + if (node.loc.start.line !== node.loc.end.line) { + column = 0; + } + + context.report({ + loc: { + line: node.loc.end.line, + column + }, + message: `Expected ${options.count} empty line${options.count > 1 ? 's' : ''} \ +after ${type} statement not followed by another ${type}.`, + fix: fixer => fixer.insertTextAfter(node, '\n'.repeat(EXPECTED_LINE_DIFFERENCE - lineDifference)) + }); + } + } + + function incrementLevel() { + level++; + } + function decrementLevel() { + level--; + } + + return { + ImportDeclaration: function (node) { + const parent = node.parent; + + const nodePosition = parent.body.indexOf(node); + const nextNode = parent.body[nodePosition + 1]; + + if (nextNode && nextNode.type !== 'ImportDeclaration') { + checkForNewLine(node, nextNode, 'import'); + } + }, + CallExpression: function (node) { + if ((0, _staticRequire2.default)(node) && level === 0) { + requireCalls.push(node); + } + }, + 'Program:exit': function () { + log('exit processing for', context.getFilename()); + const scopeBody = getScopeBody(context.getScope()); + log('got scope:', scopeBody); + + requireCalls.forEach(function (node, index) { + const nodePosition = findNodeIndexInScopeBody(scopeBody, node); + log('node position in scope:', nodePosition); + + const statementWithRequireCall = scopeBody[nodePosition]; + const nextStatement = scopeBody[nodePosition + 1]; + const nextRequireCall = requireCalls[index + 1]; + + if (nextRequireCall && containsNodeOrEqual(statementWithRequireCall, nextRequireCall)) { + return; + } + + if (nextStatement && (!nextRequireCall || !containsNodeOrEqual(nextStatement, nextRequireCall))) { + + checkForNewLine(statementWithRequireCall, nextStatement, 'require'); + } + }); + }, + FunctionDeclaration: incrementLevel, + FunctionExpression: incrementLevel, + ArrowFunctionExpression: incrementLevel, + BlockStatement: incrementLevel, + ObjectExpression: incrementLevel, + Decorator: incrementLevel, + 'FunctionDeclaration:exit': decrementLevel, + 'FunctionExpression:exit': decrementLevel, + 'ArrowFunctionExpression:exit': decrementLevel, + 'BlockStatement:exit': decrementLevel, + 'ObjectExpression:exit': decrementLevel, + 'Decorator:exit': decrementLevel + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uZXdsaW5lLWFmdGVyLWltcG9ydC5qcyJdLCJuYW1lcyI6WyJsb2ciLCJjb250YWluc05vZGVPckVxdWFsIiwib3V0ZXJOb2RlIiwiaW5uZXJOb2RlIiwicmFuZ2UiLCJnZXRTY29wZUJvZHkiLCJzY29wZSIsImJsb2NrIiwidHlwZSIsImJvZHkiLCJmaW5kTm9kZUluZGV4SW5TY29wZUJvZHkiLCJub2RlVG9GaW5kIiwiZmluZEluZGV4Iiwibm9kZSIsImdldExpbmVEaWZmZXJlbmNlIiwibmV4dE5vZGUiLCJsb2MiLCJzdGFydCIsImxpbmUiLCJlbmQiLCJpc0NsYXNzV2l0aERlY29yYXRvciIsImRlY29yYXRvcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsImRvY3MiLCJ1cmwiLCJmaXhhYmxlIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsImxldmVsIiwicmVxdWlyZUNhbGxzIiwiY2hlY2tGb3JOZXdMaW5lIiwib3B0aW9ucyIsImNvdW50IiwibGluZURpZmZlcmVuY2UiLCJFWFBFQ1RFRF9MSU5FX0RJRkZFUkVOQ0UiLCJjb2x1bW4iLCJyZXBvcnQiLCJtZXNzYWdlIiwiZml4IiwiZml4ZXIiLCJpbnNlcnRUZXh0QWZ0ZXIiLCJyZXBlYXQiLCJpbmNyZW1lbnRMZXZlbCIsImRlY3JlbWVudExldmVsIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJwYXJlbnQiLCJub2RlUG9zaXRpb24iLCJpbmRleE9mIiwiQ2FsbEV4cHJlc3Npb24iLCJwdXNoIiwiZ2V0RmlsZW5hbWUiLCJzY29wZUJvZHkiLCJnZXRTY29wZSIsImZvckVhY2giLCJpbmRleCIsInN0YXRlbWVudFdpdGhSZXF1aXJlQ2FsbCIsIm5leHRTdGF0ZW1lbnQiLCJuZXh0UmVxdWlyZUNhbGwiLCJGdW5jdGlvbkRlY2xhcmF0aW9uIiwiRnVuY3Rpb25FeHByZXNzaW9uIiwiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24iLCJCbG9ja1N0YXRlbWVudCIsIk9iamVjdEV4cHJlc3Npb24iLCJEZWNvcmF0b3IiXSwibWFwcGluZ3MiOiI7O0FBS0E7Ozs7QUFDQTs7OztBQUVBOzs7Ozs7QUFDQSxNQUFNQSxNQUFNLHFCQUFNLGlEQUFOLENBQVo7O0FBRUE7QUFDQTtBQUNBOztBQWJBOzs7OztBQWVBLFNBQVNDLG1CQUFULENBQTZCQyxTQUE3QixFQUF3Q0MsU0FBeEMsRUFBbUQ7QUFDL0MsU0FBT0QsVUFBVUUsS0FBVixDQUFnQixDQUFoQixLQUFzQkQsVUFBVUMsS0FBVixDQUFnQixDQUFoQixDQUF0QixJQUE0Q0YsVUFBVUUsS0FBVixDQUFnQixDQUFoQixLQUFzQkQsVUFBVUMsS0FBVixDQUFnQixDQUFoQixDQUF6RTtBQUNIOztBQUVELFNBQVNDLFlBQVQsQ0FBc0JDLEtBQXRCLEVBQTZCO0FBQ3pCLE1BQUlBLE1BQU1DLEtBQU4sQ0FBWUMsSUFBWixLQUFxQixpQkFBekIsRUFBNEM7QUFDMUNSLFFBQUksc0NBQUo7QUFDQSxXQUFPLElBQVA7QUFDRDs7QUFKd0IsUUFNakJTLElBTmlCLEdBTVJILE1BQU1DLEtBTkUsQ0FNakJFLElBTmlCOztBQU96QixNQUFJQSxRQUFRQSxLQUFLRCxJQUFMLEtBQWMsZ0JBQTFCLEVBQTRDO0FBQ3hDLFdBQU9DLEtBQUtBLElBQVo7QUFDSDs7QUFFRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsU0FBU0Msd0JBQVQsQ0FBa0NELElBQWxDLEVBQXdDRSxVQUF4QyxFQUFvRDtBQUNoRCxTQUFPRixLQUFLRyxTQUFMLENBQWdCQyxJQUFELElBQVVaLG9CQUFvQlksSUFBcEIsRUFBMEJGLFVBQTFCLENBQXpCLENBQVA7QUFDSDs7QUFFRCxTQUFTRyxpQkFBVCxDQUEyQkQsSUFBM0IsRUFBaUNFLFFBQWpDLEVBQTJDO0FBQ3pDLFNBQU9BLFNBQVNDLEdBQVQsQ0FBYUMsS0FBYixDQUFtQkMsSUFBbkIsR0FBMEJMLEtBQUtHLEdBQUwsQ0FBU0csR0FBVCxDQUFhRCxJQUE5QztBQUNEOztBQUVELFNBQVNFLG9CQUFULENBQThCUCxJQUE5QixFQUFvQztBQUNsQyxTQUFPQSxLQUFLTCxJQUFMLEtBQWMsa0JBQWQsSUFBb0NLLEtBQUtRLFVBQXpDLElBQXVEUixLQUFLUSxVQUFMLENBQWdCQyxNQUE5RTtBQUNEOztBQUVEQyxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSmpCLFVBQU0sUUFERjtBQUVKa0IsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLHNCQUFSO0FBREQsS0FGRjtBQUtKQyxhQUFTLFlBTEw7QUFNSkMsWUFBUSxDQUNOO0FBQ0UsY0FBUSxRQURWO0FBRUUsb0JBQWM7QUFDWixpQkFBUztBQUNQLGtCQUFRLFNBREQ7QUFFUCxxQkFBVztBQUZKO0FBREcsT0FGaEI7QUFRRSw4QkFBd0I7QUFSMUIsS0FETTtBQU5KLEdBRFM7QUFvQmZDLFVBQVEsVUFBVUMsT0FBVixFQUFtQjtBQUN6QixRQUFJQyxRQUFRLENBQVo7QUFDQSxVQUFNQyxlQUFlLEVBQXJCOztBQUVBLGFBQVNDLGVBQVQsQ0FBeUJyQixJQUF6QixFQUErQkUsUUFBL0IsRUFBeUNQLElBQXpDLEVBQStDO0FBQzdDLFVBQUlZLHFCQUFxQkwsUUFBckIsQ0FBSixFQUFvQztBQUNsQ0EsbUJBQVdBLFNBQVNNLFVBQVQsQ0FBb0IsQ0FBcEIsQ0FBWDtBQUNEOztBQUVELFlBQU1jLFVBQVVKLFFBQVFJLE9BQVIsQ0FBZ0IsQ0FBaEIsS0FBc0IsRUFBRUMsT0FBTyxDQUFULEVBQXRDO0FBQ0EsWUFBTUMsaUJBQWlCdkIsa0JBQWtCRCxJQUFsQixFQUF3QkUsUUFBeEIsQ0FBdkI7QUFDQSxZQUFNdUIsMkJBQTJCSCxRQUFRQyxLQUFSLEdBQWdCLENBQWpEOztBQUVBLFVBQUlDLGlCQUFpQkMsd0JBQXJCLEVBQStDO0FBQzdDLFlBQUlDLFNBQVMxQixLQUFLRyxHQUFMLENBQVNDLEtBQVQsQ0FBZXNCLE1BQTVCOztBQUVBLFlBQUkxQixLQUFLRyxHQUFMLENBQVNDLEtBQVQsQ0FBZUMsSUFBZixLQUF3QkwsS0FBS0csR0FBTCxDQUFTRyxHQUFULENBQWFELElBQXpDLEVBQStDO0FBQzdDcUIsbUJBQVMsQ0FBVDtBQUNEOztBQUVEUixnQkFBUVMsTUFBUixDQUFlO0FBQ2J4QixlQUFLO0FBQ0hFLGtCQUFNTCxLQUFLRyxHQUFMLENBQVNHLEdBQVQsQ0FBYUQsSUFEaEI7QUFFSHFCO0FBRkcsV0FEUTtBQUtiRSxtQkFBVSxZQUFXTixRQUFRQyxLQUFNLGNBQWFELFFBQVFDLEtBQVIsR0FBZ0IsQ0FBaEIsR0FBb0IsR0FBcEIsR0FBMEIsRUFBRztRQUMvRTVCLElBQUssc0NBQXFDQSxJQUFLLEdBTmhDO0FBT2JrQyxlQUFLQyxTQUFTQSxNQUFNQyxlQUFOLENBQ1ovQixJQURZLEVBRVosS0FBS2dDLE1BQUwsQ0FBWVAsMkJBQTJCRCxjQUF2QyxDQUZZO0FBUEQsU0FBZjtBQVlEO0FBQ0Y7O0FBRUQsYUFBU1MsY0FBVCxHQUEwQjtBQUN4QmQ7QUFDRDtBQUNELGFBQVNlLGNBQVQsR0FBMEI7QUFDeEJmO0FBQ0Q7O0FBRUQsV0FBTztBQUNMZ0IseUJBQW1CLFVBQVVuQyxJQUFWLEVBQWdCO0FBQUEsY0FDekJvQyxNQUR5QixHQUNkcEMsSUFEYyxDQUN6Qm9DLE1BRHlCOztBQUVqQyxjQUFNQyxlQUFlRCxPQUFPeEMsSUFBUCxDQUFZMEMsT0FBWixDQUFvQnRDLElBQXBCLENBQXJCO0FBQ0EsY0FBTUUsV0FBV2tDLE9BQU94QyxJQUFQLENBQVl5QyxlQUFlLENBQTNCLENBQWpCOztBQUVBLFlBQUluQyxZQUFZQSxTQUFTUCxJQUFULEtBQWtCLG1CQUFsQyxFQUF1RDtBQUNyRDBCLDBCQUFnQnJCLElBQWhCLEVBQXNCRSxRQUF0QixFQUFnQyxRQUFoQztBQUNEO0FBQ0YsT0FUSTtBQVVMcUMsc0JBQWdCLFVBQVN2QyxJQUFULEVBQWU7QUFDN0IsWUFBSSw2QkFBZ0JBLElBQWhCLEtBQXlCbUIsVUFBVSxDQUF2QyxFQUEwQztBQUN4Q0MsdUJBQWFvQixJQUFiLENBQWtCeEMsSUFBbEI7QUFDRDtBQUNGLE9BZEk7QUFlTCxzQkFBZ0IsWUFBWTtBQUMxQmIsWUFBSSxxQkFBSixFQUEyQitCLFFBQVF1QixXQUFSLEVBQTNCO0FBQ0EsY0FBTUMsWUFBWWxELGFBQWEwQixRQUFReUIsUUFBUixFQUFiLENBQWxCO0FBQ0F4RCxZQUFJLFlBQUosRUFBa0J1RCxTQUFsQjs7QUFFQXRCLHFCQUFhd0IsT0FBYixDQUFxQixVQUFVNUMsSUFBVixFQUFnQjZDLEtBQWhCLEVBQXVCO0FBQzFDLGdCQUFNUixlQUFleEMseUJBQXlCNkMsU0FBekIsRUFBb0MxQyxJQUFwQyxDQUFyQjtBQUNBYixjQUFJLHlCQUFKLEVBQStCa0QsWUFBL0I7O0FBRUEsZ0JBQU1TLDJCQUEyQkosVUFBVUwsWUFBVixDQUFqQztBQUNBLGdCQUFNVSxnQkFBZ0JMLFVBQVVMLGVBQWUsQ0FBekIsQ0FBdEI7QUFDQSxnQkFBTVcsa0JBQWtCNUIsYUFBYXlCLFFBQVEsQ0FBckIsQ0FBeEI7O0FBRUEsY0FBSUcsbUJBQW1CNUQsb0JBQW9CMEQsd0JBQXBCLEVBQThDRSxlQUE5QyxDQUF2QixFQUF1RjtBQUNyRjtBQUNEOztBQUVELGNBQUlELGtCQUNBLENBQUNDLGVBQUQsSUFBb0IsQ0FBQzVELG9CQUFvQjJELGFBQXBCLEVBQW1DQyxlQUFuQyxDQURyQixDQUFKLEVBQytFOztBQUU3RTNCLDRCQUFnQnlCLHdCQUFoQixFQUEwQ0MsYUFBMUMsRUFBeUQsU0FBekQ7QUFDRDtBQUNGLFNBakJEO0FBa0JELE9BdENJO0FBdUNMRSwyQkFBcUJoQixjQXZDaEI7QUF3Q0xpQiwwQkFBb0JqQixjQXhDZjtBQXlDTGtCLCtCQUF5QmxCLGNBekNwQjtBQTBDTG1CLHNCQUFnQm5CLGNBMUNYO0FBMkNMb0Isd0JBQWtCcEIsY0EzQ2I7QUE0Q0xxQixpQkFBV3JCLGNBNUNOO0FBNkNMLGtDQUE0QkMsY0E3Q3ZCO0FBOENMLGlDQUEyQkEsY0E5Q3RCO0FBK0NMLHNDQUFnQ0EsY0EvQzNCO0FBZ0RMLDZCQUF1QkEsY0FoRGxCO0FBaURMLCtCQUF5QkEsY0FqRHBCO0FBa0RMLHdCQUFrQkE7QUFsRGIsS0FBUDtBQW9ERDtBQWxIYyxDQUFqQiIsImZpbGUiOiJuZXdsaW5lLWFmdGVyLWltcG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBSdWxlIHRvIGVuZm9yY2UgbmV3IGxpbmUgYWZ0ZXIgaW1wb3J0IG5vdCBmb2xsb3dlZCBieSBhbm90aGVyIGltcG9ydC5cbiAqIEBhdXRob3IgUmFkZWsgQmVua2VsXG4gKi9cblxuaW1wb3J0IGlzU3RhdGljUmVxdWlyZSBmcm9tICcuLi9jb3JlL3N0YXRpY1JlcXVpcmUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnXG5jb25zdCBsb2cgPSBkZWJ1ZygnZXNsaW50LXBsdWdpbi1pbXBvcnQ6cnVsZXM6bmV3bGluZS1hZnRlci1pbXBvcnQnKVxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZSBEZWZpbml0aW9uXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBjb250YWluc05vZGVPckVxdWFsKG91dGVyTm9kZSwgaW5uZXJOb2RlKSB7XG4gICAgcmV0dXJuIG91dGVyTm9kZS5yYW5nZVswXSA8PSBpbm5lck5vZGUucmFuZ2VbMF0gJiYgb3V0ZXJOb2RlLnJhbmdlWzFdID49IGlubmVyTm9kZS5yYW5nZVsxXVxufVxuXG5mdW5jdGlvbiBnZXRTY29wZUJvZHkoc2NvcGUpIHtcbiAgICBpZiAoc2NvcGUuYmxvY2sudHlwZSA9PT0gJ1N3aXRjaFN0YXRlbWVudCcpIHtcbiAgICAgIGxvZygnU3dpdGNoU3RhdGVtZW50IHNjb3BlcyBub3Qgc3VwcG9ydGVkJylcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3QgeyBib2R5IH0gPSBzY29wZS5ibG9ja1xuICAgIGlmIChib2R5ICYmIGJvZHkudHlwZSA9PT0gJ0Jsb2NrU3RhdGVtZW50Jykge1xuICAgICAgICByZXR1cm4gYm9keS5ib2R5XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvZHlcbn1cblxuZnVuY3Rpb24gZmluZE5vZGVJbmRleEluU2NvcGVCb2R5KGJvZHksIG5vZGVUb0ZpbmQpIHtcbiAgICByZXR1cm4gYm9keS5maW5kSW5kZXgoKG5vZGUpID0+IGNvbnRhaW5zTm9kZU9yRXF1YWwobm9kZSwgbm9kZVRvRmluZCkpXG59XG5cbmZ1bmN0aW9uIGdldExpbmVEaWZmZXJlbmNlKG5vZGUsIG5leHROb2RlKSB7XG4gIHJldHVybiBuZXh0Tm9kZS5sb2Muc3RhcnQubGluZSAtIG5vZGUubG9jLmVuZC5saW5lXG59XG5cbmZ1bmN0aW9uIGlzQ2xhc3NXaXRoRGVjb3JhdG9yKG5vZGUpIHtcbiAgcmV0dXJuIG5vZGUudHlwZSA9PT0gJ0NsYXNzRGVjbGFyYXRpb24nICYmIG5vZGUuZGVjb3JhdG9ycyAmJiBub2RlLmRlY29yYXRvcnMubGVuZ3RoXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ2xheW91dCcsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCduZXdsaW5lLWFmdGVyLWltcG9ydCcpLFxuICAgIH0sXG4gICAgZml4YWJsZTogJ3doaXRlc3BhY2UnLFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICAndHlwZSc6ICdvYmplY3QnLFxuICAgICAgICAncHJvcGVydGllcyc6IHtcbiAgICAgICAgICAnY291bnQnOiB7XG4gICAgICAgICAgICAndHlwZSc6ICdpbnRlZ2VyJyxcbiAgICAgICAgICAgICdtaW5pbXVtJzogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAnYWRkaXRpb25hbFByb3BlcnRpZXMnOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgY3JlYXRlOiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGxldCBsZXZlbCA9IDBcbiAgICBjb25zdCByZXF1aXJlQ2FsbHMgPSBbXVxuXG4gICAgZnVuY3Rpb24gY2hlY2tGb3JOZXdMaW5lKG5vZGUsIG5leHROb2RlLCB0eXBlKSB7XG4gICAgICBpZiAoaXNDbGFzc1dpdGhEZWNvcmF0b3IobmV4dE5vZGUpKSB7XG4gICAgICAgIG5leHROb2RlID0gbmV4dE5vZGUuZGVjb3JhdG9yc1swXVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zWzBdIHx8IHsgY291bnQ6IDEgfVxuICAgICAgY29uc3QgbGluZURpZmZlcmVuY2UgPSBnZXRMaW5lRGlmZmVyZW5jZShub2RlLCBuZXh0Tm9kZSlcbiAgICAgIGNvbnN0IEVYUEVDVEVEX0xJTkVfRElGRkVSRU5DRSA9IG9wdGlvbnMuY291bnQgKyAxXG5cbiAgICAgIGlmIChsaW5lRGlmZmVyZW5jZSA8IEVYUEVDVEVEX0xJTkVfRElGRkVSRU5DRSkge1xuICAgICAgICBsZXQgY29sdW1uID0gbm9kZS5sb2Muc3RhcnQuY29sdW1uXG5cbiAgICAgICAgaWYgKG5vZGUubG9jLnN0YXJ0LmxpbmUgIT09IG5vZGUubG9jLmVuZC5saW5lKSB7XG4gICAgICAgICAgY29sdW1uID0gMFxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgIGxvYzoge1xuICAgICAgICAgICAgbGluZTogbm9kZS5sb2MuZW5kLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXNzYWdlOiBgRXhwZWN0ZWQgJHtvcHRpb25zLmNvdW50fSBlbXB0eSBsaW5lJHtvcHRpb25zLmNvdW50ID4gMSA/ICdzJyA6ICcnfSBcXFxuYWZ0ZXIgJHt0eXBlfSBzdGF0ZW1lbnQgbm90IGZvbGxvd2VkIGJ5IGFub3RoZXIgJHt0eXBlfS5gLFxuICAgICAgICAgIGZpeDogZml4ZXIgPT4gZml4ZXIuaW5zZXJ0VGV4dEFmdGVyKFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICdcXG4nLnJlcGVhdChFWFBFQ1RFRF9MSU5FX0RJRkZFUkVOQ0UgLSBsaW5lRGlmZmVyZW5jZSlcbiAgICAgICAgICApLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluY3JlbWVudExldmVsKCkge1xuICAgICAgbGV2ZWwrK1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWNyZW1lbnRMZXZlbCgpIHtcbiAgICAgIGxldmVsLS1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgSW1wb3J0RGVjbGFyYXRpb246IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGNvbnN0IHsgcGFyZW50IH0gPSBub2RlXG4gICAgICAgIGNvbnN0IG5vZGVQb3NpdGlvbiA9IHBhcmVudC5ib2R5LmluZGV4T2Yobm9kZSlcbiAgICAgICAgY29uc3QgbmV4dE5vZGUgPSBwYXJlbnQuYm9keVtub2RlUG9zaXRpb24gKyAxXVxuXG4gICAgICAgIGlmIChuZXh0Tm9kZSAmJiBuZXh0Tm9kZS50eXBlICE9PSAnSW1wb3J0RGVjbGFyYXRpb24nKSB7XG4gICAgICAgICAgY2hlY2tGb3JOZXdMaW5lKG5vZGUsIG5leHROb2RlLCAnaW1wb3J0JylcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIENhbGxFeHByZXNzaW9uOiBmdW5jdGlvbihub2RlKSB7XG4gICAgICAgIGlmIChpc1N0YXRpY1JlcXVpcmUobm9kZSkgJiYgbGV2ZWwgPT09IDApIHtcbiAgICAgICAgICByZXF1aXJlQ2FsbHMucHVzaChub2RlKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ1Byb2dyYW06ZXhpdCc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbG9nKCdleGl0IHByb2Nlc3NpbmcgZm9yJywgY29udGV4dC5nZXRGaWxlbmFtZSgpKVxuICAgICAgICBjb25zdCBzY29wZUJvZHkgPSBnZXRTY29wZUJvZHkoY29udGV4dC5nZXRTY29wZSgpKVxuICAgICAgICBsb2coJ2dvdCBzY29wZTonLCBzY29wZUJvZHkpXG5cbiAgICAgICAgcmVxdWlyZUNhbGxzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUsIGluZGV4KSB7XG4gICAgICAgICAgY29uc3Qgbm9kZVBvc2l0aW9uID0gZmluZE5vZGVJbmRleEluU2NvcGVCb2R5KHNjb3BlQm9keSwgbm9kZSlcbiAgICAgICAgICBsb2coJ25vZGUgcG9zaXRpb24gaW4gc2NvcGU6Jywgbm9kZVBvc2l0aW9uKVxuXG4gICAgICAgICAgY29uc3Qgc3RhdGVtZW50V2l0aFJlcXVpcmVDYWxsID0gc2NvcGVCb2R5W25vZGVQb3NpdGlvbl1cbiAgICAgICAgICBjb25zdCBuZXh0U3RhdGVtZW50ID0gc2NvcGVCb2R5W25vZGVQb3NpdGlvbiArIDFdXG4gICAgICAgICAgY29uc3QgbmV4dFJlcXVpcmVDYWxsID0gcmVxdWlyZUNhbGxzW2luZGV4ICsgMV1cblxuICAgICAgICAgIGlmIChuZXh0UmVxdWlyZUNhbGwgJiYgY29udGFpbnNOb2RlT3JFcXVhbChzdGF0ZW1lbnRXaXRoUmVxdWlyZUNhbGwsIG5leHRSZXF1aXJlQ2FsbCkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChuZXh0U3RhdGVtZW50ICYmXG4gICAgICAgICAgICAgKCFuZXh0UmVxdWlyZUNhbGwgfHwgIWNvbnRhaW5zTm9kZU9yRXF1YWwobmV4dFN0YXRlbWVudCwgbmV4dFJlcXVpcmVDYWxsKSkpIHtcblxuICAgICAgICAgICAgY2hlY2tGb3JOZXdMaW5lKHN0YXRlbWVudFdpdGhSZXF1aXJlQ2FsbCwgbmV4dFN0YXRlbWVudCwgJ3JlcXVpcmUnKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgICBGdW5jdGlvbkRlY2xhcmF0aW9uOiBpbmNyZW1lbnRMZXZlbCxcbiAgICAgIEZ1bmN0aW9uRXhwcmVzc2lvbjogaW5jcmVtZW50TGV2ZWwsXG4gICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogaW5jcmVtZW50TGV2ZWwsXG4gICAgICBCbG9ja1N0YXRlbWVudDogaW5jcmVtZW50TGV2ZWwsXG4gICAgICBPYmplY3RFeHByZXNzaW9uOiBpbmNyZW1lbnRMZXZlbCxcbiAgICAgIERlY29yYXRvcjogaW5jcmVtZW50TGV2ZWwsXG4gICAgICAnRnVuY3Rpb25EZWNsYXJhdGlvbjpleGl0JzogZGVjcmVtZW50TGV2ZWwsXG4gICAgICAnRnVuY3Rpb25FeHByZXNzaW9uOmV4aXQnOiBkZWNyZW1lbnRMZXZlbCxcbiAgICAgICdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjpleGl0JzogZGVjcmVtZW50TGV2ZWwsXG4gICAgICAnQmxvY2tTdGF0ZW1lbnQ6ZXhpdCc6IGRlY3JlbWVudExldmVsLFxuICAgICAgJ09iamVjdEV4cHJlc3Npb246ZXhpdCc6IGRlY3JlbWVudExldmVsLFxuICAgICAgJ0RlY29yYXRvcjpleGl0JzogZGVjcmVtZW50TGV2ZWwsXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-absolute-path.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-absolute-path.js new file mode 100644 index 0000000..3a920cd --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-absolute-path.js @@ -0,0 +1,35 @@ +'use strict'; + +var _moduleVisitor = require('eslint-module-utils/moduleVisitor'); + +var _moduleVisitor2 = _interopRequireDefault(_moduleVisitor); + +var _importType = require('../core/importType'); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-absolute-path') + }, + schema: [(0, _moduleVisitor.makeOptionsSchema)()] + }, + + create: function (context) { + function reportIfAbsolute(source) { + if (typeof source.value === 'string' && (0, _importType.isAbsolute)(source.value)) { + context.report(source, 'Do not import modules using an absolute path'); + } + } + + const options = Object.assign({ esmodule: true, commonjs: true }, context.options[0]); + return (0, _moduleVisitor2.default)(reportIfAbsolute, options); + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1hYnNvbHV0ZS1wYXRoLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0IiwicmVwb3J0SWZBYnNvbHV0ZSIsInNvdXJjZSIsInZhbHVlIiwicmVwb3J0Iiwib3B0aW9ucyIsIk9iamVjdCIsImFzc2lnbiIsImVzbW9kdWxlIiwiY29tbW9uanMiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7QUFDQTs7QUFDQTs7Ozs7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFlBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLGtCQUFSO0FBREQsS0FGRjtBQUtKQyxZQUFRLENBQUUsdUNBQUY7QUFMSixHQURTOztBQVNmQyxVQUFRLFVBQVVDLE9BQVYsRUFBbUI7QUFDekIsYUFBU0MsZ0JBQVQsQ0FBMEJDLE1BQTFCLEVBQWtDO0FBQ2hDLFVBQUksT0FBT0EsT0FBT0MsS0FBZCxLQUF3QixRQUF4QixJQUFvQyw0QkFBV0QsT0FBT0MsS0FBbEIsQ0FBeEMsRUFBa0U7QUFDaEVILGdCQUFRSSxNQUFSLENBQWVGLE1BQWYsRUFBdUIsOENBQXZCO0FBQ0Q7QUFDRjs7QUFFRCxVQUFNRyxVQUFVQyxPQUFPQyxNQUFQLENBQWMsRUFBRUMsVUFBVSxJQUFaLEVBQWtCQyxVQUFVLElBQTVCLEVBQWQsRUFBa0RULFFBQVFLLE9BQVIsQ0FBZ0IsQ0FBaEIsQ0FBbEQsQ0FBaEI7QUFDQSxXQUFPLDZCQUFjSixnQkFBZCxFQUFnQ0ksT0FBaEMsQ0FBUDtBQUNEO0FBbEJjLENBQWpCIiwiZmlsZSI6Im5vLWFic29sdXRlLXBhdGguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kdWxlVmlzaXRvciwgeyBtYWtlT3B0aW9uc1NjaGVtYSB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvbW9kdWxlVmlzaXRvcidcbmltcG9ydCB7IGlzQWJzb2x1dGUgfSBmcm9tICcuLi9jb3JlL2ltcG9ydFR5cGUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25vLWFic29sdXRlLXBhdGgnKSxcbiAgICB9LFxuICAgIHNjaGVtYTogWyBtYWtlT3B0aW9uc1NjaGVtYSgpIF0sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGZ1bmN0aW9uIHJlcG9ydElmQWJzb2x1dGUoc291cmNlKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZS52YWx1ZSA9PT0gJ3N0cmluZycgJiYgaXNBYnNvbHV0ZShzb3VyY2UudmFsdWUpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHNvdXJjZSwgJ0RvIG5vdCBpbXBvcnQgbW9kdWxlcyB1c2luZyBhbiBhYnNvbHV0ZSBwYXRoJylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IGVzbW9kdWxlOiB0cnVlLCBjb21tb25qczogdHJ1ZSB9LCBjb250ZXh0Lm9wdGlvbnNbMF0pXG4gICAgcmV0dXJuIG1vZHVsZVZpc2l0b3IocmVwb3J0SWZBYnNvbHV0ZSwgb3B0aW9ucylcbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-amd.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-amd.js new file mode 100644 index 0000000..90897f1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-amd.js @@ -0,0 +1,46 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-amd') + }, + schema: [] + }, + + create: function (context) { + return { + 'CallExpression': function (node) { + if (context.getScope().type !== 'module') return; + + if (node.callee.type !== 'Identifier') return; + if (node.callee.name !== 'require' && node.callee.name !== 'define') return; + + // todo: capture define((require, module, exports) => {}) form? + if (node.arguments.length !== 2) return; + + const modules = node.arguments[0]; + if (modules.type !== 'ArrayExpression') return; + + // todo: check second arg type? (identifier or callback) + + context.report(node, `Expected imports instead of AMD ${node.callee.name}().`); + } + }; + } +}; /** + * @fileoverview Rule to prefer imports to AMD + * @author Jamund Ferguson + */ +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1hbWQuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsImNvbnRleHQiLCJub2RlIiwiZ2V0U2NvcGUiLCJjYWxsZWUiLCJuYW1lIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwibW9kdWxlcyIsInJlcG9ydCJdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7Ozs7O0FBRUE7QUFDQTtBQUNBOztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxZQURGO0FBRUpDLFVBQU07QUFDSkMsV0FBSyx1QkFBUSxRQUFSO0FBREQsS0FGRjtBQUtKQyxZQUFRO0FBTEosR0FEUzs7QUFTZkMsVUFBUSxVQUFVQyxPQUFWLEVBQW1CO0FBQ3pCLFdBQU87QUFDTCx3QkFBa0IsVUFBVUMsSUFBVixFQUFnQjtBQUNoQyxZQUFJRCxRQUFRRSxRQUFSLEdBQW1CUCxJQUFuQixLQUE0QixRQUFoQyxFQUEwQzs7QUFFMUMsWUFBSU0sS0FBS0UsTUFBTCxDQUFZUixJQUFaLEtBQXFCLFlBQXpCLEVBQXVDO0FBQ3ZDLFlBQUlNLEtBQUtFLE1BQUwsQ0FBWUMsSUFBWixLQUFxQixTQUFyQixJQUNBSCxLQUFLRSxNQUFMLENBQVlDLElBQVosS0FBcUIsUUFEekIsRUFDbUM7O0FBRW5DO0FBQ0EsWUFBSUgsS0FBS0ksU0FBTCxDQUFlQyxNQUFmLEtBQTBCLENBQTlCLEVBQWlDOztBQUVqQyxjQUFNQyxVQUFVTixLQUFLSSxTQUFMLENBQWUsQ0FBZixDQUFoQjtBQUNBLFlBQUlFLFFBQVFaLElBQVIsS0FBaUIsaUJBQXJCLEVBQXdDOztBQUV4Qzs7QUFFQUssZ0JBQVFRLE1BQVIsQ0FBZVAsSUFBZixFQUFzQixtQ0FBa0NBLEtBQUtFLE1BQUwsQ0FBWUMsSUFBSyxLQUF6RTtBQUNEO0FBakJJLEtBQVA7QUFvQkQ7QUE5QmMsQ0FBakIsQyxDQVhBIiwiZmlsZSI6Im5vLWFtZC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBSdWxlIHRvIHByZWZlciBpbXBvcnRzIHRvIEFNRFxuICogQGF1dGhvciBKYW11bmQgRmVyZ3Vzb25cbiAqL1xuXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZSBEZWZpbml0aW9uXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25vLWFtZCcpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdDYWxsRXhwcmVzc2lvbic6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIGlmIChjb250ZXh0LmdldFNjb3BlKCkudHlwZSAhPT0gJ21vZHVsZScpIHJldHVyblxuXG4gICAgICAgIGlmIChub2RlLmNhbGxlZS50eXBlICE9PSAnSWRlbnRpZmllcicpIHJldHVyblxuICAgICAgICBpZiAobm9kZS5jYWxsZWUubmFtZSAhPT0gJ3JlcXVpcmUnICYmXG4gICAgICAgICAgICBub2RlLmNhbGxlZS5uYW1lICE9PSAnZGVmaW5lJykgcmV0dXJuXG5cbiAgICAgICAgLy8gdG9kbzogY2FwdHVyZSBkZWZpbmUoKHJlcXVpcmUsIG1vZHVsZSwgZXhwb3J0cykgPT4ge30pIGZvcm0/XG4gICAgICAgIGlmIChub2RlLmFyZ3VtZW50cy5sZW5ndGggIT09IDIpIHJldHVyblxuXG4gICAgICAgIGNvbnN0IG1vZHVsZXMgPSBub2RlLmFyZ3VtZW50c1swXVxuICAgICAgICBpZiAobW9kdWxlcy50eXBlICE9PSAnQXJyYXlFeHByZXNzaW9uJykgcmV0dXJuXG5cbiAgICAgICAgLy8gdG9kbzogY2hlY2sgc2Vjb25kIGFyZyB0eXBlPyAoaWRlbnRpZmllciBvciBjYWxsYmFjaylcblxuICAgICAgICBjb250ZXh0LnJlcG9ydChub2RlLCBgRXhwZWN0ZWQgaW1wb3J0cyBpbnN0ZWFkIG9mIEFNRCAke25vZGUuY2FsbGVlLm5hbWV9KCkuYClcbiAgICAgIH0sXG4gICAgfVxuXG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-anonymous-default-export.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-anonymous-default-export.js new file mode 100644 index 0000000..f9ac0d0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-anonymous-default-export.js @@ -0,0 +1,108 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +var _has = require('has'); + +var _has2 = _interopRequireDefault(_has); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * @fileoverview Rule to disallow anonymous default exports. + * @author Duncan Beevers + */ + +const defs = { + ArrayExpression: { + option: 'allowArray', + description: 'If `false`, will report default export of an array', + message: 'Assign array to a variable before exporting as module default' + }, + ArrowFunctionExpression: { + option: 'allowArrowFunction', + description: 'If `false`, will report default export of an arrow function', + message: 'Assign arrow function to a variable before exporting as module default' + }, + CallExpression: { + option: 'allowCallExpression', + description: 'If `false`, will report default export of a function call', + message: 'Assign call result to a variable before exporting as module default', + default: true + }, + ClassDeclaration: { + option: 'allowAnonymousClass', + description: 'If `false`, will report default export of an anonymous class', + message: 'Unexpected default export of anonymous class', + forbid: node => !node.declaration.id + }, + FunctionDeclaration: { + option: 'allowAnonymousFunction', + description: 'If `false`, will report default export of an anonymous function', + message: 'Unexpected default export of anonymous function', + forbid: node => !node.declaration.id + }, + Literal: { + option: 'allowLiteral', + description: 'If `false`, will report default export of a literal', + message: 'Assign literal to a variable before exporting as module default' + }, + ObjectExpression: { + option: 'allowObject', + description: 'If `false`, will report default export of an object expression', + message: 'Assign object to a variable before exporting as module default' + }, + TemplateLiteral: { + option: 'allowLiteral', + description: 'If `false`, will report default export of a literal', + message: 'Assign literal to a variable before exporting as module default' + } +}; + +const schemaProperties = Object.keys(defs).map(key => defs[key]).reduce((acc, def) => { + acc[def.option] = { + description: def.description, + type: 'boolean' + }; + + return acc; +}, {}); + +const defaults = Object.keys(defs).map(key => defs[key]).reduce((acc, def) => { + acc[def.option] = (0, _has2.default)(def, 'default') ? def.default : false; + return acc; +}, {}); + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-anonymous-default-export') + }, + + schema: [{ + type: 'object', + properties: schemaProperties, + 'additionalProperties': false + }] + }, + + create: function (context) { + const options = Object.assign({}, defaults, context.options[0]); + + return { + 'ExportDefaultDeclaration': node => { + const def = defs[node.declaration.type]; + + // Recognized node type and allowed by configuration, + // and has no forbid check, or forbid check return value is truthy + if (def && !options[def.option] && (!def.forbid || def.forbid(node))) { + context.report({ node, message: def.message }); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1hbm9ueW1vdXMtZGVmYXVsdC1leHBvcnQuanMiXSwibmFtZXMiOlsiZGVmcyIsIkFycmF5RXhwcmVzc2lvbiIsIm9wdGlvbiIsImRlc2NyaXB0aW9uIiwibWVzc2FnZSIsIkFycm93RnVuY3Rpb25FeHByZXNzaW9uIiwiQ2FsbEV4cHJlc3Npb24iLCJkZWZhdWx0IiwiQ2xhc3NEZWNsYXJhdGlvbiIsImZvcmJpZCIsIm5vZGUiLCJkZWNsYXJhdGlvbiIsImlkIiwiRnVuY3Rpb25EZWNsYXJhdGlvbiIsIkxpdGVyYWwiLCJPYmplY3RFeHByZXNzaW9uIiwiVGVtcGxhdGVMaXRlcmFsIiwic2NoZW1hUHJvcGVydGllcyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJrZXkiLCJyZWR1Y2UiLCJhY2MiLCJkZWYiLCJ0eXBlIiwiZGVmYXVsdHMiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwiY3JlYXRlIiwiY29udGV4dCIsIm9wdGlvbnMiLCJhc3NpZ24iLCJyZXBvcnQiXSwibWFwcGluZ3MiOiI7O0FBS0E7Ozs7QUFDQTs7Ozs7O0FBTkE7Ozs7O0FBUUEsTUFBTUEsT0FBTztBQUNYQyxtQkFBaUI7QUFDZkMsWUFBUSxZQURPO0FBRWZDLGlCQUFhLG9EQUZFO0FBR2ZDLGFBQVM7QUFITSxHQUROO0FBTVhDLDJCQUF5QjtBQUN2QkgsWUFBUSxvQkFEZTtBQUV2QkMsaUJBQWEsNkRBRlU7QUFHdkJDLGFBQVM7QUFIYyxHQU5kO0FBV1hFLGtCQUFnQjtBQUNkSixZQUFRLHFCQURNO0FBRWRDLGlCQUFhLDJEQUZDO0FBR2RDLGFBQVMscUVBSEs7QUFJZEcsYUFBUztBQUpLLEdBWEw7QUFpQlhDLG9CQUFrQjtBQUNoQk4sWUFBUSxxQkFEUTtBQUVoQkMsaUJBQWEsOERBRkc7QUFHaEJDLGFBQVMsOENBSE87QUFJaEJLLFlBQVNDLElBQUQsSUFBVSxDQUFDQSxLQUFLQyxXQUFMLENBQWlCQztBQUpwQixHQWpCUDtBQXVCWEMsdUJBQXFCO0FBQ25CWCxZQUFRLHdCQURXO0FBRW5CQyxpQkFBYSxpRUFGTTtBQUduQkMsYUFBUyxpREFIVTtBQUluQkssWUFBU0MsSUFBRCxJQUFVLENBQUNBLEtBQUtDLFdBQUwsQ0FBaUJDO0FBSmpCLEdBdkJWO0FBNkJYRSxXQUFTO0FBQ1BaLFlBQVEsY0FERDtBQUVQQyxpQkFBYSxxREFGTjtBQUdQQyxhQUFTO0FBSEYsR0E3QkU7QUFrQ1hXLG9CQUFrQjtBQUNoQmIsWUFBUSxhQURRO0FBRWhCQyxpQkFBYSxnRUFGRztBQUdoQkMsYUFBUztBQUhPLEdBbENQO0FBdUNYWSxtQkFBaUI7QUFDZmQsWUFBUSxjQURPO0FBRWZDLGlCQUFhLHFEQUZFO0FBR2ZDLGFBQVM7QUFITTtBQXZDTixDQUFiOztBQThDQSxNQUFNYSxtQkFBbUJDLE9BQU9DLElBQVAsQ0FBWW5CLElBQVosRUFDdEJvQixHQURzQixDQUNqQkMsR0FBRCxJQUFTckIsS0FBS3FCLEdBQUwsQ0FEUyxFQUV0QkMsTUFGc0IsQ0FFZixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUNwQkQsTUFBSUMsSUFBSXRCLE1BQVIsSUFBa0I7QUFDaEJDLGlCQUFhcUIsSUFBSXJCLFdBREQ7QUFFaEJzQixVQUFNO0FBRlUsR0FBbEI7O0FBS0EsU0FBT0YsR0FBUDtBQUNELENBVHNCLEVBU3BCLEVBVG9CLENBQXpCOztBQVdBLE1BQU1HLFdBQVdSLE9BQU9DLElBQVAsQ0FBWW5CLElBQVosRUFDZG9CLEdBRGMsQ0FDVEMsR0FBRCxJQUFTckIsS0FBS3FCLEdBQUwsQ0FEQyxFQUVkQyxNQUZjLENBRVAsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDcEJELE1BQUlDLElBQUl0QixNQUFSLElBQWtCLG1CQUFJc0IsR0FBSixFQUFTLFNBQVQsSUFBc0JBLElBQUlqQixPQUExQixHQUFvQyxLQUF0RDtBQUNBLFNBQU9nQixHQUFQO0FBQ0QsQ0FMYyxFQUtaLEVBTFksQ0FBakI7O0FBT0FJLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKSixVQUFNLFlBREY7QUFFSkssVUFBTTtBQUNKQyxXQUFLLHVCQUFRLDZCQUFSO0FBREQsS0FGRjs7QUFNSkMsWUFBUSxDQUNOO0FBQ0VQLFlBQU0sUUFEUjtBQUVFUSxrQkFBWWhCLGdCQUZkO0FBR0UsOEJBQXdCO0FBSDFCLEtBRE07QUFOSixHQURTOztBQWdCZmlCLFVBQVEsVUFBVUMsT0FBVixFQUFtQjtBQUN6QixVQUFNQyxVQUFVbEIsT0FBT21CLE1BQVAsQ0FBYyxFQUFkLEVBQWtCWCxRQUFsQixFQUE0QlMsUUFBUUMsT0FBUixDQUFnQixDQUFoQixDQUE1QixDQUFoQjs7QUFFQSxXQUFPO0FBQ0wsa0NBQTZCMUIsSUFBRCxJQUFVO0FBQ3BDLGNBQU1jLE1BQU14QixLQUFLVSxLQUFLQyxXQUFMLENBQWlCYyxJQUF0QixDQUFaOztBQUVBO0FBQ0E7QUFDQSxZQUFJRCxPQUFPLENBQUNZLFFBQVFaLElBQUl0QixNQUFaLENBQVIsS0FBZ0MsQ0FBQ3NCLElBQUlmLE1BQUwsSUFBZWUsSUFBSWYsTUFBSixDQUFXQyxJQUFYLENBQS9DLENBQUosRUFBc0U7QUFDcEV5QixrQkFBUUcsTUFBUixDQUFlLEVBQUU1QixJQUFGLEVBQVFOLFNBQVNvQixJQUFJcEIsT0FBckIsRUFBZjtBQUNEO0FBQ0Y7QUFUSSxLQUFQO0FBV0Q7QUE5QmMsQ0FBakIiLCJmaWxlIjoibm8tYW5vbnltb3VzLWRlZmF1bHQtZXhwb3J0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IFJ1bGUgdG8gZGlzYWxsb3cgYW5vbnltb3VzIGRlZmF1bHQgZXhwb3J0cy5cbiAqIEBhdXRob3IgRHVuY2FuIEJlZXZlcnNcbiAqL1xuXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuaW1wb3J0IGhhcyBmcm9tICdoYXMnXG5cbmNvbnN0IGRlZnMgPSB7XG4gIEFycmF5RXhwcmVzc2lvbjoge1xuICAgIG9wdGlvbjogJ2FsbG93QXJyYXknLFxuICAgIGRlc2NyaXB0aW9uOiAnSWYgYGZhbHNlYCwgd2lsbCByZXBvcnQgZGVmYXVsdCBleHBvcnQgb2YgYW4gYXJyYXknLFxuICAgIG1lc3NhZ2U6ICdBc3NpZ24gYXJyYXkgdG8gYSB2YXJpYWJsZSBiZWZvcmUgZXhwb3J0aW5nIGFzIG1vZHVsZSBkZWZhdWx0JyxcbiAgfSxcbiAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IHtcbiAgICBvcHRpb246ICdhbGxvd0Fycm93RnVuY3Rpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnSWYgYGZhbHNlYCwgd2lsbCByZXBvcnQgZGVmYXVsdCBleHBvcnQgb2YgYW4gYXJyb3cgZnVuY3Rpb24nLFxuICAgIG1lc3NhZ2U6ICdBc3NpZ24gYXJyb3cgZnVuY3Rpb24gdG8gYSB2YXJpYWJsZSBiZWZvcmUgZXhwb3J0aW5nIGFzIG1vZHVsZSBkZWZhdWx0JyxcbiAgfSxcbiAgQ2FsbEV4cHJlc3Npb246IHtcbiAgICBvcHRpb246ICdhbGxvd0NhbGxFeHByZXNzaW9uJyxcbiAgICBkZXNjcmlwdGlvbjogJ0lmIGBmYWxzZWAsIHdpbGwgcmVwb3J0IGRlZmF1bHQgZXhwb3J0IG9mIGEgZnVuY3Rpb24gY2FsbCcsXG4gICAgbWVzc2FnZTogJ0Fzc2lnbiBjYWxsIHJlc3VsdCB0byBhIHZhcmlhYmxlIGJlZm9yZSBleHBvcnRpbmcgYXMgbW9kdWxlIGRlZmF1bHQnLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIENsYXNzRGVjbGFyYXRpb246IHtcbiAgICBvcHRpb246ICdhbGxvd0Fub255bW91c0NsYXNzJyxcbiAgICBkZXNjcmlwdGlvbjogJ0lmIGBmYWxzZWAsIHdpbGwgcmVwb3J0IGRlZmF1bHQgZXhwb3J0IG9mIGFuIGFub255bW91cyBjbGFzcycsXG4gICAgbWVzc2FnZTogJ1VuZXhwZWN0ZWQgZGVmYXVsdCBleHBvcnQgb2YgYW5vbnltb3VzIGNsYXNzJyxcbiAgICBmb3JiaWQ6IChub2RlKSA9PiAhbm9kZS5kZWNsYXJhdGlvbi5pZCxcbiAgfSxcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbjoge1xuICAgIG9wdGlvbjogJ2FsbG93QW5vbnltb3VzRnVuY3Rpb24nLFxuICAgIGRlc2NyaXB0aW9uOiAnSWYgYGZhbHNlYCwgd2lsbCByZXBvcnQgZGVmYXVsdCBleHBvcnQgb2YgYW4gYW5vbnltb3VzIGZ1bmN0aW9uJyxcbiAgICBtZXNzYWdlOiAnVW5leHBlY3RlZCBkZWZhdWx0IGV4cG9ydCBvZiBhbm9ueW1vdXMgZnVuY3Rpb24nLFxuICAgIGZvcmJpZDogKG5vZGUpID0+ICFub2RlLmRlY2xhcmF0aW9uLmlkLFxuICB9LFxuICBMaXRlcmFsOiB7XG4gICAgb3B0aW9uOiAnYWxsb3dMaXRlcmFsJyxcbiAgICBkZXNjcmlwdGlvbjogJ0lmIGBmYWxzZWAsIHdpbGwgcmVwb3J0IGRlZmF1bHQgZXhwb3J0IG9mIGEgbGl0ZXJhbCcsXG4gICAgbWVzc2FnZTogJ0Fzc2lnbiBsaXRlcmFsIHRvIGEgdmFyaWFibGUgYmVmb3JlIGV4cG9ydGluZyBhcyBtb2R1bGUgZGVmYXVsdCcsXG4gIH0sXG4gIE9iamVjdEV4cHJlc3Npb246IHtcbiAgICBvcHRpb246ICdhbGxvd09iamVjdCcsXG4gICAgZGVzY3JpcHRpb246ICdJZiBgZmFsc2VgLCB3aWxsIHJlcG9ydCBkZWZhdWx0IGV4cG9ydCBvZiBhbiBvYmplY3QgZXhwcmVzc2lvbicsXG4gICAgbWVzc2FnZTogJ0Fzc2lnbiBvYmplY3QgdG8gYSB2YXJpYWJsZSBiZWZvcmUgZXhwb3J0aW5nIGFzIG1vZHVsZSBkZWZhdWx0JyxcbiAgfSxcbiAgVGVtcGxhdGVMaXRlcmFsOiB7XG4gICAgb3B0aW9uOiAnYWxsb3dMaXRlcmFsJyxcbiAgICBkZXNjcmlwdGlvbjogJ0lmIGBmYWxzZWAsIHdpbGwgcmVwb3J0IGRlZmF1bHQgZXhwb3J0IG9mIGEgbGl0ZXJhbCcsXG4gICAgbWVzc2FnZTogJ0Fzc2lnbiBsaXRlcmFsIHRvIGEgdmFyaWFibGUgYmVmb3JlIGV4cG9ydGluZyBhcyBtb2R1bGUgZGVmYXVsdCcsXG4gIH0sXG59XG5cbmNvbnN0IHNjaGVtYVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhkZWZzKVxuICAubWFwKChrZXkpID0+IGRlZnNba2V5XSlcbiAgLnJlZHVjZSgoYWNjLCBkZWYpID0+IHtcbiAgICBhY2NbZGVmLm9wdGlvbl0gPSB7XG4gICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIH1cblxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbmNvbnN0IGRlZmF1bHRzID0gT2JqZWN0LmtleXMoZGVmcylcbiAgLm1hcCgoa2V5KSA9PiBkZWZzW2tleV0pXG4gIC5yZWR1Y2UoKGFjYywgZGVmKSA9PiB7XG4gICAgYWNjW2RlZi5vcHRpb25dID0gaGFzKGRlZiwgJ2RlZmF1bHQnKSA/IGRlZi5kZWZhdWx0IDogZmFsc2VcbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9KVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25vLWFub255bW91cy1kZWZhdWx0LWV4cG9ydCcpLFxuICAgIH0sXG5cbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHNjaGVtYVByb3BlcnRpZXMsXG4gICAgICAgICdhZGRpdGlvbmFsUHJvcGVydGllcyc6IGZhbHNlLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMsIGNvbnRleHQub3B0aW9uc1swXSlcblxuICAgIHJldHVybiB7XG4gICAgICAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJzogKG5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgZGVmID0gZGVmc1tub2RlLmRlY2xhcmF0aW9uLnR5cGVdXG5cbiAgICAgICAgLy8gUmVjb2duaXplZCBub2RlIHR5cGUgYW5kIGFsbG93ZWQgYnkgY29uZmlndXJhdGlvbixcbiAgICAgICAgLy8gICBhbmQgaGFzIG5vIGZvcmJpZCBjaGVjaywgb3IgZm9yYmlkIGNoZWNrIHJldHVybiB2YWx1ZSBpcyB0cnV0aHlcbiAgICAgICAgaWYgKGRlZiAmJiAhb3B0aW9uc1tkZWYub3B0aW9uXSAmJiAoIWRlZi5mb3JiaWQgfHwgZGVmLmZvcmJpZChub2RlKSkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7IG5vZGUsIG1lc3NhZ2U6IGRlZi5tZXNzYWdlIH0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-commonjs.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-commonjs.js new file mode 100644 index 0000000..848b797 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-commonjs.js @@ -0,0 +1,128 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const EXPORT_MESSAGE = 'Expected "export" or "export default"', + IMPORT_MESSAGE = 'Expected "import" instead of "require()"'; /** + * @fileoverview Rule to prefer ES6 to CJS + * @author Jamund Ferguson + */ + +function normalizeLegacyOptions(options) { + if (options.indexOf('allow-primitive-modules') >= 0) { + return { allowPrimitiveModules: true }; + } + return options[0] || {}; +} + +function allowPrimitive(node, options) { + if (!options.allowPrimitiveModules) return false; + if (node.parent.type !== 'AssignmentExpression') return false; + return node.parent.right.type !== 'ObjectExpression'; +} + +function allowRequire(node, options) { + return options.allowRequire; +} + +function allowConditionalRequire(node, options) { + return options.allowConditionalRequire !== false; +} + +function validateScope(scope) { + return scope.variableScope.type === 'module'; +} + +// https://github.com/estree/estree/blob/master/es5.md +function isConditional(node) { + if (node.type === 'IfStatement' || node.type === 'TryStatement' || node.type === 'LogicalExpression' || node.type === 'ConditionalExpression') return true; + if (node.parent) return isConditional(node.parent); + return false; +} + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +const schemaString = { enum: ['allow-primitive-modules'] }; +const schemaObject = { + type: 'object', + properties: { + allowPrimitiveModules: { 'type': 'boolean' }, + allowRequire: { 'type': 'boolean' }, + allowConditionalRequire: { 'type': 'boolean' } + }, + additionalProperties: false +}; + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-commonjs') + }, + + schema: { + anyOf: [{ + type: 'array', + items: [schemaString], + additionalItems: false + }, { + type: 'array', + items: [schemaObject], + additionalItems: false + }] + } + }, + + create: function (context) { + const options = normalizeLegacyOptions(context.options); + + return { + + 'MemberExpression': function (node) { + + // module.exports + if (node.object.name === 'module' && node.property.name === 'exports') { + if (allowPrimitive(node, options)) return; + context.report({ node, message: EXPORT_MESSAGE }); + } + + // exports. + if (node.object.name === 'exports') { + const isInScope = context.getScope().variables.some(variable => variable.name === 'exports'); + if (!isInScope) { + context.report({ node, message: EXPORT_MESSAGE }); + } + } + }, + 'CallExpression': function (call) { + if (!validateScope(context.getScope())) return; + + if (call.callee.type !== 'Identifier') return; + if (call.callee.name !== 'require') return; + + if (call.arguments.length !== 1) return; + var module = call.arguments[0]; + + if (module.type !== 'Literal') return; + if (typeof module.value !== 'string') return; + + if (allowRequire(call, options)) return; + + if (allowConditionalRequire(call, options) && isConditional(call.parent)) return; + + // keeping it simple: all 1-string-arg `require` calls are reported + context.report({ + node: call.callee, + message: IMPORT_MESSAGE + }); + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1jb21tb25qcy5qcyJdLCJuYW1lcyI6WyJFWFBPUlRfTUVTU0FHRSIsIklNUE9SVF9NRVNTQUdFIiwibm9ybWFsaXplTGVnYWN5T3B0aW9ucyIsIm9wdGlvbnMiLCJpbmRleE9mIiwiYWxsb3dQcmltaXRpdmVNb2R1bGVzIiwiYWxsb3dQcmltaXRpdmUiLCJub2RlIiwicGFyZW50IiwidHlwZSIsInJpZ2h0IiwiYWxsb3dSZXF1aXJlIiwiYWxsb3dDb25kaXRpb25hbFJlcXVpcmUiLCJ2YWxpZGF0ZVNjb3BlIiwic2NvcGUiLCJ2YXJpYWJsZVNjb3BlIiwiaXNDb25kaXRpb25hbCIsInNjaGVtYVN0cmluZyIsImVudW0iLCJzY2hlbWFPYmplY3QiLCJwcm9wZXJ0aWVzIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJhbnlPZiIsIml0ZW1zIiwiYWRkaXRpb25hbEl0ZW1zIiwiY3JlYXRlIiwiY29udGV4dCIsIm9iamVjdCIsIm5hbWUiLCJwcm9wZXJ0eSIsInJlcG9ydCIsIm1lc3NhZ2UiLCJpc0luU2NvcGUiLCJnZXRTY29wZSIsInZhcmlhYmxlcyIsInNvbWUiLCJ2YXJpYWJsZSIsImNhbGwiLCJjYWxsZWUiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7Ozs7O0FBRUEsTUFBTUEsaUJBQWlCLHVDQUF2QjtBQUFBLE1BQ01DLGlCQUFpQiwwQ0FEdkIsQyxDQVBBOzs7OztBQVVBLFNBQVNDLHNCQUFULENBQWdDQyxPQUFoQyxFQUF5QztBQUN2QyxNQUFJQSxRQUFRQyxPQUFSLENBQWdCLHlCQUFoQixLQUE4QyxDQUFsRCxFQUFxRDtBQUNuRCxXQUFPLEVBQUVDLHVCQUF1QixJQUF6QixFQUFQO0FBQ0Q7QUFDRCxTQUFPRixRQUFRLENBQVIsS0FBYyxFQUFyQjtBQUNEOztBQUVELFNBQVNHLGNB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Y0FBakIsRUFBZjtBQUNEO0FBQ0Y7QUFFRixPQXBCSTtBQXFCTCx3QkFBa0IsVUFBVTJDLElBQVYsRUFBZ0I7QUFDaEMsWUFBSSxDQUFDOUIsY0FBY21CLFFBQVFPLFFBQVIsRUFBZCxDQUFMLEVBQXdDOztBQUV4QyxZQUFJSSxLQUFLQyxNQUFMLENBQVluQyxJQUFaLEtBQXFCLFlBQXpCLEVBQXVDO0FBQ3ZDLFlBQUlrQyxLQUFLQyxNQUFMLENBQVlWLElBQVosS0FBcUIsU0FBekIsRUFBb0M7O0FBRXBDLFlBQUlTLEtBQUtFLFNBQUwsQ0FBZUMsTUFBZixLQUEwQixDQUE5QixFQUFpQztBQUNqQyxZQUFJeEIsU0FBU3FCLEtBQUtFLFNBQUwsQ0FBZSxDQUFmLENBQWI7O0FBRUEsWUFBSXZCLE9BQU9iLElBQVAsS0FBZ0IsU0FBcEIsRUFBK0I7QUFDL0IsWUFBSSxPQUFPYSxPQUFPeUIsS0FBZCxLQUF3QixRQUE1QixFQUFzQzs7QUFFdEMsWUFBSXBDLGFBQWFnQyxJQUFiLEVBQW1CeEMsT0FBbkIsQ0FBSixFQUFpQzs7QUFFakMsWUFBSVMsd0JBQXdCK0IsSUFBeEIsRUFBOEJ4QyxPQUE5QixLQUEwQ2EsY0FBYzJCLEtBQUtuQyxNQUFuQixDQUE5QyxFQUEwRTs7QUFFMUU7QUFDQXdCLGdCQUFRSSxNQUFSLENBQWU7QUFDYjdCLGdCQUFNb0MsS0FBS0MsTUFERTtBQUViUCxtQkFBU3BDO0FBRkksU0FBZjtBQUlEO0FBMUNJLEtBQVA7QUE2Q0Q7QUF2RWMsQ0FBakIiLCJmaWxlIjoibm8tY29tbW9uanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlb3ZlcnZpZXcgUnVsZSB0byBwcmVmZXIgRVM2IHRvIENKU1xuICogQGF1dGhvciBKYW11bmQgRmVyZ3Vzb25cbiAqL1xuXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5jb25zdCBFWFBPUlRfTUVTU0FHRSA9ICdFeHBlY3RlZCBcImV4cG9ydFwiIG9yIFwiZXhwb3J0IGRlZmF1bHRcIidcbiAgICAsIElNUE9SVF9NRVNTQUdFID0gJ0V4cGVjdGVkIFwiaW1wb3J0XCIgaW5zdGVhZCBvZiBcInJlcXVpcmUoKVwiJ1xuXG5mdW5jdGlvbiBub3JtYWxpemVMZWdhY3lPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMuaW5kZXhPZignYWxsb3ctcHJpbWl0aXZlLW1vZHVsZXMnKSA+PSAwKSB7XG4gICAgcmV0dXJuIHsgYWxsb3dQcmltaXRpdmVNb2R1bGVzOiB0cnVlIH1cbiAgfVxuICByZXR1cm4gb3B0aW9uc1swXSB8fCB7fVxufVxuXG5mdW5jdGlvbiBhbGxvd1ByaW1pdGl2ZShub2RlLCBvcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucy5hbGxvd1ByaW1pdGl2ZU1vZHVsZXMpIHJldHVybiBmYWxzZVxuICBpZiAobm9kZS5wYXJlbnQudHlwZSAhPT0gJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJykgcmV0dXJuIGZhbHNlXG4gIHJldHVybiAobm9kZS5wYXJlbnQucmlnaHQudHlwZSAhPT0gJ09iamVjdEV4cHJlc3Npb24nKVxufVxuXG5mdW5jdGlvbiBhbGxvd1JlcXVpcmUobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucy5hbGxvd1JlcXVpcmVcbn1cblxuZnVuY3Rpb24gYWxsb3dDb25kaXRpb25hbFJlcXVpcmUobm9kZSwgb3B0aW9ucykge1xuICByZXR1cm4gb3B0aW9ucy5hbGxvd0NvbmRpdGlvbmFsUmVxdWlyZSAhPT0gZmFsc2Vcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVTY29wZShzY29wZSkge1xuICByZXR1cm4gc2NvcGUudmFyaWFibGVTY29wZS50eXBlID09PSAnbW9kdWxlJ1xufVxuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZXN0cmVlL2VzdHJlZS9ibG9iL21hc3Rlci9lczUubWRcbmZ1bmN0aW9uIGlzQ29uZGl0aW9uYWwobm9kZSkge1xuICBpZiAoXG4gICAgbm9kZS50eXBlID09PSAnSWZTdGF0ZW1lbnQnXG4gICAgfHwgbm9kZS50eXBlID09PSAnVHJ5U3RhdGVtZW50J1xuICAgIHx8IG5vZGUudHlwZSA9PT0gJ0xvZ2ljYWxFeHByZXNzaW9uJ1xuICAgIHx8IG5vZGUudHlwZSA9PT0gJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbidcbiAgKSByZXR1cm4gdHJ1ZVxuICBpZiAobm9kZS5wYXJlbnQpIHJldHVybiBpc0NvbmRpdGlvbmFsKG5vZGUucGFyZW50KVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGUgRGVmaW5pdGlvblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuY29uc3Qgc2NoZW1hU3RyaW5nID0geyBlbnVtOiBbJ2FsbG93LXByaW1pdGl2ZS1tb2R1bGVzJ10gfVxuY29uc3Qgc2NoZW1hT2JqZWN0ID0ge1xuICB0eXBlOiAnb2JqZWN0JyxcbiAgcHJvcGVydGllczoge1xuICAgIGFsbG93UHJpbWl0aXZlTW9kdWxlczogeyAndHlwZSc6ICdib29sZWFuJyB9LFxuICAgIGFsbG93UmVxdWlyZTogeyAndHlwZSc6ICdib29sZWFuJyB9LFxuICAgIGFsbG93Q29uZGl0aW9uYWxSZXF1aXJlOiB7ICd0eXBlJzogJ2Jvb2xlYW4nIH0sXG4gIH0sXG4gIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCduby1jb21tb25qcycpLFxuICAgIH0sXG5cbiAgICBzY2hlbWE6IHtcbiAgICAgIGFueU9mOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIGl0ZW1zOiBbc2NoZW1hU3RyaW5nXSxcbiAgICAgICAgICBhZGRpdGlvbmFsSXRlbXM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBpdGVtczogW3NjaGVtYU9iamVjdF0sXG4gICAgICAgICAgYWRkaXRpb25hbEl0ZW1zOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IG5vcm1hbGl6ZUxlZ2FjeU9wdGlvbnMoY29udGV4dC5vcHRpb25zKVxuXG4gICAgcmV0dXJuIHtcblxuICAgICAgJ01lbWJlckV4cHJlc3Npb24nOiBmdW5jdGlvbiAobm9kZSkge1xuXG4gICAgICAgIC8vIG1vZHVsZS5leHBvcnRzXG4gICAgICAgIGlmIChub2RlLm9iamVjdC5uYW1lID09PSAnbW9kdWxlJyAmJiBub2RlLnByb3BlcnR5Lm5hbWUgPT09ICdleHBvcnRzJykge1xuICAgICAgICAgIGlmIChhbGxvd1ByaW1pdGl2ZShub2RlLCBvcHRpb25zKSkgcmV0dXJuXG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlOiBFWFBPUlRfTUVTU0FHRSB9KVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gZXhwb3J0cy5cbiAgICAgICAgaWYgKG5vZGUub2JqZWN0Lm5hbWUgPT09ICdleHBvcnRzJykge1xuICAgICAgICAgIGNvbnN0IGlzSW5TY29wZSA9IGNvbnRleHQuZ2V0U2NvcGUoKVxuICAgICAgICAgICAgLnZhcmlhYmxlc1xuICAgICAgICAgICAgLnNvbWUodmFyaWFibGUgPT4gdmFyaWFibGUubmFtZSA9PT0gJ2V4cG9ydHMnKVxuICAgICAgICAgIGlmICghIGlzSW5TY29wZSkge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlLCBtZXNzYWdlOiBFWFBPUlRfTUVTU0FHRSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9LFxuICAgICAgJ0NhbGxFeHByZXNzaW9uJzogZnVuY3Rpb24gKGNhbGwpIHtcbiAgICAgICAgaWYgKCF2YWxpZGF0ZVNjb3BlKGNvbnRleHQuZ2V0U2NvcGUoKSkpIHJldHVyblxuXG4gICAgICAgIGlmIChjYWxsLmNhbGxlZS50eXBlICE9PSAnSWRlbnRpZmllcicpIHJldHVyblxuICAgICAgICBpZiAoY2FsbC5jYWxsZWUubmFtZSAhPT0gJ3JlcXVpcmUnKSByZXR1cm5cblxuICAgICAgICBpZiAoY2FsbC5hcmd1bWVudHMubGVuZ3RoICE9PSAxKSByZXR1cm5cbiAgICAgICAgdmFyIG1vZHVsZSA9IGNhbGwuYXJndW1lbnRzWzBdXG5cbiAgICAgICAgaWYgKG1vZHVsZS50eXBlICE9PSAnTGl0ZXJhbCcpIHJldHVyblxuICAgICAgICBpZiAodHlwZW9mIG1vZHVsZS52YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVyblxuXG4gICAgICAgIGlmIChhbGxvd1JlcXVpcmUoY2FsbCwgb3B0aW9ucykpIHJldHVyblxuXG4gICAgICAgIGlmIChhbGxvd0NvbmRpdGlvbmFsUmVxdWlyZShjYWxsLCBvcHRpb25zKSAmJiBpc0NvbmRpdGlvbmFsKGNhbGwucGFyZW50KSkgcmV0dXJuXG5cbiAgICAgICAgLy8ga2VlcGluZyBpdCBzaW1wbGU6IGFsbCAxLXN0cmluZy1hcmcgYHJlcXVpcmVgIGNhbGxzIGFyZSByZXBvcnRlZFxuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZTogY2FsbC5jYWxsZWUsXG4gICAgICAgICAgbWVzc2FnZTogSU1QT1JUX01FU1NBR0UsXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgIH1cblxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-cycle.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-cycle.js new file mode 100644 index 0000000..0327673 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-cycle.js @@ -0,0 +1,105 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); /** + * @fileOverview Ensures that no imported module imports the linted module. + * @author Ben Mosher + */ + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _moduleVisitor = require('eslint-module-utils/moduleVisitor'); + +var _moduleVisitor2 = _interopRequireDefault(_moduleVisitor); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// todo: cache cycles / deep relationships for faster repeat evaluation +module.exports = { + meta: { + type: 'suggestion', + docs: { url: (0, _docsUrl2.default)('no-cycle') }, + schema: [(0, _moduleVisitor.makeOptionsSchema)({ + maxDepth: { + description: 'maximum dependency depth to traverse', + type: 'integer', + minimum: 1 + } + })] + }, + + create: function (context) { + const myPath = context.getFilename(); + if (myPath === '') return {}; // can't cycle-check a non-file + + const options = context.options[0] || {}; + const maxDepth = options.maxDepth || Infinity; + + function checkSourceValue(sourceNode, importer) { + const imported = _ExportMap2.default.get(sourceNode.value, context); + + if (importer.importKind === 'type') { + return; // no Flow import resolution + } + + if (imported == null) { + return; // no-unresolved territory + } + + if (imported.path === myPath) { + return; // no-self-import territory + } + + const untraversed = [{ mget: () => imported, route: [] }]; + const traversed = new Set(); + function detectCycle(_ref) { + let mget = _ref.mget, + route = _ref.route; + + const m = mget(); + if (m == null) return; + if (traversed.has(m.path)) return; + traversed.add(m.path); + + for (let _ref2 of m.imports) { + var _ref3 = _slicedToArray(_ref2, 2); + + let path = _ref3[0]; + var _ref3$ = _ref3[1]; + let getter = _ref3$.getter; + let source = _ref3$.source; + + if (path === myPath) return true; + if (traversed.has(path)) continue; + if (route.length + 1 < maxDepth) { + untraversed.push({ + mget: getter, + route: route.concat(source) + }); + } + } + } + + while (untraversed.length > 0) { + const next = untraversed.shift(); // bfs! + if (detectCycle(next)) { + const message = next.route.length > 0 ? `Dependency cycle via ${routeString(next.route)}` : 'Dependency cycle detected.'; + context.report(importer, message); + return; + } + } + } + + return (0, _moduleVisitor2.default)(checkSourceValue, context.options[0]); + } +}; + +function routeString(route) { + return route.map(s => `${s.value}:${s.loc.start.line}`).join('=>'); +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1jeWNsZS5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwidXJsIiwic2NoZW1hIiwibWF4RGVwdGgiLCJkZXNjcmlwdGlvbiIsIm1pbmltdW0iLCJjcmVhdGUiLCJjb250ZXh0IiwibXlQYXRoIiwiZ2V0RmlsZW5hbWUiLCJvcHRpb25zIiwiSW5maW5pdHkiLCJjaGVja1NvdXJjZVZhbHVlIiwic291cmNlTm9kZSIsImltcG9ydGVyIiwiaW1wb3J0ZWQiLCJFeHBvcnRzIiwiZ2V0IiwidmFsdWUiLCJpbXBvcnRLaW5kIiwicGF0aCIsInVudHJhdmVyc2VkIiwibWdldCIsInJvdXRlIiwidHJhdmVyc2VkIiwiU2V0IiwiZGV0ZWN0Q3ljbGUiLCJtIiwiaGFzIiwiYWRkIiwiaW1wb3J0cyIsImdldHRlciIsInNvdXJjZSIsImxlbmd0aCIsInB1c2giLCJjb25jYXQiLCJuZXh0Iiwic2hpZnQiLCJtZXNzYWdlIiwicm91dGVTdHJpbmciLCJyZXBvcnQiLCJtYXAiLCJzIiwibG9jIiwic3RhcnQiLCJsaW5lIiwiam9pbiJdLCJtYXBwaW5ncyI6Ijs7eXBCQUFBOzs7OztBQUtBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUE7QUFDQUEsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sWUFERjtBQUVKQyxVQUFNLEVBQUVDLEtBQUssdUJBQVEsVUFBUixDQUFQLEVBRkY7QUFHSkMsWUFBUSxDQUFDLHNDQUFrQjtBQUN6QkMsZ0JBQVM7QUFDUEMscUJBQWEsc0NBRE47QUFFUEwsY0FBTSxTQUZDO0FBR1BNLGlCQUFTO0FBSEY7QUFEZ0IsS0FBbEIsQ0FBRDtBQUhKLEdBRFM7O0FBYWZDLFVBQVEsVUFBVUMsT0FBVixFQUFtQjtBQUN6QixVQUFNQyxTQUFTRCxRQUFRRSxXQUFSLEVBQWY7QUFDQSxRQUFJRCxXQUFXLFFBQWYsRUFBeUIsT0FBTyxFQUFQLENBRkEsQ0FFVTs7QUFFbkMsVUFBTUUsVUFBVUgsUUFBUUcsT0FBUixDQUFnQixDQUFoQixLQUFzQixFQUF0QztBQUNBLFVBQU1QLFdBQVdPLFFBQVFQLFFBQVIsSUFBb0JRLFFBQXJDOztBQUVBLGFBQVNDLGdCQUFULENBQTBCQyxVQUExQixFQUFzQ0MsUUFBdEMsRUFBZ0Q7QUFDOUMsWUFBTUMsV0FBV0Msb0JBQVFDLEdBQVIsQ0FBWUosV0FBV0ssS0FBdkIsRUFBOEJYLE9BQTlCLENBQWpCOztBQUVBLFVBQUlPLFNBQVNLLFVBQVQsS0FBd0IsTUFBNUIsRUFBb0M7QUFDbEMsZUFEa0MsQ0FDM0I7QUFDUjs7QUFFRCxVQUFJSixZQUFZLElBQWhCLEVBQXNCO0FBQ3BCLGVBRG9CLENBQ1o7QUFDVDs7QUFFRCxVQUFJQSxTQUFTSyxJQUFULEtBQWtCWixNQUF0QixFQUE4QjtBQUM1QixlQUQ0QixDQUNwQjtBQUNUOztBQUVELFlBQU1hLGNBQWMsQ0FBQyxFQUFDQyxNQUFNLE1BQU1QLFFBQWIsRUFBdUJRLE9BQU0sRUFBN0IsRUFBRCxDQUFwQjtBQUNBLFlBQU1DLFlBQVksSUFBSUMsR0FBSixFQUFsQjtBQUNBLGVBQVNDLFdBQVQsT0FBb0M7QUFBQSxZQUFkSixJQUFjLFFBQWRBLElBQWM7QUFBQSxZQUFSQyxLQUFRLFFBQVJBLEtBQVE7O0FBQ2xDLGNBQU1JLElBQUlMLE1BQVY7QUFDQSxZQUFJSyxLQUFLLElBQVQsRUFBZTtBQUNmLFlBQUlILFVBQVVJLEdBQVYsQ0FBY0QsRUFBRVAsSUFBaEIsQ0FBSixFQUEyQjtBQUMzQkksa0JBQVVLLEdBQVYsQ0FBY0YsRUFBRVAsSUFBaEI7O0FBRUEsMEJBQXVDTyxFQUFFRyxPQUF6QyxFQUFrRDtBQUFBOztBQUFBLGNBQXhDVixJQUF3QztBQUFBO0FBQUEsY0FBaENXLE1BQWdDLFVBQWhDQSxNQUFnQztBQUFBLGNBQXhCQyxNQUF3QixVQUF4QkEsTUFBd0I7O0FBQ2hELGNBQUlaLFNBQVNaLE1BQWIsRUFBcUIsT0FBTyxJQUFQO0FBQ3JCLGNBQUlnQixVQUFVSSxHQUFWLENBQWNSLElBQWQsQ0FBSixFQUF5QjtBQUN6QixjQUFJRyxNQUFNVSxNQUFOLEdBQWUsQ0FBZixHQUFtQjlCLFFBQXZCLEVBQWlDO0FBQy9Ca0Isd0JBQVlhLElBQVosQ0FBaUI7QUFDZlosb0JBQU1TLE1BRFM7QUFFZlIscUJBQU9BLE1BQU1ZLE1BQU4sQ0FBYUgsTUFBYjtBQUZRLGFBQWpCO0FBSUQ7QUFDRjtBQUNGOztBQUVELGFBQU9YLFlBQVlZLE1BQVosR0FBcUIsQ0FBNUIsRUFBK0I7QUFDN0IsY0FBTUcsT0FBT2YsWUFBWWdCLEtBQVosRUFBYixDQUQ2QixDQUNJO0FBQ2pDLFlBQUlYLFlBQVlVLElBQVosQ0FBSixFQUF1QjtBQUNyQixnQkFBTUUsVUFBV0YsS0FBS2IsS0FBTCxDQUFXVSxNQUFYLEdBQW9CLENBQXBCLEdBQ1osd0JBQXVCTSxZQUFZSCxLQUFLYixLQUFqQixDQUF3QixFQURuQyxHQUViLDRCQUZKO0FBR0FoQixrQkFBUWlDLE1BQVIsQ0FBZTFCLFFBQWYsRUFBeUJ3QixPQUF6QjtBQUNBO0FBQ0Q7QUFDRjtBQUNGOztBQUVELFdBQU8sNkJBQWMxQixnQkFBZCxFQUFnQ0wsUUFBUUcsT0FBUixDQUFnQixDQUFoQixDQUFoQyxDQUFQO0FBQ0Q7QUFwRWMsQ0FBakI7O0FBdUVBLFNBQVM2QixXQUFULENBQXFCaEIsS0FBckIsRUFBNEI7QUFDMUIsU0FBT0EsTUFBTWtCLEdBQU4sQ0FBVUMsS0FBTSxHQUFFQSxFQUFFeEIsS0FBTSxJQUFHd0IsRUFBRUMsR0FBRixDQUFNQyxLQUFOLENBQVlDLElBQUssRUFBOUMsRUFBaURDLElBQWpELENBQXNELElBQXRELENBQVA7QUFDRCIsImZpbGUiOiJuby1jeWNsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBFbnN1cmVzIHRoYXQgbm8gaW1wb3J0ZWQgbW9kdWxlIGltcG9ydHMgdGhlIGxpbnRlZCBtb2R1bGUuXG4gKiBAYXV0aG9yIEJlbiBNb3NoZXJcbiAqL1xuXG5pbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9FeHBvcnRNYXAnXG5pbXBvcnQgbW9kdWxlVmlzaXRvciwgeyBtYWtlT3B0aW9uc1NjaGVtYSB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvbW9kdWxlVmlzaXRvcidcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbi8vIHRvZG86IGNhY2hlIGN5Y2xlcyAvIGRlZXAgcmVsYXRpb25zaGlwcyBmb3IgZmFzdGVyIHJlcGVhdCBldmFsdWF0aW9uXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7IHVybDogZG9jc1VybCgnbm8tY3ljbGUnKSB9LFxuICAgIHNjaGVtYTogW21ha2VPcHRpb25zU2NoZW1hKHtcbiAgICAgIG1heERlcHRoOntcbiAgICAgICAgZGVzY3JpcHRpb246ICdtYXhpbXVtIGRlcGVuZGVuY3kgZGVwdGggdG8gdHJhdmVyc2UnLFxuICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgIG1pbmltdW06IDEsXG4gICAgICB9LFxuICAgIH0pXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgY29uc3QgbXlQYXRoID0gY29udGV4dC5nZXRGaWxlbmFtZSgpXG4gICAgaWYgKG15UGF0aCA9PT0gJzx0ZXh0PicpIHJldHVybiB7fSAvLyBjYW4ndCBjeWNsZS1jaGVjayBhIG5vbi1maWxlXG5cbiAgICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zWzBdIHx8IHt9XG4gICAgY29uc3QgbWF4RGVwdGggPSBvcHRpb25zLm1heERlcHRoIHx8IEluZmluaXR5XG5cbiAgICBmdW5jdGlvbiBjaGVja1NvdXJjZVZhbHVlKHNvdXJjZU5vZGUsIGltcG9ydGVyKSB7XG4gICAgICBjb25zdCBpbXBvcnRlZCA9IEV4cG9ydHMuZ2V0KHNvdXJjZU5vZGUudmFsdWUsIGNvbnRleHQpXG5cbiAgICAgIGlmIChpbXBvcnRlci5pbXBvcnRLaW5kID09PSAndHlwZScpIHtcbiAgICAgICAgcmV0dXJuIC8vIG5vIEZsb3cgaW1wb3J0IHJlc29sdXRpb25cbiAgICAgIH1cblxuICAgICAgaWYgKGltcG9ydGVkID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICAvLyBuby11bnJlc29sdmVkIHRlcnJpdG9yeVxuICAgICAgfVxuXG4gICAgICBpZiAoaW1wb3J0ZWQucGF0aCA9PT0gbXlQYXRoKSB7XG4gICAgICAgIHJldHVybiAgLy8gbm8tc2VsZi1pbXBvcnQgdGVycml0b3J5XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHVudHJhdmVyc2VkID0gW3ttZ2V0OiAoKSA9PiBpbXBvcnRlZCwgcm91dGU6W119XVxuICAgICAgY29uc3QgdHJhdmVyc2VkID0gbmV3IFNldCgpXG4gICAgICBmdW5jdGlvbiBkZXRlY3RDeWNsZSh7bWdldCwgcm91dGV9KSB7XG4gICAgICAgIGNvbnN0IG0gPSBtZ2V0KClcbiAgICAgICAgaWYgKG0gPT0gbnVsbCkgcmV0dXJuXG4gICAgICAgIGlmICh0cmF2ZXJzZWQuaGFzKG0ucGF0aCkpIHJldHVyblxuICAgICAgICB0cmF2ZXJzZWQuYWRkKG0ucGF0aClcblxuICAgICAgICBmb3IgKGxldCBbcGF0aCwgeyBnZXR0ZXIsIHNvdXJjZSB9XSBvZiBtLmltcG9ydHMpIHtcbiAgICAgICAgICBpZiAocGF0aCA9PT0gbXlQYXRoKSByZXR1cm4gdHJ1ZVxuICAgICAgICAgIGlmICh0cmF2ZXJzZWQuaGFzKHBhdGgpKSBjb250aW51ZVxuICAgICAgICAgIGlmIChyb3V0ZS5sZW5ndGggKyAxIDwgbWF4RGVwdGgpIHtcbiAgICAgICAgICAgIHVudHJhdmVyc2VkLnB1c2goe1xuICAgICAgICAgICAgICBtZ2V0OiBnZXR0ZXIsXG4gICAgICAgICAgICAgIHJvdXRlOiByb3V0ZS5jb25jYXQoc291cmNlKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdoaWxlICh1bnRyYXZlcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IG5leHQgPSB1bnRyYXZlcnNlZC5zaGlmdCgpIC8vIGJmcyFcbiAgICAgICAgaWYgKGRldGVjdEN5Y2xlKG5leHQpKSB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IChuZXh0LnJvdXRlLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gYERlcGVuZGVuY3kgY3ljbGUgdmlhICR7cm91dGVTdHJpbmcobmV4dC5yb3V0ZSl9YFxuICAgICAgICAgICAgOiAnRGVwZW5kZW5jeSBjeWNsZSBkZXRlY3RlZC4nKVxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KGltcG9ydGVyLCBtZXNzYWdlKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZVZpc2l0b3IoY2hlY2tTb3VyY2VWYWx1ZSwgY29udGV4dC5vcHRpb25zWzBdKVxuICB9LFxufVxuXG5mdW5jdGlvbiByb3V0ZVN0cmluZyhyb3V0ZSkge1xuICByZXR1cm4gcm91dGUubWFwKHMgPT4gYCR7cy52YWx1ZX06JHtzLmxvYy5zdGFydC5saW5lfWApLmpvaW4oJz0+Jylcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-default-export.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-default-export.js new file mode 100644 index 0000000..d9114e6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-default-export.js @@ -0,0 +1,39 @@ +'use strict'; + +module.exports = { + meta: { + type: 'suggestion', + docs: {}, + schema: [] + }, + + create(context) { + // ignore non-modules + if (context.parserOptions.sourceType !== 'module') { + return {}; + } + + const preferNamed = 'Prefer named exports.'; + const noAliasDefault = (_ref) => { + let local = _ref.local; + return `Do not alias \`${local.name}\` as \`default\`. Just export ` + `\`${local.name}\` itself instead.`; + }; + + return { + ExportDefaultDeclaration(node) { + context.report({ node, message: preferNamed }); + }, + + ExportNamedDeclaration(node) { + node.specifiers.forEach(specifier => { + if (specifier.type === 'ExportDefaultSpecifier' && specifier.exported.name === 'default') { + context.report({ node, message: preferNamed }); + } else if (specifier.type === 'ExportSpecifier' && specifier.exported.name === 'default') { + context.report({ node, message: noAliasDefault(specifier) }); + } + }); + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1kZWZhdWx0LWV4cG9ydC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsInBhcnNlck9wdGlvbnMiLCJzb3VyY2VUeXBlIiwicHJlZmVyTmFtZWQiLCJub0FsaWFzRGVmYXVsdCIsImxvY2FsIiwibmFtZSIsIkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbiIsIm5vZGUiLCJyZXBvcnQiLCJtZXNzYWdlIiwiRXhwb3J0TmFtZWREZWNsYXJhdGlvbiIsInNwZWNpZmllcnMiLCJmb3JFYWNoIiwic3BlY2lmaWVyIiwiZXhwb3J0ZWQiXSwibWFwcGluZ3MiOiI7O0FBQUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFlBREY7QUFFSkMsVUFBTSxFQUZGO0FBR0pDLFlBQVE7QUFISixHQURTOztBQU9mQyxTQUFPQyxPQUFQLEVBQWdCO0FBQ2Q7QUFDQSxRQUFJQSxRQUFRQyxhQUFSLENBQXNCQyxVQUF0QixLQUFxQyxRQUF6QyxFQUFtRDtBQUNqRCxhQUFPLEVBQVA7QUFDRDs7QUFFRCxVQUFNQyxjQUFjLHVCQUFwQjtBQUNBLFVBQU1DLGlCQUFpQjtBQUFBLFVBQUVDLEtBQUYsUUFBRUEsS0FBRjtBQUFBLGFBQ3BCLGtCQUFpQkEsTUFBTUMsSUFBSyxpQ0FBN0IsR0FDQyxLQUFJRCxNQUFNQyxJQUFLLG9CQUZLO0FBQUEsS0FBdkI7O0FBSUEsV0FBTztBQUNMQywrQkFBeUJDLElBQXpCLEVBQStCO0FBQzdCUixnQkFBUVMsTUFBUixDQUFlLEVBQUNELElBQUQsRUFBT0UsU0FBU1AsV0FBaEIsRUFBZjtBQUNELE9BSEk7O0FBS0xRLDZCQUF1QkgsSUFBdkIsRUFBNkI7QUFDM0JBLGFBQUtJLFVBQUwsQ0FBZ0JDLE9BQWhCLENBQXdCQyxhQUFhO0FBQ25DLGNBQUlBLFVBQVVsQixJQUFWLEtBQW1CLHdCQUFuQixJQUNBa0IsVUFBVUMsUUFBVixDQUFtQlQsSUFBbkIsS0FBNEIsU0FEaEMsRUFDMkM7QUFDekNOLG9CQUFRUyxNQUFSLENBQWUsRUFBQ0QsSUFBRCxFQUFPRSxTQUFTUCxXQUFoQixFQUFmO0FBQ0QsV0FIRCxNQUdPLElBQUlXLFVBQVVsQixJQUFWLEtBQW1CLGlCQUFuQixJQUNQa0IsVUFBVUMsUUFBVixDQUFtQlQsSUFBbkIsS0FBNEIsU0FEekIsRUFDb0M7QUFDekNOLG9CQUFRUyxNQUFSLENBQWUsRUFBQ0QsSUFBRCxFQUFPRSxTQUFTTixlQUFlVSxTQUFmLENBQWhCLEVBQWY7QUFDRDtBQUNGLFNBUkQ7QUFTRDtBQWZJLEtBQVA7QUFpQkQ7QUFuQ2MsQ0FBakIiLCJmaWxlIjoibm8tZGVmYXVsdC1leHBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7fSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgLy8gaWdub3JlIG5vbi1tb2R1bGVzXG4gICAgaWYgKGNvbnRleHQucGFyc2VyT3B0aW9ucy5zb3VyY2VUeXBlICE9PSAnbW9kdWxlJykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgY29uc3QgcHJlZmVyTmFtZWQgPSAnUHJlZmVyIG5hbWVkIGV4cG9ydHMuJ1xuICAgIGNvbnN0IG5vQWxpYXNEZWZhdWx0ID0gKHtsb2NhbH0pID0+XG4gICAgICBgRG8gbm90IGFsaWFzIFxcYCR7bG9jYWwubmFtZX1cXGAgYXMgXFxgZGVmYXVsdFxcYC4gSnVzdCBleHBvcnQgYCArXG4gICAgICBgXFxgJHtsb2NhbC5uYW1lfVxcYCBpdHNlbGYgaW5zdGVhZC5gXG5cbiAgICByZXR1cm4ge1xuICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKG5vZGUpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQoe25vZGUsIG1lc3NhZ2U6IHByZWZlck5hbWVkfSlcbiAgICAgIH0sXG5cbiAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb24obm9kZSkge1xuICAgICAgICBub2RlLnNwZWNpZmllcnMuZm9yRWFjaChzcGVjaWZpZXIgPT4ge1xuICAgICAgICAgIGlmIChzcGVjaWZpZXIudHlwZSA9PT0gJ0V4cG9ydERlZmF1bHRTcGVjaWZpZXInICYmXG4gICAgICAgICAgICAgIHNwZWNpZmllci5leHBvcnRlZC5uYW1lID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtub2RlLCBtZXNzYWdlOiBwcmVmZXJOYW1lZH0pXG4gICAgICAgICAgfSBlbHNlIGlmIChzcGVjaWZpZXIudHlwZSA9PT0gJ0V4cG9ydFNwZWNpZmllcicgJiZcbiAgICAgICAgICAgICAgc3BlY2lmaWVyLmV4cG9ydGVkLm5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe25vZGUsIG1lc3NhZ2U6IG5vQWxpYXNEZWZhdWx0KHNwZWNpZmllcil9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-deprecated.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-deprecated.js new file mode 100644 index 0000000..954f595 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-deprecated.js @@ -0,0 +1,157 @@ +'use strict'; + +var _declaredScope = require('eslint-module-utils/declaredScope'); + +var _declaredScope2 = _interopRequireDefault(_declaredScope); + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function message(deprecation) { + return 'Deprecated' + (deprecation.description ? ': ' + deprecation.description : '.'); +} + +function getDeprecation(metadata) { + if (!metadata || !metadata.doc) return; + + let deprecation; + if (metadata.doc.tags.some(t => t.title === 'deprecated' && (deprecation = t))) { + return deprecation; + } +} + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-deprecated') + }, + schema: [] + }, + + create: function (context) { + const deprecated = new Map(), + namespaces = new Map(); + + function checkSpecifiers(node) { + if (node.type !== 'ImportDeclaration') return; + if (node.source == null) return; // local export, ignore + + const imports = _ExportMap2.default.get(node.source.value, context); + if (imports == null) return; + + let moduleDeprecation; + if (imports.doc && imports.doc.tags.some(t => t.title === 'deprecated' && (moduleDeprecation = t))) { + context.report({ node, message: message(moduleDeprecation) }); + } + + if (imports.errors.length) { + imports.reportErrors(context, node); + return; + } + + node.specifiers.forEach(function (im) { + let imported, local; + switch (im.type) { + + case 'ImportNamespaceSpecifier': + { + if (!imports.size) return; + namespaces.set(im.local.name, imports); + return; + } + + case 'ImportDefaultSpecifier': + imported = 'default'; + local = im.local.name; + break; + + case 'ImportSpecifier': + imported = im.imported.name; + local = im.local.name; + break; + + default: + return; // can't handle this one + } + + // unknown thing can't be deprecated + const exported = imports.get(imported); + if (exported == null) return; + + // capture import of deep namespace + if (exported.namespace) namespaces.set(local, exported.namespace); + + const deprecation = getDeprecation(imports.get(imported)); + if (!deprecation) return; + + context.report({ node: im, message: message(deprecation) }); + + deprecated.set(local, deprecation); + }); + } + + return { + 'Program': (_ref) => { + let body = _ref.body; + return body.forEach(checkSpecifiers); + }, + + 'Identifier': function (node) { + if (node.parent.type === 'MemberExpression' && node.parent.property === node) { + return; // handled by MemberExpression + } + + // ignore specifier identifiers + if (node.parent.type.slice(0, 6) === 'Import') return; + + if (!deprecated.has(node.name)) return; + + if ((0, _declaredScope2.default)(context, node.name) !== 'module') return; + context.report({ + node, + message: message(deprecated.get(node.name)) + }); + }, + + 'MemberExpression': function (dereference) { + if (dereference.object.type !== 'Identifier') return; + if (!namespaces.has(dereference.object.name)) return; + + if ((0, _declaredScope2.default)(context, dereference.object.name) !== 'module') return; + + // go deep + var namespace = namespaces.get(dereference.object.name); + var namepath = [dereference.object.name]; + // while property is namespace and parent is member expression, keep validating + while (namespace instanceof _ExportMap2.default && dereference.type === 'MemberExpression') { + + // ignore computed parts for now + if (dereference.computed) return; + + const metadata = namespace.get(dereference.property.name); + + if (!metadata) break; + const deprecation = getDeprecation(metadata); + + if (deprecation) { + context.report({ node: dereference.property, message: message(deprecation) }); + } + + // stash and pop + namepath.push(dereference.property.name); + namespace = metadata.namespace; + dereference = dereference.parent; + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1kZXByZWNhdGVkLmpzIl0sIm5hbWVzIjpbIm1lc3NhZ2UiLCJkZXByZWNhdGlvbiIsImRlc2NyaXB0aW9uIiwiZ2V0RGVwcmVjYXRpb24iLCJtZXRhZGF0YSIsImRvYyIsInRhZ3MiLCJzb21lIiwidCIsInRpdGxlIiwibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsImNvbnRleHQiLCJkZXByZWNhdGVkIiwiTWFwIiwibmFtZXNwYWNlcyIsImNoZWNrU3BlY2lmaWVycyIsIm5vZGUiLCJzb3VyY2UiLCJpbXBvcnRzIiwiRXhwb3J0cyIsImdldCIsInZhbHVlIiwibW9kdWxlRGVwcmVjYXRpb24iLCJyZXBvcnQiLCJlcnJvcnMiLCJsZW5ndGgiLCJyZXBvcnRFcnJvcnMiLCJzcGVjaWZpZXJzIiwiZm9yRWFjaCIsImltIiwiaW1wb3J0ZWQiLCJsb2NhbCIsInNpemUiLCJzZXQiLCJuYW1lIiwiZXhwb3J0ZWQiLCJuYW1lc3BhY2UiLCJib2R5IiwicGFyZW50IiwicHJvcGVydHkiLCJzbGljZSIsImhhcyIsImRlcmVmZXJlbmNlIiwib2JqZWN0IiwibmFtZXBhdGgiLCJjb21wdXRlZCIsInB1c2giXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQSxTQUFTQSxPQUFULENBQWlCQyxXQUFqQixFQUE4QjtBQUM1QixTQUFPLGdCQUFnQkEsWUFBWUMsV0FBWixHQUEwQixPQUFPRCxZQUFZQyxXQUE3QyxHQUEyRCxHQUEzRSxDQUFQO0FBQ0Q7O0FBRUQsU0FBU0MsY0FBVCxDQUF3QkMsUUFBeEIsRUFBa0M7QUFDaEMsTUFBSSxDQUFDQSxRQUFELElBQWEsQ0FBQ0EsU0FBU0MsR0FBM0IsRUFBZ0M7O0FBRWhDLE1BQUlKLFdBQUo7QUFDQSxNQUFJRyxTQUFTQyxHQUFULENBQWFDLElBQWIsQ0FBa0JDLElBQWxCLENBQXVCQyxLQUFL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QUFFOUM7QUFDQSxjQUFJb0MsWUFBWUcsUUFBaEIsRUFBMEI7O0FBRTFCLGdCQUFNaEQsV0FBV3VDLFVBQVVoQixHQUFWLENBQWNzQixZQUFZSCxRQUFaLENBQXFCTCxJQUFuQyxDQUFqQjs7QUFFQSxjQUFJLENBQUNyQyxRQUFMLEVBQWU7QUFDZixnQkFBTUgsY0FBY0UsZUFBZUMsUUFBZixDQUFwQjs7QUFFQSxjQUFJSCxXQUFKLEVBQWlCO0FBQ2ZpQixvQkFBUVksTUFBUixDQUFlLEVBQUVQLE1BQU0wQixZQUFZSCxRQUFwQixFQUE4QjlDLFNBQVNBLFFBQVFDLFdBQVIsQ0FBdkMsRUFBZjtBQUNEOztBQUVEO0FBQ0FrRCxtQkFBU0UsSUFBVCxDQUFjSixZQUFZSCxRQUFaLENBQXFCTCxJQUFuQztBQUNBRSxzQkFBWXZDLFNBQVN1QyxTQUFyQjtBQUNBTSx3QkFBY0EsWUFBWUosTUFBMUI7QUFDRDtBQUNGO0FBbERJLEtBQVA7QUFvREQ7QUE1SGMsQ0FBakIiLCJmaWxlIjoibm8tZGVwcmVjYXRlZC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWNsYXJlZFNjb3BlIGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvZGVjbGFyZWRTY29wZSdcbmltcG9ydCBFeHBvcnRzIGZyb20gJy4uL0V4cG9ydE1hcCdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbmZ1bmN0aW9uIG1lc3NhZ2UoZGVwcmVjYXRpb24pIHtcbiAgcmV0dXJuICdEZXByZWNhdGVkJyArIChkZXByZWNhdGlvbi5kZXNjcmlwdGlvbiA/ICc6ICcgKyBkZXByZWNhdGlvbi5kZXNjcmlwdGlvbiA6ICcuJylcbn1cblxuZnVuY3Rpb24gZ2V0RGVwcmVjYXRpb24obWV0YWRhdGEpIHtcbiAgaWYgKCFtZXRhZGF0YSB8fCAhbWV0YWRhdGEuZG9jKSByZXR1cm5cblxuICBsZXQgZGVwcmVjYXRpb25cbiAgaWYgKG1ldGFkYXRhLmRvYy50YWdzLnNvbWUodCA9PiB0LnRpdGxlID09PSAnZGVwcmVjYXRlZCcgJiYgKGRlcHJlY2F0aW9uID0gdCkpKSB7XG4gICAgcmV0dXJuIGRlcHJlY2F0aW9uXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCduby1kZXByZWNhdGVkJyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBkZXByZWNhdGVkID0gbmV3IE1hcCgpXG4gICAgICAgICwgbmFtZXNwYWNlcyA9IG5ldyBNYXAoKVxuXG4gICAgZnVuY3Rpb24gY2hlY2tTcGVjaWZpZXJzKG5vZGUpIHtcbiAgICAgIGlmIChub2RlLnR5cGUgIT09ICdJbXBvcnREZWNsYXJhdGlvbicpIHJldHVyblxuICAgICAgaWYgKG5vZGUuc291cmNlID09IG51bGwpIHJldHVybiAvLyBsb2NhbCBleHBvcnQsIGlnbm9yZVxuXG4gICAgICBjb25zdCBpbXBvcnRzID0gRXhwb3J0cy5nZXQobm9kZS5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgICBpZiAoaW1wb3J0cyA9PSBudWxsKSByZXR1cm5cblxuICAgICAgbGV0IG1vZHVsZURlcHJlY2F0aW9uXG4gICAgICBpZiAoaW1wb3J0cy5kb2MgJiZcbiAgICAgICAgICBpbXBvcnRzLmRvYy50YWdzLnNvbWUodCA9PiB0LnRpdGxlID09PSAnZGVwcmVjYXRlZCcgJiYgKG1vZHVsZURlcHJlY2F0aW9uID0gdCkpKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHsgbm9kZSwgbWVzc2FnZTogbWVzc2FnZShtb2R1bGVEZXByZWNhdGlvbikgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGltcG9ydHMuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICBpbXBvcnRzLnJlcG9ydEVycm9ycyhjb250ZXh0LCBub2RlKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgbm9kZS5zcGVjaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKGltKSB7XG4gICAgICAgIGxldCBpbXBvcnRlZCwgbG9jYWxcbiAgICAgICAgc3dpdGNoIChpbS50eXBlKSB7XG5cblxuICAgICAgICAgIGNhc2UgJ0ltcG9ydE5hbWVzcGFjZVNwZWNpZmllcic6e1xuICAgICAgICAgICAgaWYgKCFpbXBvcnRzLnNpemUpIHJldHVyblxuICAgICAgICAgICAgbmFtZXNwYWNlcy5zZXQoaW0ubG9jYWwubmFtZSwgaW1wb3J0cylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNhc2UgJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInOlxuICAgICAgICAgICAgaW1wb3J0ZWQgPSAnZGVmYXVsdCdcbiAgICAgICAgICAgIGxvY2FsID0gaW0ubG9jYWwubmFtZVxuICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgIGNhc2UgJ0ltcG9ydFNwZWNpZmllcic6XG4gICAgICAgICAgICBpbXBvcnRlZCA9IGltLmltcG9ydGVkLm5hbWVcbiAgICAgICAgICAgIGxvY2FsID0gaW0ubG9jYWwubmFtZVxuICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgIGRlZmF1bHQ6IHJldHVybiAvLyBjYW4ndCBoYW5kbGUgdGhpcyBvbmVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHVua25vd24gdGhpbmcgY2FuJ3QgYmUgZGVwcmVjYXRlZFxuICAgICAgICBjb25zdCBleHBvcnRlZCA9IGltcG9ydHMuZ2V0KGltcG9ydGVkKVxuICAgICAgICBpZiAoZXhwb3J0ZWQgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICAgICAgLy8gY2FwdHVyZSBpbXBvcnQgb2YgZGVlcCBuYW1lc3BhY2VcbiAgICAgICAgaWYgKGV4cG9ydGVkLm5hbWVzcGFjZSkgbmFtZXNwYWNlcy5zZXQobG9jYWwsIGV4cG9ydGVkLm5hbWVzcGFjZSlcblxuICAgICAgICBjb25zdCBkZXByZWNhdGlvbiA9IGdldERlcHJlY2F0aW9uKGltcG9ydHMuZ2V0KGltcG9ydGVkKSlcbiAgICAgICAgaWYgKCFkZXByZWNhdGlvbikgcmV0dXJuXG5cbiAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlOiBpbSwgbWVzc2FnZTogbWVzc2FnZShkZXByZWNhdGlvbikgfSlcblxuICAgICAgICBkZXByZWNhdGVkLnNldChsb2NhbCwgZGVwcmVjYXRpb24pXG5cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdQcm9ncmFtJzogKHsgYm9keSB9KSA9PiBib2R5LmZvckVhY2goY2hlY2tTcGVjaWZpZXJzKSxcblxuICAgICAgJ0lkZW50aWZpZXInOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5wYXJlbnQudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nICYmIG5vZGUucGFyZW50LnByb3BlcnR5ID09PSBub2RlKSB7XG4gICAgICAgICAgcmV0dXJuIC8vIGhhbmRsZWQgYnkgTWVtYmVyRXhwcmVzc2lvblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gaWdub3JlIHNwZWNpZmllciBpZGVudGlmaWVyc1xuICAgICAgICBpZiAobm9kZS5wYXJlbnQudHlwZS5zbGljZSgwLCA2KSA9PT0gJ0ltcG9ydCcpIHJldHVyblxuXG4gICAgICAgIGlmICghZGVwcmVjYXRlZC5oYXMobm9kZS5uYW1lKSkgcmV0dXJuXG5cbiAgICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgbm9kZS5uYW1lKSAhPT0gJ21vZHVsZScpIHJldHVyblxuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBtZXNzYWdlOiBtZXNzYWdlKGRlcHJlY2F0ZWQuZ2V0KG5vZGUubmFtZSkpLFxuICAgICAgICB9KVxuICAgICAgfSxcblxuICAgICAgJ01lbWJlckV4cHJlc3Npb24nOiBmdW5jdGlvbiAoZGVyZWZlcmVuY2UpIHtcbiAgICAgICAgaWYgKGRlcmVmZXJlbmNlLm9iamVjdC50eXBlICE9PSAnSWRlbnRpZmllcicpIHJldHVyblxuICAgICAgICBpZiAoIW5hbWVzcGFjZXMuaGFzKGRlcmVmZXJlbmNlLm9iamVjdC5uYW1lKSkgcmV0dXJuXG5cbiAgICAgICAgaWYgKGRlY2xhcmVkU2NvcGUoY29udGV4dCwgZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpICE9PSAnbW9kdWxlJykgcmV0dXJuXG5cbiAgICAgICAgLy8gZ28gZGVlcFxuICAgICAgICB2YXIgbmFtZXNwYWNlID0gbmFtZXNwYWNlcy5nZXQoZGVyZWZlcmVuY2Uub2JqZWN0Lm5hbWUpXG4gICAgICAgIHZhciBuYW1lcGF0aCA9IFtkZXJlZmVyZW5jZS5vYmplY3QubmFtZV1cbiAgICAgICAgLy8gd2hpbGUgcHJvcGVydHkgaXMgbmFtZXNwYWNlIGFuZCBwYXJlbnQgaXMgbWVtYmVyIGV4cHJlc3Npb24sIGtlZXAgdmFsaWRhdGluZ1xuICAgICAgICB3aGlsZSAobmFtZXNwYWNlIGluc3RhbmNlb2YgRXhwb3J0cyAmJlxuICAgICAgICAgICAgICAgZGVyZWZlcmVuY2UudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nKSB7XG5cbiAgICAgICAgICAvLyBpZ25vcmUgY29tcHV0ZWQgcGFydHMgZm9yIG5vd1xuICAgICAgICAgIGlmIChkZXJlZmVyZW5jZS5jb21wdXRlZCkgcmV0dXJuXG5cbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IG5hbWVzcGFjZS5nZXQoZGVyZWZlcmVuY2UucHJvcGVydHkubmFtZSlcblxuICAgICAgICAgIGlmICghbWV0YWRhdGEpIGJyZWFrXG4gICAgICAgICAgY29uc3QgZGVwcmVjYXRpb24gPSBnZXREZXByZWNhdGlvbihtZXRhZGF0YSlcblxuICAgICAgICAgIGlmIChkZXByZWNhdGlvbikge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoeyBub2RlOiBkZXJlZmVyZW5jZS5wcm9wZXJ0eSwgbWVzc2FnZTogbWVzc2FnZShkZXByZWNhdGlvbikgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBzdGFzaCBhbmQgcG9wXG4gICAgICAgICAgbmFtZXBhdGgucHVzaChkZXJlZmVyZW5jZS5wcm9wZXJ0eS5uYW1lKVxuICAgICAgICAgIG5hbWVzcGFjZSA9IG1ldGFkYXRhLm5hbWVzcGFjZVxuICAgICAgICAgIGRlcmVmZXJlbmNlID0gZGVyZWZlcmVuY2UucGFyZW50XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-duplicates.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-duplicates.js new file mode 100644 index 0000000..7892934 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-duplicates.js @@ -0,0 +1,289 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } + +function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } + +function checkImports(imported, context) { + for (const _ref of imported.entries()) { + var _ref2 = _slicedToArray(_ref, 2); + + const module = _ref2[0]; + const nodes = _ref2[1]; + + if (nodes.length > 1) { + const message = `'${module}' imported multiple times.`; + + var _nodes = _toArray(nodes); + + const first = _nodes[0], + rest = _nodes.slice(1); + + const sourceCode = context.getSourceCode(); + const fix = getFix(first, rest, sourceCode); + + context.report({ + node: first.source, + message, + fix // Attach the autofix (if any) to the first import. + }); + + for (const node of rest) { + context.report({ + node: node.source, + message + }); + } + } + } +} + +function getFix(first, rest, sourceCode) { + // Sorry ESLint <= 3 users, no autofix for you. Autofixing duplicate imports + // requires multiple `fixer.whatever()` calls in the `fix`: We both need to + // update the first one, and remove the rest. Support for multiple + // `fixer.whatever()` in a single `fix` was added in ESLint 4.1. + // `sourceCode.getCommentsBefore` was added in 4.0, so that's an easy thing to + // check for. + if (typeof sourceCode.getCommentsBefore !== 'function') { + return undefined; + } + + // Adjusting the first import might make it multiline, which could break + // `eslint-disable-next-line` comments and similar, so bail if the first + // import has comments. Also, if the first import is `import * as ns from + // './foo'` there's nothing we can do. + if (hasProblematicComments(first, sourceCode) || hasNamespace(first)) { + return undefined; + } + + const defaultImportNames = new Set([first].concat(_toConsumableArray(rest)).map(getDefaultImportName).filter(Boolean)); + + // Bail if there are multiple different default import names – it's up to the + // user to choose which one to keep. + if (defaultImportNames.size > 1) { + return undefined; + } + + // Leave it to the user to handle comments. Also skip `import * as ns from + // './foo'` imports, since they cannot be merged into another import. + const restWithoutComments = rest.filter(node => !(hasProblematicComments(node, sourceCode) || hasNamespace(node))); + + const specifiers = restWithoutComments.map(node => { + const tokens = sourceCode.getTokens(node); + const openBrace = tokens.find(token => isPunctuator(token, '{')); + const closeBrace = tokens.find(token => isPunctuator(token, '}')); + + if (openBrace == null || closeBrace == null) { + return undefined; + } + + return { + importNode: node, + text: sourceCode.text.slice(openBrace.range[1], closeBrace.range[0]), + hasTrailingComma: isPunctuator(sourceCode.getTokenBefore(closeBrace), ','), + isEmpty: !hasSpecifiers(node) + }; + }).filter(Boolean); + + const unnecessaryImports = restWithoutComments.filter(node => !hasSpecifiers(node) && !hasNamespace(node) && !specifiers.some(specifier => specifier.importNode === node)); + + const shouldAddDefault = getDefaultImportName(first) == null && defaultImportNames.size === 1; + const shouldAddSpecifiers = specifiers.length > 0; + const shouldRemoveUnnecessary = unnecessaryImports.length > 0; + + if (!(shouldAddDefault || shouldAddSpecifiers || shouldRemoveUnnecessary)) { + return undefined; + } + + return fixer => { + const tokens = sourceCode.getTokens(first); + const openBrace = tokens.find(token => isPunctuator(token, '{')); + const closeBrace = tokens.find(token => isPunctuator(token, '}')); + const firstToken = sourceCode.getFirstToken(first); + + var _defaultImportNames = _slicedToArray(defaultImportNames, 1); + + const defaultImportName = _defaultImportNames[0]; + + + const firstHasTrailingComma = closeBrace != null && isPunctuator(sourceCode.getTokenBefore(closeBrace), ','); + const firstIsEmpty = !hasSpecifiers(first); + + var _specifiers$reduce = specifiers.reduce((_ref3, specifier) => { + var _ref4 = _slicedToArray(_ref3, 2); + + let result = _ref4[0], + needsComma = _ref4[1]; + + return [needsComma && !specifier.isEmpty ? `${result},${specifier.text}` : `${result}${specifier.text}`, specifier.isEmpty ? needsComma : true]; + }, ['', !firstHasTrailingComma && !firstIsEmpty]), + _specifiers$reduce2 = _slicedToArray(_specifiers$reduce, 1); + + const specifiersText = _specifiers$reduce2[0]; + + + const fixes = []; + + if (shouldAddDefault && openBrace == null && shouldAddSpecifiers) { + // `import './foo'` → `import def, {...} from './foo'` + fixes.push(fixer.insertTextAfter(firstToken, ` ${defaultImportName}, {${specifiersText}} from`)); + } else if (shouldAddDefault && openBrace == null && !shouldAddSpecifiers) { + // `import './foo'` → `import def from './foo'` + fixes.push(fixer.insertTextAfter(firstToken, ` ${defaultImportName} from`)); + } else if (shouldAddDefault && openBrace != null && closeBrace != null) { + // `import {...} from './foo'` → `import def, {...} from './foo'` + fixes.push(fixer.insertTextAfter(firstToken, ` ${defaultImportName},`)); + if (shouldAddSpecifiers) { + // `import def, {...} from './foo'` → `import def, {..., ...} from './foo'` + fixes.push(fixer.insertTextBefore(closeBrace, specifiersText)); + } + } else if (!shouldAddDefault && openBrace == null && shouldAddSpecifiers) { + if (first.specifiers.length === 0) { + // `import './foo'` → `import {...} from './foo'` + fixes.push(fixer.insertTextAfter(firstToken, ` {${specifiersText}} from`)); + } else { + // `import def from './foo'` → `import def, {...} from './foo'` + fixes.push(fixer.insertTextAfter(first.specifiers[0], `, {${specifiersText}}`)); + } + } else if (!shouldAddDefault && openBrace != null && closeBrace != null) { + // `import {...} './foo'` → `import {..., ...} from './foo'` + fixes.push(fixer.insertTextBefore(closeBrace, specifiersText)); + } + + // Remove imports whose specifiers have been moved into the first import. + for (const specifier of specifiers) { + fixes.push(fixer.remove(specifier.importNode)); + } + + // Remove imports whose default import has been moved to the first import, + // and side-effect-only imports that are unnecessary due to the first + // import. + for (const node of unnecessaryImports) { + fixes.push(fixer.remove(node)); + } + + return fixes; + }; +} + +function isPunctuator(node, value) { + return node.type === 'Punctuator' && node.value === value; +} + +// Get the name of the default import of `node`, if any. +function getDefaultImportName(node) { + const defaultSpecifier = node.specifiers.find(specifier => specifier.type === 'ImportDefaultSpecifier'); + return defaultSpecifier != null ? defaultSpecifier.local.name : undefined; +} + +// Checks whether `node` has a namespace import. +function hasNamespace(node) { + const specifiers = node.specifiers.filter(specifier => specifier.type === 'ImportNamespaceSpecifier'); + return specifiers.length > 0; +} + +// Checks whether `node` has any non-default specifiers. +function hasSpecifiers(node) { + const specifiers = node.specifiers.filter(specifier => specifier.type === 'ImportSpecifier'); + return specifiers.length > 0; +} + +// It's not obvious what the user wants to do with comments associated with +// duplicate imports, so skip imports with comments when autofixing. +function hasProblematicComments(node, sourceCode) { + return hasCommentBefore(node, sourceCode) || hasCommentAfter(node, sourceCode) || hasCommentInsideNonSpecifiers(node, sourceCode); +} + +// Checks whether `node` has a comment (that ends) on the previous line or on +// the same line as `node` (starts). +function hasCommentBefore(node, sourceCode) { + return sourceCode.getCommentsBefore(node).some(comment => comment.loc.end.line >= node.loc.start.line - 1); +} + +// Checks whether `node` has a comment (that starts) on the same line as `node` +// (ends). +function hasCommentAfter(node, sourceCode) { + return sourceCode.getCommentsAfter(node).some(comment => comment.loc.start.line === node.loc.end.line); +} + +// Checks whether `node` has any comments _inside,_ except inside the `{...}` +// part (if any). +function hasCommentInsideNonSpecifiers(node, sourceCode) { + const tokens = sourceCode.getTokens(node); + const openBraceIndex = tokens.findIndex(token => isPunctuator(token, '{')); + const closeBraceIndex = tokens.findIndex(token => isPunctuator(token, '}')); + // Slice away the first token, since we're no looking for comments _before_ + // `node` (only inside). If there's a `{...}` part, look for comments before + // the `{`, but not before the `}` (hence the `+1`s). + const someTokens = openBraceIndex >= 0 && closeBraceIndex >= 0 ? tokens.slice(1, openBraceIndex + 1).concat(tokens.slice(closeBraceIndex + 1)) : tokens.slice(1); + return someTokens.some(token => sourceCode.getCommentsBefore(token).length > 0); +} + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('no-duplicates') + }, + fixable: 'code', + schema: [{ + type: 'object', + properties: { + considerQueryString: { + type: 'boolean' + } + }, + additionalProperties: false + }] + }, + + create: function (context) { + // Prepare the resolver from options. + const considerQueryStringOption = context.options[0] && context.options[0]['considerQueryString']; + const defaultResolver = sourcePath => (0, _resolve2.default)(sourcePath, context) || sourcePath; + const resolver = considerQueryStringOption ? sourcePath => { + const parts = sourcePath.match(/^([^?]*)\?(.*)$/); + if (!parts) { + return defaultResolver(sourcePath); + } + return defaultResolver(parts[1]) + '?' + parts[2]; + } : defaultResolver; + + const imported = new Map(); + const nsImported = new Map(); + const typesImported = new Map(); + return { + 'ImportDeclaration': function (n) { + // resolved path will cover aliased duplicates + const resolvedPath = resolver(n.source.value); + const importMap = n.importKind === 'type' ? typesImported : hasNamespace(n) ? nsImported : imported; + + if (importMap.has(resolvedPath)) { + importMap.get(resolvedPath).push(n); + } else { + importMap.set(resolvedPath, [n]); + } + }, + + 'Program:exit': function () { + checkImports(imported, context); + checkImports(nsImported, context); + checkImports(typesImported, context); + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1kdXBsaWNhdGVzLmpzIl0sIm5hbWVzIjpbImNoZWNrSW1wb3J0cyIsImltcG9ydGVkIiwiY29udGV4dCIsImVudHJpZXMiLCJtb2R1bGUiLCJub2RlcyIsImxlbmd0aCIsIm1lc3NhZ2UiLCJmaXJzdCIsInJlc3QiLCJzb3VyY2VDb2RlIiwiZ2V0U291cmNlQ29kZSIsImZpeCIsImdldEZpeCIsInJlcG9ydCIsIm5vZGUiLCJzb3VyY2UiLCJnZXRDb21tZW50c0JlZm9yZSIsInVuZGVmaW5lZCIsImhhc1Byb2JsZW1hdGljQ29tbWVudHMiLCJoYXNOYW1lc3BhY2UiLCJkZWZhdWx0SW1wb3J0TmFtZXMiLCJTZXQiLCJtYXAiLCJnZXREZWZhdWx0SW1wb3J0TmFtZSIsImZpbHRlciIsIkJvb2xlYW4iLCJzaXplIiwicmVzdFdpdGhvdXRDb21tZW50cyIsInNwZWNpZmllcnMiLCJ0b2tlbnMiLCJnZXRUb2tlbnMiLCJvcGVuQnJhY2UiLCJmaW5kIiwidG9rZW4iLCJpc1B1bmN0dWF0b3IiLCJjbG9zZUJyYWNlIiwiaW1wb3J0Tm9kZSIsInRleHQiLCJzbGljZSIsInJhbmdlIiwiaGFzVHJhaWxpbmdDb21tYSIsImdldFRva2VuQmVmb3JlIiwiaXNFbXB0eSIsImhhc1NwZWNpZmllcnMiLCJ1bm5lY2Vzc2FyeUltcG9ydHMiLCJzb21lIiwic3BlY2lmaWVyIiwic2hvdWxkQWRkRGVmYXVsdCIsInNob3VsZEFkZFNwZWNpZmllcnMiLCJzaG91bGRSZW1vdmVVbm5lY2Vzc2FyeSIsImZpeGVyIiwiZmlyc3RUb2tlbiIsImdldEZpcnN0VG9rZW4iLCJkZWZhdWx0SW1wb3J0TmFtZSIsImZpcnN0SGFzVHJhaWxpbmdDb21tYSIsImZpcnN0SXNFbXB0eSIsInJlZHVjZSIsInJlc3VsdCIsIm5lZWRzQ29tbWEiLCJzcGVjaWZpZXJzVGV4dCIsImZpeGVzIiwicHVzaCIsImluc2VydFRleHRBZnRlciIsImluc2VydFRleHRCZWZvcmUiLCJyZW1vdmUiLCJ2YWx1ZSIsInR5cGUiLCJkZWZhdWx0U3BlY2lmaWVyIiwibG9jYWwiLCJuYW1lIiwiaGFzQ29tbWVudEJlZm9yZSIsImhhc0NvbW1lbnRBZnRlciIsImhhc0NvbW1lbnRJbnNpZGVOb25TcGVjaWZpZXJzIiwiY29tbWVudCIsImxvYyIsImVuZCIsImxpbmUiLCJzdGFydCIsImdldENvbW1lbnRzQWZ0ZXIiLCJvcGVuQnJhY2VJbmRleCIsImZpbmRJbmRleCIsImNsb3NlQnJhY2VJbmRleCIsInNvbWVUb2tlbnMiLCJjb25jYXQiLCJleHBvcnRzIiwibWV0YSIsImRvY3MiLCJ1cmwiLCJmaXhhYmxlIiwic2NoZW1hIiwicHJvcGVydGllcyIsImNvbnNpZGVyUXVlcnlTdHJpbmciLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsImNyZWF0ZSIsImNvbnNpZGVyUXVlcnlTdHJpbmdPcHRpb24iLCJvcHRpb25zIiwiZGVmYXVsdFJlc29sdmVyIiwic291cmNlUGF0aCIsInJlc29sdmVyIiwicGFydHMiLCJtYXRjaCIsIk1hcCIsIm5zSW1wb3J0ZWQiLCJ0eXBlc0ltcG9ydGVkIiwibiIsInJlc29sdmVkUGF0aCIsImltcG9ydE1hcCIsImltcG9ydEtpbmQiLCJoYXMiLCJnZXQiLCJzZXQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7Ozs7Ozs7O0FBRUEsU0FBU0EsWUFBVCxDQUFzQkMsUUFBdEIsRUFBZ0NDLE9BQWhDLEVBQXlDO0FBQ3ZDLHFCQUE4QkQsU0FBU0UsT0FBVCxFQUE5QixFQUFrRDtBQUFBOztBQUFBLFVBQXRDQyxNQUFzQztBQUFBLFVBQTlCQyxLQUE4Qjs7QUFDaEQsUUFBSUEsTUFBTUMsTUFBTixHQUFlLENBQW5CLEVBQXNCO0FBQ3BCLFlBQU1DLFVBQVcsSUFBR0gsTUFBTyw0QkFBM0I7O0FBRG9CLDRCQUVLQyxLQUZMOztBQUFBLFlBRWJHLEtBRmE7QUFBQSxZQUVIQyxJQUZHOztBQUdwQixZQUFNQyxhQUFhUixRQUFRUyxhQUFSLEVBQW5CO0FBQ0EsWUFB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ZmlsZSI6Im5vLWR1cGxpY2F0ZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVzb2x2ZSBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3Jlc29sdmUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5mdW5jdGlvbiBjaGVja0ltcG9ydHMoaW1wb3J0ZWQsIGNvbnRleHQpIHtcbiAgZm9yIChjb25zdCBbbW9kdWxlLCBub2Rlc10gb2YgaW1wb3J0ZWQuZW50cmllcygpKSB7XG4gICAgaWYgKG5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgJyR7bW9kdWxlfScgaW1wb3J0ZWQgbXVsdGlwbGUgdGltZXMuYFxuICAgICAgY29uc3QgW2ZpcnN0LCAuLi5yZXN0XSA9IG5vZGVzXG4gICAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKClcbiAgICAgIGNvbnN0IGZpeCA9IGdldEZpeChmaXJzdCwgcmVzdCwgc291cmNlQ29kZSlcblxuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBub2RlOiBmaXJzdC5zb3VyY2UsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGZpeCwgLy8gQXR0YWNoIHRoZSBhdXRvZml4IChpZiBhbnkpIHRvIHRoZSBmaXJzdCBpbXBvcnQuXG4gICAgICB9KVxuXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgcmVzdCkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZTogbm9kZS5zb3VyY2UsXG4gICAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Rml4KGZpcnN0LCByZXN0LCBzb3VyY2VDb2RlKSB7XG4gIC8vIFNvcnJ5IEVTTGludCA8PSAzIHVzZXJzLCBubyBhdXRvZml4IGZvciB5b3UuIEF1dG9maXhpbmcgZHVwbGljYXRlIGltcG9ydHNcbiAgLy8gcmVxdWlyZXMgbXVsdGlwbGUgYGZpeGVyLndoYXRldmVyKClgIGNhbGxzIGluIHRoZSBgZml4YDogV2UgYm90aCBuZWVkIHRvXG4gIC8vIHVwZGF0ZSB0aGUgZmlyc3Qgb25lLCBhbmQgcmVtb3ZlIHRoZSByZXN0LiBTdXBwb3J0IGZvciBtdWx0aXBsZVxuICAvLyBgZml4ZXIud2hhdGV2ZXIoKWAgaW4gYSBzaW5nbGUgYGZpeGAgd2FzIGFkZGVkIGluIEVTTGludCA0LjEuXG4gIC8vIGBzb3VyY2VDb2RlLmdldENvbW1lbnRzQmVmb3JlYCB3YXMgYWRkZWQgaW4gNC4wLCBzbyB0aGF0J3MgYW4gZWFzeSB0aGluZyB0b1xuICAvLyBjaGVjayBmb3IuXG4gIGlmICh0eXBlb2Ygc291cmNlQ29kZS5nZXRDb21tZW50c0JlZm9yZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8vIEFkanVzdGluZyB0aGUgZmlyc3QgaW1wb3J0IG1pZ2h0IG1ha2UgaXQgbXVsdGlsaW5lLCB3aGljaCBjb3VsZCBicmVha1xuICAvLyBgZXNsaW50LWRpc2FibGUtbmV4dC1saW5lYCBjb21tZW50cyBhbmQgc2ltaWxhciwgc28gYmFpbCBpZiB0aGUgZmlyc3RcbiAgLy8gaW1wb3J0IGhhcyBjb21tZW50cy4gQWxzbywgaWYgdGhlIGZpcnN0IGltcG9ydCBpcyBgaW1wb3J0ICogYXMgbnMgZnJvbVxuICAvLyAnLi9mb28nYCB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuIGRvLlxuICBpZiAoaGFzUHJvYmxlbWF0aWNDb21tZW50cyhmaXJzdCwgc291cmNlQ29kZSkgfHwgaGFzTmFtZXNwYWNlKGZpcnN0KSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IGRlZmF1bHRJbXBvcnROYW1lcyA9IG5ldyBTZXQoXG4gICAgW2ZpcnN0LCAuLi5yZXN0XS5tYXAoZ2V0RGVmYXVsdEltcG9ydE5hbWUpLmZpbHRlcihCb29sZWFuKVxuICApXG5cbiAgLy8gQmFpbCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZGlmZmVyZW50IGRlZmF1bHQgaW1wb3J0IG5hbWVzIOKAkyBpdCdzIHVwIHRvIHRoZVxuICAvLyB1c2VyIHRvIGNob29zZSB3aGljaCBvbmUgdG8ga2VlcC5cbiAgaWYgKGRlZmF1bHRJbXBvcnROYW1lcy5zaXplID4gMSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIC8vIExlYXZlIGl0IHRvIHRoZSB1c2VyIHRvIGhhbmRsZSBjb21tZW50cy4gQWxzbyBza2lwIGBpbXBvcnQgKiBhcyBucyBmcm9tXG4gIC8vICcuL2ZvbydgIGltcG9ydHMsIHNpbmNlIHRoZXkgY2Fubm90IGJlIG1lcmdlZCBpbnRvIGFub3RoZXIgaW1wb3J0LlxuICBjb25zdCByZXN0V2l0aG91dENvbW1lbnRzID0gcmVzdC5maWx0ZXIobm9kZSA9PiAhKFxuICAgIGhhc1Byb2JsZW1hdGljQ29tbWVudHMobm9kZSwgc291cmNlQ29kZSkgfHxcbiAgICBoYXNOYW1lc3BhY2Uobm9kZSlcbiAgKSlcblxuICBjb25zdCBzcGVjaWZpZXJzID0gcmVzdFdpdGhvdXRDb21tZW50c1xuICAgIC5tYXAobm9kZSA9PiB7XG4gICAgICBjb25zdCB0b2tlbnMgPSBzb3VyY2VDb2RlLmdldFRva2Vucyhub2RlKVxuICAgICAgY29uc3Qgb3BlbkJyYWNlID0gdG9rZW5zLmZpbmQodG9rZW4gPT4gaXNQdW5jdHVhdG9yKHRva2VuLCAneycpKVxuICAgICAgY29uc3QgY2xvc2VCcmFjZSA9IHRva2Vucy5maW5kKHRva2VuID0+IGlzUHVuY3R1YXRvcih0b2tlbiwgJ30nKSlcblxuICAgICAgaWYgKG9wZW5CcmFjZSA9PSBudWxsIHx8IGNsb3NlQnJhY2UgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGltcG9ydE5vZGU6IG5vZGUsXG4gICAgICAgIHRleHQ6IHNvdXJjZUNvZGUudGV4dC5zbGljZShvcGVuQnJhY2UucmFuZ2VbMV0sIGNsb3NlQnJhY2UucmFuZ2VbMF0pLFxuICAgICAgICBoYXNUcmFpbGluZ0NvbW1hOiBpc1B1bmN0dWF0b3Ioc291cmNlQ29kZS5nZXRUb2tlbkJlZm9yZShjbG9zZUJyYWNlKSwgJywnKSxcbiAgICAgICAgaXNFbXB0eTogIWhhc1NwZWNpZmllcnMobm9kZSksXG4gICAgICB9XG4gICAgfSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG5cbiAgY29uc3QgdW5uZWNlc3NhcnlJbXBvcnRzID0gcmVzdFdpdGhvdXRDb21tZW50cy5maWx0ZXIobm9kZSA9PlxuICAgICFoYXNTcGVjaWZpZXJzKG5vZGUpICYmXG4gICAgIWhhc05hbWVzcGFjZShub2RlKSAmJlxuICAgICFzcGVjaWZpZXJzLnNvbWUoc3BlY2lmaWVyID0+IHNwZWNpZmllci5pbXBvcnROb2RlID09PSBub2RlKVxuICApXG5cbiAgY29uc3Qgc2hvdWxkQWRkRGVmYXVsdCA9IGdldERlZmF1bHRJbXBvcnROYW1lKGZpcnN0KSA9PSBudWxsICYmIGRlZmF1bHRJbXBvcnROYW1lcy5zaXplID09PSAxXG4gIGNvbnN0IHNob3VsZEFkZFNwZWNpZmllcnMgPSBzcGVjaWZpZXJzLmxlbmd0aCA+IDBcbiAgY29uc3Qgc2hvdWxkUmVtb3ZlVW5uZWNlc3NhcnkgPSB1bm5lY2Vzc2FyeUltcG9ydHMubGVuZ3RoID4gMFxuXG4gIGlmICghKHNob3VsZEFkZERlZmF1bHQgfHwgc2hvdWxkQWRkU3BlY2lmaWVycyB8fCBzaG91bGRSZW1vdmVVbm5lY2Vzc2FyeSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICByZXR1cm4gZml4ZXIgPT4ge1xuICAgIGNvbnN0IHRva2VucyA9IHNvdXJjZUNvZGUuZ2V0VG9rZW5zKGZpcnN0KVxuICAgIGNvbnN0IG9wZW5CcmFjZSA9IHRva2Vucy5maW5kKHRva2VuID0+IGlzUHVuY3R1YXRvcih0b2tlbiwgJ3snKSlcbiAgICBjb25zdCBjbG9zZUJyYWNlID0gdG9rZW5zLmZpbmQodG9rZW4gPT4gaXNQdW5jdHVhdG9yKHRva2VuLCAnfScpKVxuICAgIGNvbnN0IGZpcnN0VG9rZW4gPSBzb3VyY2VDb2RlLmdldEZpcnN0VG9rZW4oZmlyc3QpXG4gICAgY29uc3QgW2RlZmF1bHRJbXBvcnROYW1lXSA9IGRlZmF1bHRJbXBvcnROYW1lc1xuXG4gICAgY29uc3QgZmlyc3RIYXNUcmFpbGluZ0NvbW1hID1cbiAgICAgIGNsb3NlQnJhY2UgIT0gbnVsbCAmJlxuICAgICAgaXNQdW5jdHVhdG9yKHNvdXJjZUNvZGUuZ2V0VG9rZW5CZWZvcmUoY2xvc2VCcmFjZSksICcsJylcbiAgICBjb25zdCBmaXJzdElzRW1wdHkgPSAhaGFzU3BlY2lmaWVycyhmaXJzdClcblxuICAgIGNvbnN0IFtzcGVjaWZpZXJzVGV4dF0gPSBzcGVjaWZpZXJzLnJlZHVjZShcbiAgICAgIChbcmVzdWx0LCBuZWVkc0NvbW1hXSwgc3BlY2lmaWVyKSA9PiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgbmVlZHNDb21tYSAmJiAhc3BlY2lmaWVyLmlzRW1wdHlcbiAgICAgICAgICAgID8gYCR7cmVzdWx0fSwke3NwZWNpZmllci50ZXh0fWBcbiAgICAgICAgICAgIDogYCR7cmVzdWx0fSR7c3BlY2lmaWVyLnRleHR9YCxcbiAgICAgICAgICBzcGVjaWZpZXIuaXNFbXB0eSA/IG5lZWRzQ29tbWEgOiB0cnVlLFxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgWycnLCAhZmlyc3RIYXNUcmFpbGluZ0NvbW1hICYmICFmaXJzdElzRW1wdHldXG4gICAgKVxuXG4gICAgY29uc3QgZml4ZXMgPSBbXVxuXG4gICAgaWYgKHNob3VsZEFkZERlZmF1bHQgJiYgb3BlbkJyYWNlID09IG51bGwgJiYgc2hvdWxkQWRkU3BlY2lmaWVycykge1xuICAgICAgLy8gYGltcG9ydCAnLi9mb28nYCDihpIgYGltcG9ydCBkZWYsIHsuLi59IGZyb20gJy4vZm9vJ2BcbiAgICAgIGZpeGVzLnB1c2goXG4gICAgICAgIGZpeGVyLmluc2VydFRleHRBZnRlcihmaXJzdFRva2VuLCBgICR7ZGVmYXVsdEltcG9ydE5hbWV9LCB7JHtzcGVjaWZpZXJzVGV4dH19IGZyb21gKVxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoc2hvdWxkQWRkRGVmYXVsdCAmJiBvcGVuQnJhY2UgPT0gbnVsbCAmJiAhc2hvdWxkQWRkU3BlY2lmaWVycykge1xuICAgICAgLy8gYGltcG9ydCAnLi9mb28nYCDihpIgYGltcG9ydCBkZWYgZnJvbSAnLi9mb28nYFxuICAgICAgZml4ZXMucHVzaChmaXhlci5pbnNlcnRUZXh0QWZ0ZXIoZmlyc3RUb2tlbiwgYCAke2RlZmF1bHRJbXBvcnROYW1lfSBmcm9tYCkpXG4gICAgfSBlbHNlIGlmIChzaG91bGRBZGREZWZhdWx0ICYmIG9wZW5CcmFjZSAhPSBudWxsICYmIGNsb3NlQnJhY2UgIT0gbnVsbCkge1xuICAgICAgLy8gYGltcG9ydCB7Li4ufSBmcm9tICcuL2ZvbydgIOKGkiBgaW1wb3J0IGRlZiwgey4uLn0gZnJvbSAnLi9mb28nYFxuICAgICAgZml4ZXMucHVzaChmaXhlci5pbnNlcnRUZXh0QWZ0ZXIoZmlyc3RUb2tlbiwgYCAke2RlZmF1bHRJbXBvcnROYW1lfSxgKSlcbiAgICAgIGlmIChzaG91bGRBZGRTcGVjaWZpZXJzKSB7XG4gICAgICAgIC8vIGBpbXBvcnQgZGVmLCB7Li4ufSBmcm9tICcuL2ZvbydgIOKGkiBgaW1wb3J0IGRlZiwgey4uLiwgLi4ufSBmcm9tICcuL2ZvbydgXG4gICAgICAgIGZpeGVzLnB1c2goZml4ZXIuaW5zZXJ0VGV4dEJlZm9yZShjbG9zZUJyYWNlLCBzcGVjaWZpZXJzVGV4dCkpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghc2hvdWxkQWRkRGVmYXVsdCAmJiBvcGVuQnJhY2UgPT0gbnVsbCAmJiBzaG91bGRBZGRTcGVjaWZpZXJzKSB7XG4gICAgICBpZiAoZmlyc3Quc3BlY2lmaWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgLy8gYGltcG9ydCAnLi9mb28nYCDihpIgYGltcG9ydCB7Li4ufSBmcm9tICcuL2ZvbydgXG4gICAgICAgIGZpeGVzLnB1c2goZml4ZXIuaW5zZXJ0VGV4dEFmdGVyKGZpcnN0VG9rZW4sIGAgeyR7c3BlY2lmaWVyc1RleHR9fSBmcm9tYCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBgaW1wb3J0IGRlZiBmcm9tICcuL2ZvbydgIOKGkiBgaW1wb3J0IGRlZiwgey4uLn0gZnJvbSAnLi9mb28nYFxuICAgICAgICBmaXhlcy5wdXNoKGZpeGVyLmluc2VydFRleHRBZnRlcihmaXJzdC5zcGVjaWZpZXJzWzBdLCBgLCB7JHtzcGVjaWZpZXJzVGV4dH19YCkpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghc2hvdWxkQWRkRGVmYXVsdCAmJiBvcGVuQnJhY2UgIT0gbnVsbCAmJiBjbG9zZUJyYWNlICE9IG51bGwpIHtcbiAgICAgIC8vIGBpbXBvcnQgey4uLn0gJy4vZm9vJ2Ag4oaSIGBpbXBvcnQgey4uLiwgLi4ufSBmcm9tICcuL2ZvbydgXG4gICAgICBmaXhlcy5wdXNoKGZpeGVyLmluc2VydFRleHRCZWZvcmUoY2xvc2VCcmFjZSwgc3BlY2lmaWVyc1RleHQpKVxuICAgIH1cblxuICAgIC8vIFJlbW92ZSBpbXBvcnRzIHdob3NlIHNwZWNpZmllcnMgaGF2ZSBiZWVuIG1vdmVkIGludG8gdGhlIGZpcnN0IGltcG9ydC5cbiAgICBmb3IgKGNvbnN0IHNwZWNpZmllciBvZiBzcGVjaWZpZXJzKSB7XG4gICAgICBmaXhlcy5wdXNoKGZpeGVyLnJlbW92ZShzcGVjaWZpZXIuaW1wb3J0Tm9kZSkpXG4gICAgfVxuXG4gICAgLy8gUmVtb3ZlIGltcG9ydHMgd2hvc2UgZGVmYXVsdCBpbXBvcnQgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIGZpcnN0IGltcG9ydCxcbiAgICAvLyBhbmQgc2lkZS1lZmZlY3Qtb25seSBpbXBvcnRzIHRoYXQgYXJlIHVubmVjZXNzYXJ5IGR1ZSB0byB0aGUgZmlyc3RcbiAgICAvLyBpbXBvcnQuXG4gICAgZm9yIChjb25zdCBub2RlIG9mIHVubmVjZXNzYXJ5SW1wb3J0cykge1xuICAgICAgZml4ZXMucHVzaChmaXhlci5yZW1vdmUobm9kZSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZpeGVzXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQdW5jdHVhdG9yKG5vZGUsIHZhbHVlKSB7XG4gIHJldHVybiBub2RlLnR5cGUgPT09ICdQdW5jdHVhdG9yJyAmJiBub2RlLnZhbHVlID09PSB2YWx1ZVxufVxuXG4vLyBHZXQgdGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgaW1wb3J0IG9mIGBub2RlYCwgaWYgYW55LlxuZnVuY3Rpb24gZ2V0RGVmYXVsdEltcG9ydE5hbWUobm9kZSkge1xuICBjb25zdCBkZWZhdWx0U3BlY2lmaWVyID0gbm9kZS5zcGVjaWZpZXJzXG4gICAgLmZpbmQoc3BlY2lmaWVyID0+IHNwZWNpZmllci50eXBlID09PSAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcicpXG4gIHJldHVybiBkZWZhdWx0U3BlY2lmaWVyICE9IG51bGwgPyBkZWZhdWx0U3BlY2lmaWVyLmxvY2FsLm5hbWUgOiB1bmRlZmluZWRcbn1cblxuLy8gQ2hlY2tzIHdoZXRoZXIgYG5vZGVgIGhhcyBhIG5hbWVzcGFjZSBpbXBvcnQuXG5mdW5jdGlvbiBoYXNOYW1lc3BhY2Uobm9kZSkge1xuICBjb25zdCBzcGVjaWZpZXJzID0gbm9kZS5zcGVjaWZpZXJzXG4gICAgLmZpbHRlcihzcGVjaWZpZXIgPT4gc3BlY2lmaWVyLnR5cGUgPT09ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInKVxuICByZXR1cm4gc3BlY2lmaWVycy5sZW5ndGggPiAwXG59XG5cbi8vIENoZWNrcyB3aGV0aGVyIGBub2RlYCBoYXMgYW55IG5vbi1kZWZhdWx0IHNwZWNpZmllcnMuXG5mdW5jdGlvbiBoYXNTcGVjaWZpZXJzKG5vZGUpIHtcbiAgY29uc3Qgc3BlY2lmaWVycyA9IG5vZGUuc3BlY2lmaWVyc1xuICAgIC5maWx0ZXIoc3BlY2lmaWVyID0+IHNwZWNpZmllci50eXBlID09PSAnSW1wb3J0U3BlY2lmaWVyJylcbiAgcmV0dXJuIHNwZWNpZmllcnMubGVuZ3RoID4gMFxufVxuXG4vLyBJdCdzIG5vdCBvYnZpb3VzIHdoYXQgdGhlIHVzZXIgd2FudHMgdG8gZG8gd2l0aCBjb21tZW50cyBhc3NvY2lhdGVkIHdpdGhcbi8vIGR1cGxpY2F0ZSBpbXBvcnRzLCBzbyBza2lwIGltcG9ydHMgd2l0aCBjb21tZW50cyB3aGVuIGF1dG9maXhpbmcuXG5mdW5jdGlvbiBoYXNQcm9ibGVtYXRpY0NvbW1lbnRzKG5vZGUsIHNvdXJjZUNvZGUpIHtcbiAgcmV0dXJuIChcbiAgICBoYXNDb21tZW50QmVmb3JlKG5vZGUsIHNvdXJjZUNvZGUpIHx8XG4gICAgaGFzQ29tbWVudEFmdGVyKG5vZGUsIHNvdXJjZUNvZGUpIHx8XG4gICAgaGFzQ29tbWVudEluc2lkZU5vblNwZWNpZmllcnMobm9kZSwgc291cmNlQ29kZSlcbiAgKVxufVxuXG4vLyBDaGVja3Mgd2hldGhlciBgbm9kZWAgaGFzIGEgY29tbWVudCAodGhhdCBlbmRzKSBvbiB0aGUgcHJldmlvdXMgbGluZSBvciBvblxuLy8gdGhlIHNhbWUgbGluZSBhcyBgbm9kZWAgKHN0YXJ0cykuXG5mdW5jdGlvbiBoYXNDb21tZW50QmVmb3JlKG5vZGUsIHNvdXJjZUNvZGUpIHtcbiAgcmV0dXJuIHNvdXJjZUNvZGUuZ2V0Q29tbWVudHNCZWZvcmUobm9kZSlcbiAgICAuc29tZShjb21tZW50ID0+IGNvbW1lbnQubG9jLmVuZC5saW5lID49IG5vZGUubG9jLnN0YXJ0LmxpbmUgLSAxKVxufVxuXG4vLyBDaGVja3Mgd2hldGhlciBgbm9kZWAgaGFzIGEgY29tbWVudCAodGhhdCBzdGFydHMpIG9uIHRoZSBzYW1lIGxpbmUgYXMgYG5vZGVgXG4vLyAoZW5kcykuXG5mdW5jdGlvbiBoYXNDb21tZW50QWZ0ZXIobm9kZSwgc291cmNlQ29kZSkge1xuICByZXR1cm4gc291cmNlQ29kZS5nZXRDb21tZW50c0FmdGVyKG5vZGUpXG4gICAgLnNvbWUoY29tbWVudCA9PiBjb21tZW50LmxvYy5zdGFydC5saW5lID09PSBub2RlLmxvYy5lbmQubGluZSlcbn1cblxuLy8gQ2hlY2tzIHdoZXRoZXIgYG5vZGVgIGhhcyBhbnkgY29tbWVudHMgX2luc2lkZSxfIGV4Y2VwdCBpbnNpZGUgdGhlIGB7Li4ufWBcbi8vIHBhcnQgKGlmIGFueSkuXG5mdW5jdGlvbiBoYXNDb21tZW50SW5zaWRlTm9uU3BlY2lmaWVycyhub2RlLCBzb3VyY2VDb2RlKSB7XG4gIGNvbnN0IHRva2VucyA9IHNvdXJjZUNvZGUuZ2V0VG9rZW5zKG5vZGUpXG4gIGNvbnN0IG9wZW5CcmFjZUluZGV4ID0gdG9rZW5zLmZpbmRJbmRleCh0b2tlbiA9PiBpc1B1bmN0dWF0b3IodG9rZW4sICd7JykpXG4gIGNvbnN0IGNsb3NlQnJhY2VJbmRleCA9IHRva2Vucy5maW5kSW5kZXgodG9rZW4gPT4gaXNQdW5jdHVhdG9yKHRva2VuLCAnfScpKVxuICAvLyBTbGljZSBhd2F5IHRoZSBmaXJzdCB0b2tlbiwgc2luY2Ugd2UncmUgbm8gbG9va2luZyBmb3IgY29tbWVudHMgX2JlZm9yZV9cbiAgLy8gYG5vZGVgIChvbmx5IGluc2lkZSkuIElmIHRoZXJlJ3MgYSBgey4uLn1gIHBhcnQsIGxvb2sgZm9yIGNvbW1lbnRzIGJlZm9yZVxuICAvLyB0aGUgYHtgLCBidXQgbm90IGJlZm9yZSB0aGUgYH1gIChoZW5jZSB0aGUgYCsxYHMpLlxuICBjb25zdCBzb21lVG9rZW5zID0gb3BlbkJyYWNlSW5kZXggPj0gMCAmJiBjbG9zZUJyYWNlSW5kZXggPj0gMFxuICAgID8gdG9rZW5zLnNsaWNlKDEsIG9wZW5CcmFjZUluZGV4ICsgMSkuY29uY2F0KHRva2Vucy5zbGljZShjbG9zZUJyYWNlSW5kZXggKyAxKSlcbiAgICA6IHRva2Vucy5zbGljZSgxKVxuICByZXR1cm4gc29tZVRva2Vucy5zb21lKHRva2VuID0+IHNvdXJjZUNvZGUuZ2V0Q29tbWVudHNCZWZvcmUodG9rZW4pLmxlbmd0aCA+IDApXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tZHVwbGljYXRlcycpLFxuICAgIH0sXG4gICAgZml4YWJsZTogJ2NvZGUnLFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGNvbnNpZGVyUXVlcnlTdHJpbmc6IHtcbiAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIC8vIFByZXBhcmUgdGhlIHJlc29sdmVyIGZyb20gb3B0aW9ucy5cbiAgICBjb25zdCBjb25zaWRlclF1ZXJ5U3RyaW5nT3B0aW9uID0gY29udGV4dC5vcHRpb25zWzBdICYmXG4gICAgICBjb250ZXh0Lm9wdGlvbnNbMF1bJ2NvbnNpZGVyUXVlcnlTdHJpbmcnXVxuICAgIGNvbnN0IGRlZmF1bHRSZXNvbHZlciA9IHNvdXJjZVBhdGggPT4gcmVzb2x2ZShzb3VyY2VQYXRoLCBjb250ZXh0KSB8fCBzb3VyY2VQYXRoXG4gICAgY29uc3QgcmVzb2x2ZXIgPSBjb25zaWRlclF1ZXJ5U3RyaW5nT3B0aW9uID8gKHNvdXJjZVBhdGggPT4ge1xuICAgICAgY29uc3QgcGFydHMgPSBzb3VyY2VQYXRoLm1hdGNoKC9eKFteP10qKVxcPyguKikkLylcbiAgICAgIGlmICghcGFydHMpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRSZXNvbHZlcihzb3VyY2VQYXRoKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRlZmF1bHRSZXNvbHZlcihwYXJ0c1sxXSkgKyAnPycgKyBwYXJ0c1syXVxuICAgIH0pIDogZGVmYXVsdFJlc29sdmVyXG5cbiAgICBjb25zdCBpbXBvcnRlZCA9IG5ldyBNYXAoKVxuICAgIGNvbnN0IG5zSW1wb3J0ZWQgPSBuZXcgTWFwKClcbiAgICBjb25zdCB0eXBlc0ltcG9ydGVkID0gbmV3IE1hcCgpXG4gICAgcmV0dXJuIHtcbiAgICAgICdJbXBvcnREZWNsYXJhdGlvbic6IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIC8vIHJlc29sdmVkIHBhdGggd2lsbCBjb3ZlciBhbGlhc2VkIGR1cGxpY2F0ZXNcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZXIobi5zb3VyY2UudmFsdWUpXG4gICAgICAgIGNvbnN0IGltcG9ydE1hcCA9IG4uaW1wb3J0S2luZCA9PT0gJ3R5cGUnID8gdHlwZXNJbXBvcnRlZCA6XG4gICAgICAgICAgKGhhc05hbWVzcGFjZShuKSA/IG5zSW1wb3J0ZWQgOiBpbXBvcnRlZClcblxuICAgICAgICBpZiAoaW1wb3J0TWFwLmhhcyhyZXNvbHZlZFBhdGgpKSB7XG4gICAgICAgICAgaW1wb3J0TWFwLmdldChyZXNvbHZlZFBhdGgpLnB1c2gobilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbXBvcnRNYXAuc2V0KHJlc29sdmVkUGF0aCwgW25dKVxuICAgICAgICB9XG4gICAgICB9LFxuXG4gICAgICAnUHJvZ3JhbTpleGl0JzogZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0ltcG9ydHMoaW1wb3J0ZWQsIGNvbnRleHQpXG4gICAgICAgIGNoZWNrSW1wb3J0cyhuc0ltcG9ydGVkLCBjb250ZXh0KVxuICAgICAgICBjaGVja0ltcG9ydHModHlwZXNJbXBvcnRlZCwgY29udGV4dClcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-dynamic-require.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-dynamic-require.js new file mode 100644 index 0000000..c981ee2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-dynamic-require.js @@ -0,0 +1,39 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isRequire(node) { + return node && node.callee && node.callee.type === 'Identifier' && node.callee.name === 'require' && node.arguments.length >= 1; +} + +function isStaticValue(arg) { + return arg.type === 'Literal' || arg.type === 'TemplateLiteral' && arg.expressions.length === 0; +} + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-dynamic-require') + }, + schema: [] + }, + + create: function (context) { + return { + CallExpression(node) { + if (isRequire(node) && !isStaticValue(node.arguments[0])) { + context.report({ + node, + message: 'Calls to require() should use string literals' + }); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1keW5hbWljLXJlcXVpcmUuanMiXSwibmFtZXMiOlsiaXNSZXF1aXJlIiwibm9kZSIsImNhbGxlZSIsInR5cGUiLCJuYW1lIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiaXNTdGF0aWNWYWx1ZSIsImFyZyIsImV4cHJlc3Npb25zIiwibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJkb2NzIiwidXJsIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsIkNhbGxFeHByZXNzaW9uIiwicmVwb3J0IiwibWVzc2FnZSJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7Ozs7O0FBRUEsU0FBU0EsU0FBVCxDQUFtQkMsSUFBbkIsRUFBeUI7QUFDdkIsU0FBT0EsUUFDTEEsS0FBS0MsTUFEQSxJQUVMRCxLQUFLQyxNQUFMLENBQVlDLElBQVosS0FBcUIsWUFGaEIsSUFHTEYsS0FBS0MsTUFBTCxDQUFZRSxJQUFaLEtBQXFCLFNBSGhCLElBSUxILEtBQUtJLFNBQUwsQ0FBZUMsTUFBZixJQUF5QixDQUozQjtBQUtEOztBQUVELFNBQVNDLGFBQVQsQ0FBdUJDLEdBQXZCLEVBQTRCO0FBQzFCLFNBQU9BLElBQUlMLElBQUosS0FBYSxTQUFiLElBQ0pLLElBQUlMLElBQUosS0FBYSxpQkFBYixJQUFrQ0ssSUFBSUMsV0FBSixDQUFnQkgsTUFBaEIsS0FBMkIsQ0FEaEU7QUFFRDs7QUFFREksT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pULFVBQU0sWUFERjtBQUVKVSxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsb0JBQVI7QUFERCxLQUZGO0FBS0pDLFlBQVE7QUFMSixHQURTOztBQVNmQyxVQUFRLFVBQVVDLE9BQVYsRUFBbUI7QUFDekIsV0FBTztBQUNMQyxxQkFBZWpCLElBQWYsRUFBcUI7QUFDbkIsWUFBSUQsVUFBVUMsSUFBVixLQUFtQixDQUFDTSxjQUFjTixLQUFLSSxTQUFMLENBQWUsQ0FBZixDQUFkLENBQXhCLEVBQTBEO0FBQ3hEWSxrQkFBUUUsTUFBUixDQUFlO0FBQ2JsQixnQkFEYTtBQUVibUIscUJBQVM7QUFGSSxXQUFmO0FBSUQ7QUFDRjtBQVJJLEtBQVA7QUFVRDtBQXBCYyxDQUFqQiIsImZpbGUiOiJuby1keW5hbWljLXJlcXVpcmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5mdW5jdGlvbiBpc1JlcXVpcmUobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJlxuICAgIG5vZGUuY2FsbGVlICYmXG4gICAgbm9kZS5jYWxsZWUudHlwZSA9PT0gJ0lkZW50aWZpZXInICYmXG4gICAgbm9kZS5jYWxsZWUubmFtZSA9PT0gJ3JlcXVpcmUnICYmXG4gICAgbm9kZS5hcmd1bWVudHMubGVuZ3RoID49IDFcbn1cblxuZnVuY3Rpb24gaXNTdGF0aWNWYWx1ZShhcmcpIHtcbiAgcmV0dXJuIGFyZy50eXBlID09PSAnTGl0ZXJhbCcgfHxcbiAgICAoYXJnLnR5cGUgPT09ICdUZW1wbGF0ZUxpdGVyYWwnICYmIGFyZy5leHByZXNzaW9ucy5sZW5ndGggPT09IDApXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tZHluYW1pYy1yZXF1aXJlJyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgQ2FsbEV4cHJlc3Npb24obm9kZSkge1xuICAgICAgICBpZiAoaXNSZXF1aXJlKG5vZGUpICYmICFpc1N0YXRpY1ZhbHVlKG5vZGUuYXJndW1lbnRzWzBdKSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBtZXNzYWdlOiAnQ2FsbHMgdG8gcmVxdWlyZSgpIHNob3VsZCB1c2Ugc3RyaW5nIGxpdGVyYWxzJyxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-extraneous-dependencies.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-extraneous-dependencies.js new file mode 100644 index 0000000..91499e3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-extraneous-dependencies.js @@ -0,0 +1,229 @@ +'use strict'; + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _fs = require('fs'); + +var _fs2 = _interopRequireDefault(_fs); + +var _readPkgUp = require('read-pkg-up'); + +var _readPkgUp2 = _interopRequireDefault(_readPkgUp); + +var _minimatch = require('minimatch'); + +var _minimatch2 = _interopRequireDefault(_minimatch); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _importType = require('../core/importType'); + +var _importType2 = _interopRequireDefault(_importType); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function hasKeys() { + let obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + return Object.keys(obj).length > 0; +} + +function arrayOrKeys(arrayOrObject) { + return Array.isArray(arrayOrObject) ? arrayOrObject : Object.keys(arrayOrObject); +} + +function extractDepFields(pkg) { + return { + dependencies: pkg.dependencies || {}, + devDependencies: pkg.devDependencies || {}, + optionalDependencies: pkg.optionalDependencies || {}, + peerDependencies: pkg.peerDependencies || {}, + // BundledDeps should be in the form of an array, but object notation is also supported by + // `npm`, so we convert it to an array if it is an object + bundledDependencies: arrayOrKeys(pkg.bundleDependencies || pkg.bundledDependencies || []) + }; +} + +function getDependencies(context, packageDir) { + let paths = []; + try { + const packageContent = { + dependencies: {}, + devDependencies: {}, + optionalDependencies: {}, + peerDependencies: {}, + bundledDependencies: [] + }; + + if (packageDir && packageDir.length > 0) { + if (!Array.isArray(packageDir)) { + paths = [_path2.default.resolve(packageDir)]; + } else { + paths = packageDir.map(dir => _path2.default.resolve(dir)); + } + } + + if (paths.length > 0) { + // use rule config to find package.json + paths.forEach(dir => { + const _packageContent = extractDepFields(JSON.parse(_fs2.default.readFileSync(_path2.default.join(dir, 'package.json'), 'utf8'))); + Object.keys(packageContent).forEach(depsKey => Object.assign(packageContent[depsKey], _packageContent[depsKey])); + }); + } else { + // use closest package.json + Object.assign(packageContent, extractDepFields(_readPkgUp2.default.sync({ cwd: context.getFilename(), normalize: false }).pkg)); + } + + if (![packageContent.dependencies, packageContent.devDependencies, packageContent.optionalDependencies, packageContent.peerDependencies, packageContent.bundledDependencies].some(hasKeys)) { + return null; + } + + return packageContent; + } catch (e) { + if (paths.length > 0 && e.code === 'ENOENT') { + context.report({ + message: 'The package.json file could not be found.', + loc: { line: 0, column: 0 } + }); + } + if (e.name === 'JSONError' || e instanceof SyntaxError) { + context.report({ + message: 'The package.json file could not be parsed: ' + e.message, + loc: { line: 0, column: 0 } + }); + } + + return null; + } +} + +function missingErrorMessage(packageName) { + return `'${packageName}' should be listed in the project's dependencies. ` + `Run 'npm i -S ${packageName}' to add it`; +} + +function devDepErrorMessage(packageName) { + return `'${packageName}' should be listed in the project's dependencies, not devDependencies.`; +} + +function optDepErrorMessage(packageName) { + return `'${packageName}' should be listed in the project's dependencies, ` + `not optionalDependencies.`; +} + +function reportIfMissing(context, deps, depsOptions, node, name) { + // Do not report when importing types + if (node.importKind === 'type') { + return; + } + + if ((0, _importType2.default)(name, context) !== 'external') { + return; + } + + const resolved = (0, _resolve2.default)(name, context); + if (!resolved) { + return; + } + + const splitName = name.split('/'); + const packageName = splitName[0][0] === '@' ? splitName.slice(0, 2).join('/') : splitName[0]; + const isInDeps = deps.dependencies[packageName] !== undefined; + const isInDevDeps = deps.devDependencies[packageName] !== undefined; + const isInOptDeps = deps.optionalDependencies[packageName] !== undefined; + const isInPeerDeps = deps.peerDependencies[packageName] !== undefined; + const isInBundledDeps = deps.bundledDependencies.indexOf(packageName) !== -1; + + if (isInDeps || depsOptions.allowDevDeps && isInDevDeps || depsOptions.allowPeerDeps && isInPeerDeps || depsOptions.allowOptDeps && isInOptDeps || depsOptions.allowBundledDeps && isInBundledDeps) { + return; + } + + if (isInDevDeps && !depsOptions.allowDevDeps) { + context.report(node, devDepErrorMessage(packageName)); + return; + } + + if (isInOptDeps && !depsOptions.allowOptDeps) { + context.report(node, optDepErrorMessage(packageName)); + return; + } + + context.report(node, missingErrorMessage(packageName)); +} + +function testConfig(config, filename) { + // Simplest configuration first, either a boolean or nothing. + if (typeof config === 'boolean' || typeof config === 'undefined') { + return config; + } + // Array of globs. + return config.some(c => (0, _minimatch2.default)(filename, c) || (0, _minimatch2.default)(filename, _path2.default.join(process.cwd(), c))); +} + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('no-extraneous-dependencies') + }, + + schema: [{ + 'type': 'object', + 'properties': { + 'devDependencies': { 'type': ['boolean', 'array'] }, + 'optionalDependencies': { 'type': ['boolean', 'array'] }, + 'peerDependencies': { 'type': ['boolean', 'array'] }, + 'bundledDependencies': { 'type': ['boolean', 'array'] }, + 'packageDir': { 'type': ['string', 'array'] } + }, + 'additionalProperties': false + }] + }, + + create: function (context) { + const options = context.options[0] || {}; + const filename = context.getFilename(); + const deps = getDependencies(context, options.packageDir) || extractDepFields({}); + + const depsOptions = { + allowDevDeps: testConfig(options.devDependencies, filename) !== false, + allowOptDeps: testConfig(options.optionalDependencies, filename) !== false, + allowPeerDeps: testConfig(options.peerDependencies, filename) !== false, + allowBundledDeps: testConfig(options.bundledDependencies, filename) !== false + + // todo: use module visitor from module-utils core + };return { + ImportDeclaration: function (node) { + if (node.source) { + reportIfMissing(context, deps, depsOptions, node, node.source.value); + } + }, + ExportNamedDeclaration: function (node) { + if (node.source) { + reportIfMissing(context, deps, depsOptions, node, node.source.value); + } + }, + ExportAllDeclaration: function (node) { + if (node.source) { + reportIfMissing(context, deps, depsOptions, node, node.source.value); + } + }, + CallExpression: function handleRequires(node) { + if ((0, _staticRequire2.default)(node)) { + reportIfMissing(context, deps, depsOptions, node, node.arguments[0].value); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcy5qcyJdLCJuYW1lcyI6WyJoYXNLZXlzIiwib2JqIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImFycmF5T3JLZXlzIiwiYXJyYXlPck9iamVjdCIsIkFycmF5IiwiaXNBcnJheSIsImV4dHJhY3REZXBGaWVsZHMiLCJwa2ciLCJkZXBlbmRlbmNpZXMiLCJkZXZEZXBlbmRlbmNpZXMiLCJvcHRpb25hbERlcGVuZGVuY2llcyIsInBlZXJEZXBlbmRlbmNpZXMiLCJidW5kbGVkRGVwZW5kZW5jaWVzIiwiYnVuZGxlRGVwZW5kZW5jaWVzIiwiZ2V0RGVwZW5kZW5jaWVzIiwiY29udGV4dCIsInBhY2thZ2VEaXIiLCJwYXRocyIsInBhY2thZ2VDb250ZW50IiwicGF0aCIsInJlc29sdmUiLCJtYXAiLCJkaXIiLCJmb3JFYWNoIiwiX3BhY2thZ2VDb250ZW50IiwiSlNPTiIsInBhcnNlIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJqb2luIiwiZGVwc0tleSIsImFzc2lnbiIsInJlYWRQa2dVcCIsInN5bmMiLCJjd2QiLCJnZXRGaWxlbmFtZSIsIm5vcm1hbGl6ZSIsInNvbWUiLCJlIiwiY29kZSIsInJlcG9ydCIsIm1lc3NhZ2UiLCJsb2MiLCJsaW5lIiwiY29sdW1uIiwibmFtZSIsIlN5bnRheEVycm9yIiwibWlzc2luZ0Vycm9yTWVzc2FnZSIsInBhY2thZ2VOYW1lIiwiZGV2RGVwRXJyb3JNZXNzYWdlIiwib3B0RGVwRXJyb3JNZXNzYWdlIiwicmVwb3J0SWZNaXNzaW5nIiwiZGVwcyIsImRlcHNPcHRpb25zIiwibm9kZSIsImltcG9ydEtpbmQiLCJyZXNvbHZlZCIsInNwbGl0TmFtZSIsInNwbGl0Iiwic2xpY2UiLCJpc0luRGVwcyIsInVuZGVmaW5lZCIsImlzSW5EZXZEZXBzIiwiaXNJbk9wdERlcHMiLCJpc0luUGVlckRlcHMiLCJpc0luQnVuZGxlZERlcHMiLCJpbmRleE9mIiwiYWxsb3dEZXZEZXBzIiwiYWxsb3dQZWVyRGVwcyIsImFsbG93T3B0RGVwcyIsImFsbG93QnVuZGxlZERlcHMiLCJ0ZXN0Q29uZmlnIiwiY29uZmlnIiwiZmlsZW5hbWUiLCJjIiwicHJvY2VzcyIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJvcHRpb25zIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJzb3VyY2UiLCJ2YWx1ZSIsIkV4cG9ydE5hbWVkRGVjbGFyYXRpb24iLCJFeHBvcnRBbGxEZWNsYXJhdGlvbiIsIkNhbGxFeHByZXNzaW9uIiwiaGFuZGxlUmVxdWlyZXMiLCJhcmd1bWVudHMiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsU0FBU0EsT0FBVCxHQUEyQjtBQUFBLE1BQVZDLEdBQVUsdUVBQUosRUFBSTs7QUFDekIsU0FBT0MsT0FBT0MsSUFBUCxDQUFZRixHQUFaLEVBQWlCRyxNQUFqQixHQUEwQixDQUFqQztBQUNEOztBQUVELFNBQVNDLFdBQVQsQ0FBcUJDLGFBQXJCLEVBQW9DO0FBQ2xDLFNBQU9DLE1BQU1DLE9BQU4sQ0FBY0YsYUFBZCxJQUErQkEsYUFBL0IsR0FBK0NKLE9BQU9DLElBQVAsQ0FBWUcsYUFBWixDQUF0RDtBQUNEOztBQUVELFNBQVNHLGdCQUFULENBQTBCQyxHQUExQixFQUErQjtBQUM3QixTQUFPO0FBQ0xDLGtCQUFjRCxJQUFJQyxZQUFKLElBQW9CLEVBRDdCO0FBRUxDLHFCQUFpQkYsSUFBSUUsZUFBSixJQUF1QixFQUZuQztBQUdMQywwQkFBc0JILElBQUlHLG9CQUFKLElBQTRCLEVBSDdDO0FBSUxDLHNCQUFrQkosSUFBSUksZ0JBQUosSUFBd0IsRUFKckM7QUFLTDtBQUNBO0FBQ0FDLHlCQUFxQlYsWUFBWUssSUFBSU0sa0JBQUosSUFBMEJOLElBQUlLLG1CQUE5QixJQUFxRCxF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QnFDLElBQXpCLEVBQStCQyxXQUEvQixFQUE0Q0MsSUFBNUMsRUFBa0RBLEtBQUtnQyxNQUFMLENBQVlDLEtBQTlEO0FBQ0Q7QUFDRixPQVZJO0FBV0xFLDRCQUFzQixVQUFVbkMsSUFBVixFQUFnQjtBQUNwQyxZQUFJQSxLQUFLZ0MsTUFBVCxFQUFpQjtBQUNmbkMsMEJBQWdCcEMsT0FBaEIsRUFBeUJxQyxJQUF6QixFQUErQkMsV0FBL0IsRUFBNENDLElBQTVDLEVBQWtEQSxLQUFLZ0MsTUFBTCxDQUFZQyxLQUE5RDtBQUNEO0FBQ0YsT0FmSTtBQWdCTEcsc0JBQWdCLFNBQVNDLGNBQVQsQ0FBd0JyQyxJQUF4QixFQUE4QjtBQUM1QyxZQUFJLDZCQUFnQkEsSUFBaEIsQ0FBSixFQUEyQjtBQUN6QkgsMEJBQWdCcEMsT0FBaEIsRUFBeUJxQyxJQUF6QixFQUErQkMsV0FBL0IsRUFBNENDLElBQTVDLEVBQWtEQSxLQUFLc0MsU0FBTCxDQUFlLENBQWYsRUFBa0JMLEtBQXBFO0FBQ0Q7QUFDRjtBQXBCSSxLQUFQO0FBc0JEO0FBekRjLENBQWpCIiwiZmlsZSI6Im5vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCByZWFkUGtnVXAgZnJvbSAncmVhZC1wa2ctdXAnXG5pbXBvcnQgbWluaW1hdGNoIGZyb20gJ21pbmltYXRjaCdcbmltcG9ydCByZXNvbHZlIGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvcmVzb2x2ZSdcbmltcG9ydCBpbXBvcnRUeXBlIGZyb20gJy4uL2NvcmUvaW1wb3J0VHlwZSdcbmltcG9ydCBpc1N0YXRpY1JlcXVpcmUgZnJvbSAnLi4vY29yZS9zdGF0aWNSZXF1aXJlJ1xuaW1wb3J0IGRvY3NVcmwgZnJvbSAnLi4vZG9jc1VybCdcblxuZnVuY3Rpb24gaGFzS2V5cyhvYmogPSB7fSkge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPiAwXG59XG5cbmZ1bmN0aW9uIGFycmF5T3JLZXlzKGFycmF5T3JPYmplY3QpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyYXlPck9iamVjdCkgPyBhcnJheU9yT2JqZWN0IDogT2JqZWN0LmtleXMoYXJyYXlPck9iamVjdClcbn1cblxuZnVuY3Rpb24gZXh0cmFjdERlcEZpZWxkcyhwa2cpIHtcbiAgcmV0dXJuIHtcbiAgICBkZXBlbmRlbmNpZXM6IHBrZy5kZXBlbmRlbmNpZXMgfHwge30sXG4gICAgZGV2RGVwZW5kZW5jaWVzOiBwa2cuZGV2RGVwZW5kZW5jaWVzIHx8IHt9LFxuICAgIG9wdGlvbmFsRGVwZW5kZW5jaWVzOiBwa2cub3B0aW9uYWxEZXBlbmRlbmNpZXMgfHwge30sXG4gICAgcGVlckRlcGVuZGVuY2llczogcGtnLnBlZXJEZXBlbmRlbmNpZXMgfHwge30sXG4gICAgLy8gQnVuZGxlZERlcHMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mIGFuIGFycmF5LCBidXQgb2JqZWN0IG5vdGF0aW9uIGlzIGFsc28gc3VwcG9ydGVkIGJ5XG4gICAgLy8gYG5wbWAsIHNvIHdlIGNvbnZlcnQgaXQgdG8gYW4gYXJyYXkgaWYgaXQgaXMgYW4gb2JqZWN0XG4gICAgYnVuZGxlZERlcGVuZGVuY2llczogYXJyYXlPcktleXMocGtnLmJ1bmRsZURlcGVuZGVuY2llcyB8fCBwa2cuYnVuZGxlZERlcGVuZGVuY2llcyB8fCBbXSksXG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RGVwZW5kZW5jaWVzKGNvbnRleHQsIHBhY2thZ2VEaXIpIHtcbiAgbGV0IHBhdGhzID0gW11cbiAgdHJ5IHtcbiAgICBjb25zdCBwYWNrYWdlQ29udGVudCA9IHtcbiAgICAgIGRlcGVuZGVuY2llczoge30sXG4gICAgICBkZXZEZXBlbmRlbmNpZXM6IHt9LFxuICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6IHt9LFxuICAgICAgcGVlckRlcGVuZGVuY2llczoge30sXG4gICAgICBidW5kbGVkRGVwZW5kZW5jaWVzOiBbXSxcbiAgICB9XG5cbiAgICBpZiAocGFja2FnZURpciAmJiBwYWNrYWdlRGlyLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShwYWNrYWdlRGlyKSkge1xuICAgICAgICBwYXRocyA9IFtwYXRoLnJlc29sdmUocGFja2FnZURpcildXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXRocyA9IHBhY2thZ2VEaXIubWFwKGRpciA9PiBwYXRoLnJlc29sdmUoZGlyKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocGF0aHMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gdXNlIHJ1bGUgY29uZmlnIHRvIGZpbmQgcGFja2FnZS5qc29uXG4gICAgICBwYXRocy5mb3JFYWNoKGRpciA9PiB7XG4gICAgICAgIGNvbnN0IF9wYWNrYWdlQ29udGVudCA9IGV4dHJhY3REZXBGaWVsZHMoXG4gICAgICAgICAgSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKGRpciwgJ3BhY2thZ2UuanNvbicpLCAndXRmOCcpKVxuICAgICAgICApXG4gICAgICAgIE9iamVjdC5rZXlzKHBhY2thZ2VDb250ZW50KS5mb3JFYWNoKGRlcHNLZXkgPT5cbiAgICAgICAgICBPYmplY3QuYXNzaWduKHBhY2thZ2VDb250ZW50W2RlcHNLZXldLCBfcGFja2FnZUNvbnRlbnRbZGVwc0tleV0pXG4gICAgICAgIClcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHVzZSBjbG9zZXN0IHBhY2thZ2UuanNvblxuICAgICAgT2JqZWN0LmFzc2lnbihcbiAgICAgICAgcGFja2FnZUNvbnRlbnQsXG4gICAgICAgIGV4dHJhY3REZXBGaWVsZHMoXG4gICAgICAgICAgcmVhZFBrZ1VwLnN5bmMoe2N3ZDogY29udGV4dC5nZXRGaWxlbmFtZSgpLCBub3JtYWxpemU6IGZhbHNlfSkucGtnXG4gICAgICAgIClcbiAgICAgIClcbiAgICB9XG5cbiAgICBpZiAoIVtcbiAgICAgIHBhY2thZ2VDb250ZW50LmRlcGVuZGVuY2llcyxcbiAgICAgIHBhY2thZ2VDb250ZW50LmRldkRlcGVuZGVuY2llcyxcbiAgICAgIHBhY2thZ2VDb250ZW50Lm9wdGlvbmFsRGVwZW5kZW5jaWVzLFxuICAgICAgcGFja2FnZUNvbnRlbnQucGVlckRlcGVuZGVuY2llcyxcbiAgICAgIHBhY2thZ2VDb250ZW50LmJ1bmRsZWREZXBlbmRlbmNpZXMsXG4gICAgXS5zb21lKGhhc0tleXMpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIHJldHVybiBwYWNrYWdlQ29udGVudFxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKHBhdGhzLmxlbmd0aCA+IDAgJiYgZS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBtZXNzYWdlOiAnVGhlIHBhY2thZ2UuanNvbiBmaWxlIGNvdWxkIG5vdCBiZSBmb3VuZC4nLFxuICAgICAgICBsb2M6IHsgbGluZTogMCwgY29sdW1uOiAwIH0sXG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoZS5uYW1lID09PSAnSlNPTkVycm9yJyB8fCBlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgbWVzc2FnZTogJ1RoZSBwYWNrYWdlLmpzb24gZmlsZSBjb3VsZCBub3QgYmUgcGFyc2VkOiAnICsgZS5tZXNzYWdlLFxuICAgICAgICBsb2M6IHsgbGluZTogMCwgY29sdW1uOiAwIH0sXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZnVuY3Rpb24gbWlzc2luZ0Vycm9yTWVzc2FnZShwYWNrYWdlTmFtZSkge1xuICByZXR1cm4gYCcke3BhY2thZ2VOYW1lfScgc2hvdWxkIGJlIGxpc3RlZCBpbiB0aGUgcHJvamVjdCdzIGRlcGVuZGVuY2llcy4gYCArXG4gICAgYFJ1biAnbnBtIGkgLVMgJHtwYWNrYWdlTmFtZX0nIHRvIGFkZCBpdGBcbn1cblxuZnVuY3Rpb24gZGV2RGVwRXJyb3JNZXNzYWdlKHBhY2thZ2VOYW1lKSB7XG4gIHJldHVybiBgJyR7cGFja2FnZU5hbWV9JyBzaG91bGQgYmUgbGlzdGVkIGluIHRoZSBwcm9qZWN0J3MgZGVwZW5kZW5jaWVzLCBub3QgZGV2RGVwZW5kZW5jaWVzLmBcbn1cblxuZnVuY3Rpb24gb3B0RGVwRXJyb3JNZXNzYWdlKHBhY2thZ2VOYW1lKSB7XG4gIHJldHVybiBgJyR7cGFja2FnZU5hbWV9JyBzaG91bGQgYmUgbGlzdGVkIGluIHRoZSBwcm9qZWN0J3MgZGVwZW5kZW5jaWVzLCBgICtcbiAgICBgbm90IG9wdGlvbmFsRGVwZW5kZW5jaWVzLmBcbn1cblxuZnVuY3Rpb24gcmVwb3J0SWZNaXNzaW5nKGNvbnRleHQsIGRlcHMsIGRlcHNPcHRpb25zLCBub2RlLCBuYW1lKSB7XG4gIC8vIERvIG5vdCByZXBvcnQgd2hlbiBpbXBvcnRpbmcgdHlwZXNcbiAgaWYgKG5vZGUuaW1wb3J0S2luZCA9PT0gJ3R5cGUnKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoaW1wb3J0VHlwZShuYW1lLCBjb250ZXh0KSAhPT0gJ2V4dGVybmFsJykge1xuICAgIHJldHVyblxuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWQgPSByZXNvbHZlKG5hbWUsIGNvbnRleHQpXG4gIGlmICghcmVzb2x2ZWQpIHsgcmV0dXJuIH1cblxuICBjb25zdCBzcGxpdE5hbWUgPSBuYW1lLnNwbGl0KCcvJylcbiAgY29uc3QgcGFja2FnZU5hbWUgPSBzcGxpdE5hbWVbMF1bMF0gPT09ICdAJ1xuICAgID8gc3BsaXROYW1lLnNsaWNlKDAsIDIpLmpvaW4oJy8nKVxuICAgIDogc3BsaXROYW1lWzBdXG4gIGNvbnN0IGlzSW5EZXBzID0gZGVwcy5kZXBlbmRlbmNpZXNbcGFja2FnZU5hbWVdICE9PSB1bmRlZmluZWRcbiAgY29uc3QgaXNJbkRldkRlcHMgPSBkZXBzLmRldkRlcGVuZGVuY2llc1twYWNrYWdlTmFtZV0gIT09IHVuZGVmaW5lZFxuICBjb25zdCBpc0luT3B0RGVwcyA9IGRlcHMub3B0aW9uYWxEZXBlbmRlbmNpZXNbcGFja2FnZU5hbWVdICE9PSB1bmRlZmluZWRcbiAgY29uc3QgaXNJblBlZXJEZXBzID0gZGVwcy5wZWVyRGVwZW5kZW5jaWVzW3BhY2thZ2VOYW1lXSAhPT0gdW5kZWZpbmVkXG4gIGNvbnN0IGlzSW5CdW5kbGVkRGVwcyA9IGRlcHMuYnVuZGxlZERlcGVuZGVuY2llcy5pbmRleE9mKHBhY2thZ2VOYW1lKSAhPT0gLTFcblxuICBpZiAoaXNJbkRlcHMgfHxcbiAgICAoZGVwc09wdGlvbnMuYWxsb3dEZXZEZXBzICYmIGlzSW5EZXZEZXBzKSB8fFxuICAgIChkZXBzT3B0aW9ucy5hbGxvd1BlZXJEZXBzICYmIGlzSW5QZWVyRGVwcykgfHxcbiAgICAoZGVwc09wdGlvbnMuYWxsb3dPcHREZXBzICYmIGlzSW5PcHREZXBzKSB8fFxuICAgIChkZXBzT3B0aW9ucy5hbGxvd0J1bmRsZWREZXBzICYmIGlzSW5CdW5kbGVkRGVwcylcbiAgKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoaXNJbkRldkRlcHMgJiYgIWRlcHNPcHRpb25zLmFsbG93RGV2RGVwcykge1xuICAgIGNvbnRleHQucmVwb3J0KG5vZGUsIGRldkRlcEVycm9yTWVzc2FnZShwYWNrYWdlTmFtZSkpXG4gICAgcmV0dXJuXG4gIH1cblxuICBpZiAoaXNJbk9wdERlcHMgJiYgIWRlcHNPcHRpb25zLmFsbG93T3B0RGVwcykge1xuICAgIGNvbnRleHQucmVwb3J0KG5vZGUsIG9wdERlcEVycm9yTWVzc2FnZShwYWNrYWdlTmFtZSkpXG4gICAgcmV0dXJuXG4gIH1cblxuICBjb250ZXh0LnJlcG9ydChub2RlLCBtaXNzaW5nRXJyb3JNZXNzYWdlKHBhY2thZ2VOYW1lKSlcbn1cblxuZnVuY3Rpb24gdGVzdENvbmZpZyhjb25maWcsIGZpbGVuYW1lKSB7XG4gIC8vIFNpbXBsZXN0IGNvbmZpZ3VyYXRpb24gZmlyc3QsIGVpdGhlciBhIGJvb2xlYW4gb3Igbm90aGluZy5cbiAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgY29uZmlnID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBjb25maWdcbiAgfVxuICAvLyBBcnJheSBvZiBnbG9icy5cbiAgcmV0dXJuIGNvbmZpZy5zb21lKGMgPT4gKFxuICAgIG1pbmltYXRjaChmaWxlbmFtZSwgYykgfHxcbiAgICBtaW5pbWF0Y2goZmlsZW5hbWUsIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBjKSlcbiAgKSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAncHJvYmxlbScsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCduby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcycpLFxuICAgIH0sXG5cbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgJ3R5cGUnOiAnb2JqZWN0JyxcbiAgICAgICAgJ3Byb3BlcnRpZXMnOiB7XG4gICAgICAgICAgJ2RldkRlcGVuZGVuY2llcyc6IHsgJ3R5cGUnOiBbJ2Jvb2xlYW4nLCAnYXJyYXknXSB9LFxuICAgICAgICAgICdvcHRpb25hbERlcGVuZGVuY2llcyc6IHsgJ3R5cGUnOiBbJ2Jvb2xlYW4nLCAnYXJyYXknXSB9LFxuICAgICAgICAgICdwZWVyRGVwZW5kZW5jaWVzJzogeyAndHlwZSc6IFsnYm9vbGVhbicsICdhcnJheSddIH0sXG4gICAgICAgICAgJ2J1bmRsZWREZXBlbmRlbmNpZXMnOiB7ICd0eXBlJzogWydib29sZWFuJywgJ2FycmF5J10gfSxcbiAgICAgICAgICAncGFja2FnZURpcic6IHsgJ3R5cGUnOiBbJ3N0cmluZycsICdhcnJheSddIH0sXG4gICAgICAgIH0sXG4gICAgICAgICdhZGRpdGlvbmFsUHJvcGVydGllcyc6IGZhbHNlLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zWzBdIHx8IHt9XG4gICAgY29uc3QgZmlsZW5hbWUgPSBjb250ZXh0LmdldEZpbGVuYW1lKClcbiAgICBjb25zdCBkZXBzID0gZ2V0RGVwZW5kZW5jaWVzKGNvbnRleHQsIG9wdGlvbnMucGFja2FnZURpcikgfHwgZXh0cmFjdERlcEZpZWxkcyh7fSlcblxuICAgIGNvbnN0IGRlcHNPcHRpb25zID0ge1xuICAgICAgYWxsb3dEZXZEZXBzOiB0ZXN0Q29uZmlnKG9wdGlvbnMuZGV2RGVwZW5kZW5jaWVzLCBmaWxlbmFtZSkgIT09IGZhbHNlLFxuICAgICAgYWxsb3dPcHREZXBzOiB0ZXN0Q29uZmlnKG9wdGlvbnMub3B0aW9uYWxEZXBlbmRlbmNpZXMsIGZpbGVuYW1lKSAhPT0gZmFsc2UsXG4gICAgICBhbGxvd1BlZXJEZXBzOiB0ZXN0Q29uZmlnKG9wdGlvbnMucGVlckRlcGVuZGVuY2llcywgZmlsZW5hbWUpICE9PSBmYWxzZSxcbiAgICAgIGFsbG93QnVuZGxlZERlcHM6IHRlc3RDb25maWcob3B0aW9ucy5idW5kbGVkRGVwZW5kZW5jaWVzLCBmaWxlbmFtZSkgIT09IGZhbHNlLFxuICAgIH1cblxuICAgIC8vIHRvZG86IHVzZSBtb2R1bGUgdmlzaXRvciBmcm9tIG1vZHVsZS11dGlscyBjb3JlXG4gICAgcmV0dXJuIHtcbiAgICAgIEltcG9ydERlY2xhcmF0aW9uOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5zb3VyY2UpIHtcbiAgICAgICAgICByZXBvcnRJZk1pc3NpbmcoY29udGV4dCwgZGVwcywgZGVwc09wdGlvbnMsIG5vZGUsIG5vZGUuc291cmNlLnZhbHVlKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbjogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuc291cmNlKSB7XG4gICAgICAgICAgcmVwb3J0SWZNaXNzaW5nKGNvbnRleHQsIGRlcHMsIGRlcHNPcHRpb25zLCBub2RlLCBub2RlLnNvdXJjZS52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIEV4cG9ydEFsbERlY2xhcmF0aW9uOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5zb3VyY2UpIHtcbiAgICAgICAgICByZXBvcnRJZk1pc3NpbmcoY29udGV4dCwgZGVwcywgZGVwc09wdGlvbnMsIG5vZGUsIG5vZGUuc291cmNlLnZhbHVlKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgQ2FsbEV4cHJlc3Npb246IGZ1bmN0aW9uIGhhbmRsZVJlcXVpcmVzKG5vZGUpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljUmVxdWlyZShub2RlKSkge1xuICAgICAgICAgIHJlcG9ydElmTWlzc2luZyhjb250ZXh0LCBkZXBzLCBkZXBzT3B0aW9ucywgbm9kZSwgbm9kZS5hcmd1bWVudHNbMF0udmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-internal-modules.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-internal-modules.js new file mode 100644 index 0000000..43d6b28 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-internal-modules.js @@ -0,0 +1,119 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _minimatch = require('minimatch'); + +var _minimatch2 = _interopRequireDefault(_minimatch); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _importType = require('../core/importType'); + +var _importType2 = _interopRequireDefault(_importType); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-internal-modules') + }, + + schema: [{ + type: 'object', + properties: { + allow: { + type: 'array', + items: { + type: 'string' + } + } + }, + additionalProperties: false + }] + }, + + create: function noReachingInside(context) { + const options = context.options[0] || {}; + const allowRegexps = (options.allow || []).map(p => _minimatch2.default.makeRe(p)); + + // test if reaching to this destination is allowed + function reachingAllowed(importPath) { + return allowRegexps.some(re => re.test(importPath)); + } + + // minimatch patterns are expected to use / path separators, like import + // statements, so normalize paths to use the same + function normalizeSep(somePath) { + return somePath.split('\\').join('/'); + } + + // find a directory that is being reached into, but which shouldn't be + function isReachViolation(importPath) { + const steps = normalizeSep(importPath).split('/').reduce((acc, step) => { + if (!step || step === '.') { + return acc; + } else if (step === '..') { + return acc.slice(0, -1); + } else { + return acc.concat(step); + } + }, []); + + const nonScopeSteps = steps.filter(step => step.indexOf('@') !== 0); + if (nonScopeSteps.length <= 1) return false; + + // before trying to resolve, see if the raw import (with relative + // segments resolved) matches an allowed pattern + const justSteps = steps.join('/'); + if (reachingAllowed(justSteps) || reachingAllowed(`/${justSteps}`)) return false; + + // if the import statement doesn't match directly, try to match the + // resolved path if the import is resolvable + const resolved = (0, _resolve2.default)(importPath, context); + if (!resolved || reachingAllowed(normalizeSep(resolved))) return false; + + // this import was not allowed by the allowed paths, and reaches + // so it is a violation + return true; + } + + function checkImportForReaching(importPath, node) { + const potentialViolationTypes = ['parent', 'index', 'sibling', 'external', 'internal']; + if (potentialViolationTypes.indexOf((0, _importType2.default)(importPath, context)) !== -1 && isReachViolation(importPath)) { + context.report({ + node, + message: `Reaching to "${importPath}" is not allowed.` + }); + } + } + + return { + ImportDeclaration(node) { + checkImportForReaching(node.source.value, node.source); + }, + CallExpression(node) { + if ((0, _staticRequire2.default)(node)) { + var _node$arguments = _slicedToArray(node.arguments, 1); + + const firstArgument = _node$arguments[0]; + + checkImportForReaching(firstArgument.value, firstArgument); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1pbnRlcm5hbC1tb2R1bGVzLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwiYWxsb3ciLCJpdGVtcyIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY3JlYXRlIiwibm9SZWFjaGluZ0luc2lkZSIsImNvbnRleHQiLCJvcHRpb25zIiwiYWxsb3dSZWdleHBzIiwibWFwIiwicCIsIm1pbmltYXRjaCIsIm1ha2VSZSIsInJlYWNoaW5nQWxsb3dlZCIsImltcG9ydFBhdGgiLCJzb21lIiwicmUiLCJ0ZXN0Iiwibm9ybWFsaXplU2VwIiwic29tZVBhdGgiLCJzcGxpdCIsImpvaW4iLCJpc1JlYWNoVmlvbGF0aW9uIiwic3RlcHMiLCJyZWR1Y2UiLCJhY2MiLCJzdGVwIiwic2xpY2UiLCJjb25jYXQiLCJub25TY29wZVN0ZXBzIiwiZmlsdGVyIiwiaW5kZXhPZiIsImxlbmd0aCIsImp1c3RTdGVwcyIsInJlc29sdmVkIiwiY2hlY2tJbXBvcnRGb3JSZWFjaGluZyIsIm5vZGUiLCJwb3RlbnRpYWxWaW9sYXRpb25UeXBlcyIsInJlcG9ydCIsIm1lc3NhZ2UiLCJJbXBvcnREZWNsYXJhdGlvbiIsInNvdXJjZSIsInZhbHVlIiwiQ2FsbEV4cHJlc3Npb24iLCJhcmd1bWVudHMiLCJmaXJzdEFyZ3VtZW50Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFlBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLHFCQUFSO0FBREQsS0FGRjs7QUFNSkMsWUFBUSxDQUNOO0FBQ0VILFlBQU0sUUFEUjtBQUVFSSxrQkFBWTtBQUNWQyxlQUFPO0FBQ0xMLGdCQUFNLE9BREQ7QUFFTE0saUJBQU87QUFD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QUEsK0NBQ0NBLEtBQUtRLFNBRE47O0FBQUEsZ0JBQ2pCQyxhQURpQjs7QUFFekJWLGlDQUF1QlUsY0FBY0gsS0FBckMsRUFBNENHLGFBQTVDO0FBQ0Q7QUFDRjtBQVRJLEtBQVA7QUFXRDtBQTdGYyxDQUFqQiIsImZpbGUiOiJuby1pbnRlcm5hbC1tb2R1bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1pbmltYXRjaCBmcm9tICdtaW5pbWF0Y2gnXG5cbmltcG9ydCByZXNvbHZlIGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvcmVzb2x2ZSdcbmltcG9ydCBpbXBvcnRUeXBlIGZyb20gJy4uL2NvcmUvaW1wb3J0VHlwZSdcbmltcG9ydCBpc1N0YXRpY1JlcXVpcmUgZnJvbSAnLi4vY29yZS9zdGF0aWNSZXF1aXJlJ1xuaW1wb3J0IGRvY3NVcmwgZnJvbSAnLi4vZG9jc1VybCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCduby1pbnRlcm5hbC1tb2R1bGVzJyksXG4gICAgfSxcblxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGFsbG93OiB7XG4gICAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIG5vUmVhY2hpbmdJbnNpZGUoY29udGV4dCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb250ZXh0Lm9wdGlvbnNbMF0gfHwge31cbiAgICBjb25zdCBhbGxvd1JlZ2V4cHMgPSAob3B0aW9ucy5hbGxvdyB8fCBbXSkubWFwKHAgPT4gbWluaW1hdGNoLm1ha2VSZShwKSlcblxuICAgIC8vIHRlc3QgaWYgcmVhY2hpbmcgdG8gdGhpcyBkZXN0aW5hdGlvbiBpcyBhbGxvd2VkXG4gICAgZnVuY3Rpb24gcmVhY2hpbmdBbGxvd2VkKGltcG9ydFBhdGgpIHtcbiAgICAgIHJldHVybiBhbGxvd1JlZ2V4cHMuc29tZShyZSA9PiByZS50ZXN0KGltcG9ydFBhdGgpKVxuICAgIH1cblxuICAgIC8vIG1pbmltYXRjaCBwYXR0ZXJucyBhcmUgZXhwZWN0ZWQgdG8gdXNlIC8gcGF0aCBzZXBhcmF0b3JzLCBsaWtlIGltcG9ydFxuICAgIC8vIHN0YXRlbWVudHMsIHNvIG5vcm1hbGl6ZSBwYXRocyB0byB1c2UgdGhlIHNhbWVcbiAgICBmdW5jdGlvbiBub3JtYWxpemVTZXAoc29tZVBhdGgpIHtcbiAgICAgIHJldHVybiBzb21lUGF0aC5zcGxpdCgnXFxcXCcpLmpvaW4oJy8nKVxuICAgIH1cblxuICAgIC8vIGZpbmQgYSBkaXJlY3RvcnkgdGhhdCBpcyBiZWluZyByZWFjaGVkIGludG8sIGJ1dCB3aGljaCBzaG91bGRuJ3QgYmVcbiAgICBmdW5jdGlvbiBpc1JlYWNoVmlvbGF0aW9uKGltcG9ydFBhdGgpIHtcbiAgICAgIGNvbnN0IHN0ZXBzID0gbm9ybWFsaXplU2VwKGltcG9ydFBhdGgpXG4gICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgIC5yZWR1Y2UoKGFjYywgc3RlcCkgPT4ge1xuICAgICAgICAgIGlmICghc3RlcCB8fCBzdGVwID09PSAnLicpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2NcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAgPT09ICcuLicpIHtcbiAgICAgICAgICAgIHJldHVybiBhY2Muc2xpY2UoMCwgLTEpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhY2MuY29uY2F0KHN0ZXApXG4gICAgICAgICAgfVxuICAgICAgICB9LCBbXSlcblxuICAgICAgY29uc3Qgbm9uU2NvcGVTdGVwcyA9IHN0ZXBzLmZpbHRlcihzdGVwID0+IHN0ZXAuaW5kZXhPZignQCcpICE9PSAwKVxuICAgICAgaWYgKG5vblNjb3BlU3RlcHMubGVuZ3RoIDw9IDEpIHJldHVybiBmYWxzZVxuXG4gICAgICAvLyBiZWZvcmUgdHJ5aW5nIHRvIHJlc29sdmUsIHNlZSBpZiB0aGUgcmF3IGltcG9ydCAod2l0aCByZWxhdGl2ZVxuICAgICAgLy8gc2VnbWVudHMgcmVzb2x2ZWQpIG1hdGNoZXMgYW4gYWxsb3dlZCBwYXR0ZXJuXG4gICAgICBjb25zdCBqdXN0U3RlcHMgPSBzdGVwcy5qb2luKCcvJylcbiAgICAgIGlmIChyZWFjaGluZ0FsbG93ZWQoanVzdFN0ZXBzKSB8fCByZWFjaGluZ0FsbG93ZWQoYC8ke2p1c3RTdGVwc31gKSkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIC8vIGlmIHRoZSBpbXBvcnQgc3RhdGVtZW50IGRvZXNuJ3QgbWF0Y2ggZGlyZWN0bHksIHRyeSB0byBtYXRjaCB0aGVcbiAgICAgIC8vIHJlc29sdmVkIHBhdGggaWYgdGhlIGltcG9ydCBpcyByZXNvbHZhYmxlXG4gICAgICBjb25zdCByZXNvbHZlZCA9IHJlc29sdmUoaW1wb3J0UGF0aCwgY29udGV4dClcbiAgICAgIGlmICghcmVzb2x2ZWQgfHwgcmVhY2hpbmdBbGxvd2VkKG5vcm1hbGl6ZVNlcChyZXNvbHZlZCkpKSByZXR1cm4gZmFsc2VcblxuICAgICAgLy8gdGhpcyBpbXBvcnQgd2FzIG5vdCBhbGxvd2VkIGJ5IHRoZSBhbGxvd2VkIHBhdGhzLCBhbmQgcmVhY2hlc1xuICAgICAgLy8gc28gaXQgaXMgYSB2aW9sYXRpb25cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tJbXBvcnRGb3JSZWFjaGluZyhpbXBvcnRQYXRoLCBub2RlKSB7XG4gICAgICBjb25zdCBwb3RlbnRpYWxWaW9sYXRpb25UeXBlcyA9IFsncGFyZW50JywgJ2luZGV4JywgJ3NpYmxpbmcnLCAnZXh0ZXJuYWwnLCAnaW50ZXJuYWwnXVxuICAgICAgaWYgKHBvdGVudGlhbFZpb2xhdGlvblR5cGVzLmluZGV4T2YoaW1wb3J0VHlwZShpbXBvcnRQYXRoLCBjb250ZXh0KSkgIT09IC0xICYmXG4gICAgICAgIGlzUmVhY2hWaW9sYXRpb24oaW1wb3J0UGF0aClcbiAgICAgICkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBtZXNzYWdlOiBgUmVhY2hpbmcgdG8gXCIke2ltcG9ydFBhdGh9XCIgaXMgbm90IGFsbG93ZWQuYCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgSW1wb3J0RGVjbGFyYXRpb24obm9kZSkge1xuICAgICAgICBjaGVja0ltcG9ydEZvclJlYWNoaW5nKG5vZGUuc291cmNlLnZhbHVlLCBub2RlLnNvdXJjZSlcbiAgICAgIH0sXG4gICAgICBDYWxsRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIGlmIChpc1N0YXRpY1JlcXVpcmUobm9kZSkpIHtcbiAgICAgICAgICBjb25zdCBbIGZpcnN0QXJndW1lbnQgXSA9IG5vZGUuYXJndW1lbnRzXG4gICAgICAgICAgY2hlY2tJbXBvcnRGb3JSZWFjaGluZyhmaXJzdEFyZ3VtZW50LnZhbHVlLCBmaXJzdEFyZ3VtZW50KVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-mutable-exports.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-mutable-exports.js new file mode 100644 index 0000000..b703977 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-mutable-exports.js @@ -0,0 +1,67 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-mutable-exports') + }, + schema: [] + }, + + create: function (context) { + function checkDeclaration(node) { + const kind = node.kind; + + if (kind === 'var' || kind === 'let') { + context.report(node, `Exporting mutable '${kind}' binding, use 'const' instead.`); + } + } + + function checkDeclarationsInScope(_ref, name) { + let variables = _ref.variables; + + for (let variable of variables) { + if (variable.name === name) { + for (let def of variable.defs) { + if (def.type === 'Variable' && def.parent) { + checkDeclaration(def.parent); + } + } + } + } + } + + function handleExportDefault(node) { + const scope = context.getScope(); + + if (node.declaration.name) { + checkDeclarationsInScope(scope, node.declaration.name); + } + } + + function handleExportNamed(node) { + const scope = context.getScope(); + + if (node.declaration) { + checkDeclaration(node.declaration); + } else if (!node.source) { + for (let specifier of node.specifiers) { + checkDeclarationsInScope(scope, specifier.local.name); + } + } + } + + return { + 'ExportDefaultDeclaration': handleExportDefault, + 'ExportNamedDeclaration': handleExportNamed + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1tdXRhYmxlLWV4cG9ydHMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsImNvbnRleHQiLCJjaGVja0RlY2xhcmF0aW9uIiwibm9kZSIsImtpbmQiLCJyZXBvcnQiLCJjaGVja0RlY2xhcmF0aW9uc0luU2NvcGUiLCJuYW1lIiwidmFyaWFibGVzIiwidmFyaWFibGUiLCJkZWYiLCJkZWZzIiwicGFyZW50IiwiaGFuZGxlRXhwb3J0RGVmYXVsdCIsInNjb3BlIiwiZ2V0U2NvcGUiLCJkZWNsYXJhdGlvbiIsImhhbmRsZUV4cG9ydE5hbWVkIiwic291cmNlIiwic3BlY2lmaWVyIiwic3BlY2lmaWVycyIsImxvY2FsIl0sIm1hcHBpbmdzIjoiOztBQUFBOzs7Ozs7QUFFQUEsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sWUFERjtBQUVKQyxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsb0JBQVI7QUFERCxLQUZGO0FBS0pDLFlBQVE7QUFMSixHQURTOztBQVNmQyxVQUFRLFVBQVVDLE9BQVYsRUFBbUI7QUFDekIsYUFBU0MsZ0JBQVQsQ0FBMEJDLElBQTFCLEVBQWdDO0FBQUEsWUFDdkJDLElBRHVCLEdBQ2ZELElBRGUsQ0FDdkJDLElBRHVCOztBQUU5QixVQUFJQSxTQUFTLEtBQVQsSUFBa0JBLFNBQVMsS0FBL0IsRUFBc0M7QUFDcENILGdCQUFRSSxNQUFSLENBQWVGLElBQWYsRUFBc0Isc0JBQXFCQyxJQUFLLGlDQUFoRDtBQUNEO0FBQ0Y7O0FBRUQsYUFBU0Usd0JBQVQsT0FBK0NDLElBQS9DLEVBQXFEO0FBQUEsVUFBbEJDLFNBQWtCLFFBQWxCQSxTQUFrQjs7QUFDbkQsV0FBSyxJQUFJQyxRQUFULElBQXFCRCxTQUFyQixFQUFnQztBQUM5QixZQUFJQyxTQUFTRixJQUFULEtBQWtCQSxJQUF0QixFQUE0QjtBQUMxQixlQUFLLElBQUlHLEdBQVQsSUFBZ0JELFNBQVNFLElBQXpCLEVBQStCO0FBQzdCLGdCQUFJRCxJQUFJZCxJQUFKLEtBQWEsVUFBYixJQUEyQmMsSUFBSUUsTUFBbkMsRUFBMkM7QUFDekNWLCtCQUFpQlEsSUFBSUUsTUFBckI7QUFDRDtBQUNGO0FBQ0Y7QUFDRjtBQUNGOztBQUVELGFBQVNDLG1CQUFULENBQTZCVixJQUE3QixFQUFtQztBQUNqQyxZQUFNVyxRQUFRYixRQUFRYyxRQUFSLEVBQWQ7O0FBRUEsVUFBSVosS0FBS2EsV0FBTCxDQUFpQlQsSUFBckIsRUFBMkI7QUFDekJELGlDQUF5QlEsS0FBekIsRUFBZ0NYLEtBQUthLFdBQUwsQ0FBaUJULElBQWpEO0FBQ0Q7QUFDRjs7QUFFRCxhQUFTVSxpQkFBVCxDQUEyQmQsSUFBM0IsRUFBaUM7QUFDL0IsWUFBTVcsUUFBUWIsUUFBUWMsUUFBUixFQUFkOztBQUVBLFVBQUlaLEtBQUthLFdBQVQsRUFBdUI7QUFDckJkLHlCQUFpQkMsS0FBS2EsV0FBdEI7QUFDRCxPQUZELE1BRU8sSUFBSSxDQUFDYixLQUFLZSxNQUFWLEVBQWtCO0FBQ3ZCLGFBQUssSUFBSUMsU0FBVCxJQUFzQmhCLEtBQUtpQixVQUEzQixFQUF1QztBQUNyQ2QsbUNBQXlCUSxLQUF6QixFQUFnQ0ssVUFBVUUsS0FBVixDQUFnQmQsSUFBaEQ7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsV0FBTztBQUNMLGtDQUE0Qk0sbUJBRHZCO0FBRUwsZ0NBQTBCSTtBQUZyQixLQUFQO0FBSUQ7QUFyRGMsQ0FBakIiLCJmaWxlIjoibm8tbXV0YWJsZS1leHBvcnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvY3NVcmwgZnJvbSAnLi4vZG9jc1VybCdcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1ldGE6IHtcbiAgICB0eXBlOiAnc3VnZ2VzdGlvbicsXG4gICAgZG9jczoge1xuICAgICAgdXJsOiBkb2NzVXJsKCduby1tdXRhYmxlLWV4cG9ydHMnKSxcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGZ1bmN0aW9uIGNoZWNrRGVjbGFyYXRpb24obm9kZSkge1xuICAgICAgY29uc3Qge2tpbmR9ID0gbm9kZVxuICAgICAgaWYgKGtpbmQgPT09ICd2YXInIHx8IGtpbmQgPT09ICdsZXQnKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KG5vZGUsIGBFeHBvcnRpbmcgbXV0YWJsZSAnJHtraW5kfScgYmluZGluZywgdXNlICdjb25zdCcgaW5zdGVhZC5gKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrRGVjbGFyYXRpb25zSW5TY29wZSh7dmFyaWFibGVzfSwgbmFtZSkge1xuICAgICAgZm9yIChsZXQgdmFyaWFibGUgb2YgdmFyaWFibGVzKSB7XG4gICAgICAgIGlmICh2YXJpYWJsZS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgICAgZm9yIChsZXQgZGVmIG9mIHZhcmlhYmxlLmRlZnMpIHtcbiAgICAgICAgICAgIGlmIChkZWYudHlwZSA9PT0gJ1ZhcmlhYmxlJyAmJiBkZWYucGFyZW50KSB7XG4gICAgICAgICAgICAgIGNoZWNrRGVjbGFyYXRpb24oZGVmLnBhcmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVFeHBvcnREZWZhdWx0KG5vZGUpIHtcbiAgICAgIGNvbnN0IHNjb3BlID0gY29udGV4dC5nZXRTY29wZSgpXG5cbiAgICAgIGlmIChub2RlLmRlY2xhcmF0aW9uLm5hbWUpIHtcbiAgICAgICAgY2hlY2tEZWNsYXJhdGlvbnNJblNjb3BlKHNjb3BlLCBub2RlLmRlY2xhcmF0aW9uLm5hbWUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlRXhwb3J0TmFtZWQobm9kZSkge1xuICAgICAgY29uc3Qgc2NvcGUgPSBjb250ZXh0LmdldFNjb3BlKClcblxuICAgICAgaWYgKG5vZGUuZGVjbGFyYXRpb24pICB7XG4gICAgICAgIGNoZWNrRGVjbGFyYXRpb24obm9kZS5kZWNsYXJhdGlvbilcbiAgICAgIH0gZWxzZSBpZiAoIW5vZGUuc291cmNlKSB7XG4gICAgICAgIGZvciAobGV0IHNwZWNpZmllciBvZiBub2RlLnNwZWNpZmllcnMpIHtcbiAgICAgICAgICBjaGVja0RlY2xhcmF0aW9uc0luU2NvcGUoc2NvcGUsIHNwZWNpZmllci5sb2NhbC5uYW1lKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nOiBoYW5kbGVFeHBvcnREZWZhdWx0LFxuICAgICAgJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nOiBoYW5kbGVFeHBvcnROYW1lZCxcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default-member.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default-member.js new file mode 100644 index 0000000..27394b3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default-member.js @@ -0,0 +1,110 @@ +'use strict'; + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _importDeclaration = require('../importDeclaration'); + +var _importDeclaration2 = _interopRequireDefault(_importDeclaration); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-named-as-default-member') + }, + schema: [] + }, + + create: function (context) { + + const fileImports = new Map(); + const allPropertyLookups = new Map(); + + function handleImportDefault(node) { + const declaration = (0, _importDeclaration2.default)(context); + const exportMap = _ExportMap2.default.get(declaration.source.value, context); + if (exportMap == null) return; + + if (exportMap.errors.length) { + exportMap.reportErrors(context, declaration); + return; + } + + fileImports.set(node.local.name, { + exportMap, + sourcePath: declaration.source.value + }); + } + + function storePropertyLookup(objectName, propName, node) { + const lookups = allPropertyLookups.get(objectName) || []; + lookups.push({ node, propName }); + allPropertyLookups.set(objectName, lookups); + } + + function handlePropLookup(node) { + const objectName = node.object.name; + const propName = node.property.name; + storePropertyLookup(objectName, propName, node); + } + + function handleDestructuringAssignment(node) { + const isDestructure = node.id.type === 'ObjectPattern' && node.init != null && node.init.type === 'Identifier'; + if (!isDestructure) return; + + const objectName = node.init.name; + for (const _ref of node.id.properties) { + const key = _ref.key; + + if (key == null) continue; // true for rest properties + storePropertyLookup(objectName, key.name, key); + } + } + + function handleProgramExit() { + allPropertyLookups.forEach((lookups, objectName) => { + const fileImport = fileImports.get(objectName); + if (fileImport == null) return; + + for (const _ref2 of lookups) { + const propName = _ref2.propName; + const node = _ref2.node; + + // the default import can have a "default" property + if (propName === 'default') continue; + if (!fileImport.exportMap.namespace.has(propName)) continue; + + context.report({ + node, + message: `Caution: \`${objectName}\` also has a named export ` + `\`${propName}\`. Check if you meant to write ` + `\`import {${propName}} from '${fileImport.sourcePath}'\` ` + 'instead.' + }); + } + }); + } + + return { + 'ImportDefaultSpecifier': handleImportDefault, + 'MemberExpression': handlePropLookup, + 'VariableDeclarator': handleDestructuringAssignment, + 'Program:exit': handleProgramExit + }; + } +}; /** + * @fileoverview Rule to warn about potentially confused use of name exports + * @author Desmond Brand + * @copyright 2016 Desmond Brand. All rights reserved. + * See LICENSE in root directory for full license. + */ +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlci5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwidXJsIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsImZpbGVJbXBvcnRzIiwiTWFwIiwiYWxsUHJvcGVydHlMb29rdXBzIiwiaGFuZGxlSW1wb3J0RGVmYXVsdCIsIm5vZGUiLCJkZWNsYXJhdGlvbiIsImV4cG9ydE1hcCIsIkV4cG9ydHMiLCJnZXQiLCJzb3VyY2UiLCJ2YWx1ZSIsImVycm9ycyIsImxlbmd0aCIsInJlcG9ydEVycm9ycyIsInNldCIsImxvY2FsIiwibmFtZSIsInNvdXJjZVBhdGgiLCJzdG9yZVByb3BlcnR5TG9va3VwIiwib2JqZWN0TmFtZSIsInByb3BOYW1lIiwibG9va3VwcyIsInB1c2giLCJoYW5kbGVQcm9wTG9va3VwIiwib2JqZWN0IiwicHJvcGVydHkiLCJoYW5kbGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudCIsImlzRGVzdHJ1Y3R1cmUiLCJpZCIsImluaXQiLCJwcm9wZXJ0aWVzIiwia2V5IiwiaGFuZGxlUHJvZ3JhbUV4aXQiLCJmb3JFYWNoIiwiZmlsZUltcG9ydCIsIm5hbWVzcGFjZSIsImhhcyIsInJlcG9ydCIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7O0FBTUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQTtBQUNBO0FBQ0E7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFlBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLDRCQUFSO0FBREQsS0FGRjtBQUtKQyxZQUFRO0FBTEosR0FEUzs7QUFTZkMsVUFBUSxVQUFTQyxPQUFULEVBQWtCOztBQUV4QixVQUFNQyxjQUFjLElBQUlDLEdBQUosRUFBcEI7QUFDQSxVQUFNQyxxQkFBcUIsSUFBSUQsR0FBSixFQUEzQjs7QUFFQSxhQUFTRSxtQkFB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akI7QUFJTCxzQkFBZ0JNO0FBSlgsS0FBUDtBQU1EO0FBdEZjLENBQWpCLEMsQ0FkQSIsImZpbGUiOiJuby1uYW1lZC1hcy1kZWZhdWx0LW1lbWJlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVvdmVydmlldyBSdWxlIHRvIHdhcm4gYWJvdXQgcG90ZW50aWFsbHkgY29uZnVzZWQgdXNlIG9mIG5hbWUgZXhwb3J0c1xuICogQGF1dGhvciBEZXNtb25kIEJyYW5kXG4gKiBAY29weXJpZ2h0IDIwMTYgRGVzbW9uZCBCcmFuZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFNlZSBMSUNFTlNFIGluIHJvb3QgZGlyZWN0b3J5IGZvciBmdWxsIGxpY2Vuc2UuXG4gKi9cbmltcG9ydCBFeHBvcnRzIGZyb20gJy4uL0V4cG9ydE1hcCdcbmltcG9ydCBpbXBvcnREZWNsYXJhdGlvbiBmcm9tICcuLi9pbXBvcnREZWNsYXJhdGlvbidcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlIERlZmluaXRpb25cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tbmFtZWQtYXMtZGVmYXVsdC1tZW1iZXInKSxcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbihjb250ZXh0KSB7XG5cbiAgICBjb25zdCBmaWxlSW1wb3J0cyA9IG5ldyBNYXAoKVxuICAgIGNvbnN0IGFsbFByb3BlcnR5TG9va3VwcyA9IG5ldyBNYXAoKVxuXG4gICAgZnVuY3Rpb24gaGFuZGxlSW1wb3J0RGVmYXVsdChub2RlKSB7XG4gICAgICBjb25zdCBkZWNsYXJhdGlvbiA9IGltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpXG4gICAgICBjb25zdCBleHBvcnRNYXAgPSBFeHBvcnRzLmdldChkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWUsIGNvbnRleHQpXG4gICAgICBpZiAoZXhwb3J0TWFwID09IG51bGwpIHJldHVyblxuXG4gICAgICBpZiAoZXhwb3J0TWFwLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgZXhwb3J0TWFwLnJlcG9ydEVycm9ycyhjb250ZXh0LCBkZWNsYXJhdGlvbilcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGZpbGVJbXBvcnRzLnNldChub2RlLmxvY2FsLm5hbWUsIHtcbiAgICAgICAgZXhwb3J0TWFwLFxuICAgICAgICBzb3VyY2VQYXRoOiBkZWNsYXJhdGlvbi5zb3VyY2UudmFsdWUsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHN0b3JlUHJvcGVydHlMb29rdXAob2JqZWN0TmFtZSwgcHJvcE5hbWUsIG5vZGUpIHtcbiAgICAgIGNvbnN0IGxvb2t1cHMgPSBhbGxQcm9wZXJ0eUxvb2t1cHMuZ2V0KG9iamVjdE5hbWUpIHx8IFtdXG4gICAgICBsb29rdXBzLnB1c2goe25vZGUsIHByb3BOYW1lfSlcbiAgICAgIGFsbFByb3BlcnR5TG9va3Vwcy5zZXQob2JqZWN0TmFtZSwgbG9va3VwcylcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVQcm9wTG9va3VwKG5vZGUpIHtcbiAgICAgIGNvbnN0IG9iamVjdE5hbWUgPSBub2RlLm9iamVjdC5uYW1lXG4gICAgICBjb25zdCBwcm9wTmFtZSA9IG5vZGUucHJvcGVydHkubmFtZVxuICAgICAgc3RvcmVQcm9wZXJ0eUxvb2t1cChvYmplY3ROYW1lLCBwcm9wTmFtZSwgbm9kZSlcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudChub2RlKSB7XG4gICAgICBjb25zdCBpc0Rlc3RydWN0dXJlID0gKFxuICAgICAgICBub2RlLmlkLnR5cGUgPT09ICdPYmplY3RQYXR0ZXJuJyAmJlxuICAgICAgICBub2RlLmluaXQgIT0gbnVsbCAmJlxuICAgICAgICBub2RlLmluaXQudHlwZSA9PT0gJ0lkZW50aWZpZXInXG4gICAgICApXG4gICAgICBpZiAoIWlzRGVzdHJ1Y3R1cmUpIHJldHVyblxuXG4gICAgICBjb25zdCBvYmplY3ROYW1lID0gbm9kZS5pbml0Lm5hbWVcbiAgICAgIGZvciAoY29uc3QgeyBrZXkgfSBvZiBub2RlLmlkLnByb3BlcnRpZXMpIHtcbiAgICAgICAgaWYgKGtleSA9PSBudWxsKSBjb250aW51ZSAgLy8gdHJ1ZSBmb3IgcmVzdCBwcm9wZXJ0aWVzXG4gICAgICAgIHN0b3JlUHJvcGVydHlMb29rdXAob2JqZWN0TmFtZSwga2V5Lm5hbWUsIGtleSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVQcm9ncmFtRXhpdCgpIHtcbiAgICAgIGFsbFByb3BlcnR5TG9va3Vwcy5mb3JFYWNoKChsb29rdXBzLCBvYmplY3ROYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpbGVJbXBvcnQgPSBmaWxlSW1wb3J0cy5nZXQob2JqZWN0TmFtZSlcbiAgICAgICAgaWYgKGZpbGVJbXBvcnQgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICAgICAgZm9yIChjb25zdCB7cHJvcE5hbWUsIG5vZGV9IG9mIGxvb2t1cHMpIHtcbiAgICAgICAgICAvLyB0aGUgZGVmYXVsdCBpbXBvcnQgY2FuIGhhdmUgYSBcImRlZmF1bHRcIiBwcm9wZXJ0eVxuICAgICAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ2RlZmF1bHQnKSBjb250aW51ZVxuICAgICAgICAgIGlmICghZmlsZUltcG9ydC5leHBvcnRNYXAubmFtZXNwYWNlLmhhcyhwcm9wTmFtZSkpIGNvbnRpbnVlXG5cbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogKFxuICAgICAgICAgICAgICBgQ2F1dGlvbjogXFxgJHtvYmplY3ROYW1lfVxcYCBhbHNvIGhhcyBhIG5hbWVkIGV4cG9ydCBgICtcbiAgICAgICAgICAgICAgYFxcYCR7cHJvcE5hbWV9XFxgLiBDaGVjayBpZiB5b3UgbWVhbnQgdG8gd3JpdGUgYCArXG4gICAgICAgICAgICAgIGBcXGBpbXBvcnQgeyR7cHJvcE5hbWV9fSBmcm9tICcke2ZpbGVJbXBvcnQuc291cmNlUGF0aH0nXFxgIGAgK1xuICAgICAgICAgICAgICAnaW5zdGVhZC4nXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdJbXBvcnREZWZhdWx0U3BlY2lmaWVyJzogaGFuZGxlSW1wb3J0RGVmYXVsdCxcbiAgICAgICdNZW1iZXJFeHByZXNzaW9uJzogaGFuZGxlUHJvcExvb2t1cCxcbiAgICAgICdWYXJpYWJsZURlY2xhcmF0b3InOiBoYW5kbGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudCxcbiAgICAgICdQcm9ncmFtOmV4aXQnOiBoYW5kbGVQcm9ncmFtRXhpdCxcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default.js new file mode 100644 index 0000000..8376f9d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-as-default.js @@ -0,0 +1,52 @@ +'use strict'; + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _importDeclaration = require('../importDeclaration'); + +var _importDeclaration2 = _interopRequireDefault(_importDeclaration); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('no-named-as-default') + }, + schema: [] + }, + + create: function (context) { + function checkDefault(nameKey, defaultSpecifier) { + // #566: default is a valid specifier + if (defaultSpecifier[nameKey].name === 'default') return; + + var declaration = (0, _importDeclaration2.default)(context); + + var imports = _ExportMap2.default.get(declaration.source.value, context); + if (imports == null) return; + + if (imports.errors.length) { + imports.reportErrors(context, declaration); + return; + } + + if (imports.has('default') && imports.has(defaultSpecifier[nameKey].name)) { + + context.report(defaultSpecifier, 'Using exported name \'' + defaultSpecifier[nameKey].name + '\' as identifier for default export.'); + } + } + return { + 'ImportDefaultSpecifier': checkDefault.bind(null, 'local'), + 'ExportDefaultSpecifier': checkDefault.bind(null, 'exported') + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1uYW1lZC1hcy1kZWZhdWx0LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0IiwiY2hlY2tEZWZhdWx0IiwibmFtZUtleSIsImRlZmF1bHRTcGVjaWZpZXIiLCJuYW1lIiwiZGVjbGFyYXRpb24iLCJpbXBvcnRzIiwiRXhwb3J0cyIsImdldCIsInNvdXJjZSIsInZhbHVlIiwiZXJyb3JzIiwibGVuZ3RoIiwicmVwb3J0RXJyb3JzIiwiaGFzIiwicmVwb3J0IiwiYmluZCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxTQURGO0FBRUpDLFVBQU07QUFDSkMsV0FBSyx1QkFBUSxxQkFBUjtBQURELEtBRkY7QUFLSkMsWUFBUTtBQUxKLEdBRFM7O0FBU2ZDLFVBQVEsVUFBVUMsT0FBVixFQUFtQjtBQUN6QixhQUFTQyxZQUFULENBQXNCQyxPQUF0QixFQUErQkMsZ0JBQS9CLEVBQWlEO0FBQy9DO0FBQ0EsVUFBSUEsaUJBQWlCRCxPQUFqQixFQUEwQkUsSUFBMUIsS0FBbUMsU0FBdkMsRUFBa0Q7O0FBRWxELFVBQUlDLGNBQWMsaUNBQWtCTCxPQUFsQixDQUFsQjs7QUFFQSxVQUFJTSxVQUFVQyxvQkFBUUMsR0FBUixDQUFZSCxZQUFZSSxNQUFaLENBQW1CQyxLQUEvQixFQUFzQ1YsT0FBdEMsQ0FBZDtBQUNBLFVBQUlNLFdBQVcsSUFBZixFQUFxQjs7QUFFckIsVUFBSUEsUUFBUUssTUFBUixDQUFlQyxNQUFuQixFQUEyQjtBQUN6Qk4sZ0JBQVFPLFlBQVIsQ0FBcUJiLE9BQXJCLEVBQThCSyxXQUE5QjtBQUNBO0FBQ0Q7O0FBRUQsVUFBSUMsUUFBUVEsR0FBUixDQUFZLFNBQVosS0FDQVIsUUFBUVEsR0FBUixDQUFZWCxpQkFBaUJELE9BQWpCLEVBQTBCRSxJQUF0QyxDQURKLEVBQ2lEOztBQUUvQ0osZ0JBQVFlLE1BQVIsQ0FBZVosZ0JBQWYsRUFDRSwyQkFBMkJBLGlCQUFpQkQsT0FBakIsRUFBMEJFLElBQXJELEdBQ0Esc0NBRkY7QUFJRDtBQUNGO0FBQ0QsV0FBTztBQUNMLGdDQUEwQkgsYUFBYWUsSUFBYixDQUFrQixJQUFsQixFQUF3QixPQUF4QixDQURyQjtBQUVMLGdDQUEwQmYsYUFBYWUsSUFBYixDQUFrQixJQUFsQixFQUF3QixVQUF4QjtBQUZyQixLQUFQO0FBSUQ7QUFyQ2MsQ0FBakIiLCJmaWxlIjoibm8tbmFtZWQtYXMtZGVmYXVsdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeHBvcnRzIGZyb20gJy4uL0V4cG9ydE1hcCdcbmltcG9ydCBpbXBvcnREZWNsYXJhdGlvbiBmcm9tICcuLi9pbXBvcnREZWNsYXJhdGlvbidcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tbmFtZWQtYXMtZGVmYXVsdCcpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgZnVuY3Rpb24gY2hlY2tEZWZhdWx0KG5hbWVLZXksIGRlZmF1bHRTcGVjaWZpZXIpIHtcbiAgICAgIC8vICM1NjY6IGRlZmF1bHQgaXMgYSB2YWxpZCBzcGVjaWZpZXJcbiAgICAgIGlmIChkZWZhdWx0U3BlY2lmaWVyW25hbWVLZXldLm5hbWUgPT09ICdkZWZhdWx0JykgcmV0dXJuXG5cbiAgICAgIHZhciBkZWNsYXJhdGlvbiA9IGltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpXG5cbiAgICAgIHZhciBpbXBvcnRzID0gRXhwb3J0cy5nZXQoZGVjbGFyYXRpb24uc291cmNlLnZhbHVlLCBjb250ZXh0KVxuICAgICAgaWYgKGltcG9ydHMgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICAgIGlmIChpbXBvcnRzLmVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgaW1wb3J0cy5yZXBvcnRFcnJvcnMoY29udGV4dCwgZGVjbGFyYXRpb24pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoaW1wb3J0cy5oYXMoJ2RlZmF1bHQnKSAmJlxuICAgICAgICAgIGltcG9ydHMuaGFzKGRlZmF1bHRTcGVjaWZpZXJbbmFtZUtleV0ubmFtZSkpIHtcblxuICAgICAgICBjb250ZXh0LnJlcG9ydChkZWZhdWx0U3BlY2lmaWVyLFxuICAgICAgICAgICdVc2luZyBleHBvcnRlZCBuYW1lIFxcJycgKyBkZWZhdWx0U3BlY2lmaWVyW25hbWVLZXldLm5hbWUgK1xuICAgICAgICAgICdcXCcgYXMgaWRlbnRpZmllciBmb3IgZGVmYXVsdCBleHBvcnQuJylcblxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInOiBjaGVja0RlZmF1bHQuYmluZChudWxsLCAnbG9jYWwnKSxcbiAgICAgICdFeHBvcnREZWZhdWx0U3BlY2lmaWVyJzogY2hlY2tEZWZhdWx0LmJpbmQobnVsbCwgJ2V4cG9ydGVkJyksXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-default.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-default.js new file mode 100644 index 0000000..63565df --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-default.js @@ -0,0 +1,32 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-named-default') + }, + schema: [] + }, + + create: function (context) { + return { + 'ImportDeclaration': function (node) { + node.specifiers.forEach(function (im) { + if (im.type === 'ImportSpecifier' && im.imported.name === 'default') { + context.report({ + node: im.local, + message: `Use default import syntax to import '${im.local.name}'.` }); + } + }); + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1uYW1lZC1kZWZhdWx0LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0Iiwibm9kZSIsInNwZWNpZmllcnMiLCJmb3JFYWNoIiwiaW0iLCJpbXBvcnRlZCIsIm5hbWUiLCJyZXBvcnQiLCJsb2NhbCIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7OztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxZQURGO0FBRUpDLFVBQU07QUFDSkMsV0FBSyx1QkFBUSxrQkFBUjtBQURELEtBRkY7QUFLSkMsWUFBUTtBQUxKLEdBRFM7O0FBU2ZDLFVBQVEsVUFBVUMsT0FBVixFQUFtQjtBQUN6QixXQUFPO0FBQ0wsMkJBQXFCLFVBQVVDLElBQVYsRUFBZ0I7QUFDbkNBLGFBQUtDLFVBQUwsQ0FBZ0JDLE9BQWhCLENBQXdCLFVBQVVDLEVBQVYsRUFBYztBQUNwQyxjQUFJQSxHQUFHVCxJQUFILEtBQVksaUJBQVosSUFBaUNTLEdBQUdDLFFBQUgsQ0FBWUMsSUFBWixLQUFxQixTQUExRCxFQUFxRTtBQUNuRU4sb0JBQVFPLE1BQVIsQ0FBZTtBQUNiTixvQkFBTUcsR0FBR0ksS0FESTtBQUViQyx1QkFBVSx3Q0FBdUNMLEdBQUdJLEtBQUgsQ0FBU0YsSUFBSyxJQUZsRCxFQUFmO0FBR0Q7QUFDRixTQU5EO0FBT0Q7QUFUSSxLQUFQO0FBV0Q7QUFyQmMsQ0FBakIiLCJmaWxlIjoibm8tbmFtZWQtZGVmYXVsdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tbmFtZWQtZGVmYXVsdCcpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdJbXBvcnREZWNsYXJhdGlvbic6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUuc3BlY2lmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChpbSkge1xuICAgICAgICAgIGlmIChpbS50eXBlID09PSAnSW1wb3J0U3BlY2lmaWVyJyAmJiBpbS5pbXBvcnRlZC5uYW1lID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgbm9kZTogaW0ubG9jYWwsXG4gICAgICAgICAgICAgIG1lc3NhZ2U6IGBVc2UgZGVmYXVsdCBpbXBvcnQgc3ludGF4IHRvIGltcG9ydCAnJHtpbS5sb2NhbC5uYW1lfScuYCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-export.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-export.js new file mode 100644 index 0000000..b9ec45b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-named-export.js @@ -0,0 +1,42 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { url: (0, _docsUrl2.default)('no-named-export') }, + schema: [] + }, + + create(context) { + // ignore non-modules + if (context.parserOptions.sourceType !== 'module') { + return {}; + } + + const message = 'Named exports are not allowed.'; + + return { + ExportAllDeclaration(node) { + context.report({ node, message }); + }, + + ExportNamedDeclaration(node) { + if (node.specifiers.length === 0) { + return context.report({ node, message }); + } + + const someNamed = node.specifiers.some(specifier => specifier.exported.name !== 'default'); + if (someNamed) { + context.report({ node, message }); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1uYW1lZC1leHBvcnQuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsImNvbnRleHQiLCJwYXJzZXJPcHRpb25zIiwic291cmNlVHlwZSIsIm1lc3NhZ2UiLCJFeHBvcnRBbGxEZWNsYXJhdGlvbiIsIm5vZGUiLCJyZXBvcnQiLCJFeHBvcnROYW1lZERlY2xhcmF0aW9uIiwic3BlY2lmaWVycyIsImxlbmd0aCIsInNvbWVOYW1lZCIsInNvbWUiLCJzcGVjaWZpZXIiLCJleHBvcnRlZCIsIm5hbWUiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7OztBQUVBQSxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxZQURGO0FBRUpDLFVBQU0sRUFBRUMsS0FBSyx1QkFBUSxpQkFBUixDQUFQLEVBRkY7QUFHSkMsWUFBUTtBQUhKLEdBRFM7O0FBT2ZDLFNBQU9DLE9BQVAsRUFBZ0I7QUFDZDtBQUNBLFFBQUlBLFFBQVFDLGFBQVIsQ0FBc0JDLFVBQXRCLEtBQXFDLFFBQXpDLEVBQW1EO0FBQ2pELGFBQU8sRUFBUDtBQUNEOztBQUVELFVBQU1DLFVBQVUsZ0NBQWhCOztBQUVBLFdBQU87QUFDTEMsMkJBQXFCQyxJQUFyQixFQUEyQjtBQUN6QkwsZ0JBQVFNLE1BQVIsQ0FBZSxFQUFDRCxJQUFELEVBQU9GLE9BQVAsRUFBZjtBQUNELE9BSEk7O0FBS0xJLDZCQUF1QkYsSUFBdkIsRUFBNkI7QUFDM0IsWUFBSUEsS0FBS0csVUFBTCxDQUFnQkMsTUFBaEIsS0FBMkIsQ0FBL0IsRUFBa0M7QUFDaEMsaUJBQU9ULFFBQVFNLE1BQVIsQ0FBZSxFQUFDRCxJQUFELEVBQU9GLE9BQVAsRUFBZixDQUFQO0FBQ0Q7O0FBRUQsY0FBTU8sWUFBWUwsS0FBS0csVUFBTCxDQUFnQkcsSUFBaEIsQ0FBcUJDLGFBQWFBLFVBQVVDLFFBQVYsQ0FBbUJDLElBQW5CLEtBQTRCLFNBQTlELENBQWxCO0FBQ0EsWUFBSUosU0FBSixFQUFlO0FBQ2JWLGtCQUFRTSxNQUFSLENBQWUsRUFBQ0QsSUFBRCxFQUFPRixPQUFQLEVBQWY7QUFDRDtBQUNGO0FBZEksS0FBUDtBQWdCRDtBQS9CYyxDQUFqQiIsImZpbGUiOiJuby1uYW1lZC1leHBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7IHVybDogZG9jc1VybCgnbm8tbmFtZWQtZXhwb3J0JykgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZShjb250ZXh0KSB7XG4gICAgLy8gaWdub3JlIG5vbi1tb2R1bGVzXG4gICAgaWYgKGNvbnRleHQucGFyc2VyT3B0aW9ucy5zb3VyY2VUeXBlICE9PSAnbW9kdWxlJykge1xuICAgICAgcmV0dXJuIHt9XG4gICAgfVxuXG4gICAgY29uc3QgbWVzc2FnZSA9ICdOYW1lZCBleHBvcnRzIGFyZSBub3QgYWxsb3dlZC4nXG5cbiAgICByZXR1cm4ge1xuICAgICAgRXhwb3J0QWxsRGVjbGFyYXRpb24obm9kZSkge1xuICAgICAgICBjb250ZXh0LnJlcG9ydCh7bm9kZSwgbWVzc2FnZX0pXG4gICAgICB9LFxuXG4gICAgICBFeHBvcnROYW1lZERlY2xhcmF0aW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKG5vZGUuc3BlY2lmaWVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICByZXR1cm4gY29udGV4dC5yZXBvcnQoe25vZGUsIG1lc3NhZ2V9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc29tZU5hbWVkID0gbm9kZS5zcGVjaWZpZXJzLnNvbWUoc3BlY2lmaWVyID0+IHNwZWNpZmllci5leHBvcnRlZC5uYW1lICE9PSAnZGVmYXVsdCcpXG4gICAgICAgIGlmIChzb21lTmFtZWQpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7bm9kZSwgbWVzc2FnZX0pXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-namespace.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-namespace.js new file mode 100644 index 0000000..b25a26e --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-namespace.js @@ -0,0 +1,147 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } /** + * @fileoverview Rule to disallow namespace import + * @author Radek Benkel + */ + +//------------------------------------------------------------------------------ +// Rule Definition +//------------------------------------------------------------------------------ + + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-namespace') + }, + fixable: 'code', + schema: [] + }, + + create: function (context) { + return { + 'ImportNamespaceSpecifier': function (node) { + const scopeVariables = context.getScope().variables; + const namespaceVariable = scopeVariables.find(variable => variable.defs[0].node === node); + const namespaceReferences = namespaceVariable.references; + const namespaceIdentifiers = namespaceReferences.map(reference => reference.identifier); + const canFix = namespaceIdentifiers.length > 0 && !usesNamespaceAsObject(namespaceIdentifiers); + + context.report({ + node, + message: `Unexpected namespace import.`, + fix: canFix && (fixer => { + const scopeManager = context.getSourceCode().scopeManager; + const fixes = []; + + // Pass 1: Collect variable names that are already in scope for each reference we want + // to transform, so that we can be sure that we choose non-conflicting import names + const importNameConflicts = {}; + namespaceIdentifiers.forEach(identifier => { + const parent = identifier.parent; + if (parent && parent.type === 'MemberExpression') { + const importName = getMemberPropertyName(parent); + const localConflicts = getVariableNamesInScope(scopeManager, parent); + if (!importNameConflicts[importName]) { + importNameConflicts[importName] = localConflicts; + } else { + localConflicts.forEach(c => importNameConflicts[importName].add(c)); + } + } + }); + + // Choose new names for each import + const importNames = Object.keys(importNameConflicts); + const importLocalNames = generateLocalNames(importNames, importNameConflicts, namespaceVariable.name); + + // Replace the ImportNamespaceSpecifier with a list of ImportSpecifiers + const namedImportSpecifiers = importNames.map(importName => importName === importLocalNames[importName] ? importName : `${importName} as ${importLocalNames[importName]}`); + fixes.push(fixer.replaceText(node, `{ ${namedImportSpecifiers.join(', ')} }`)); + + // Pass 2: Replace references to the namespace with references to the named imports + namespaceIdentifiers.forEach(identifier => { + const parent = identifier.parent; + if (parent && parent.type === 'MemberExpression') { + const importName = getMemberPropertyName(parent); + fixes.push(fixer.replaceText(parent, importLocalNames[importName])); + } + }); + + return fixes; + }) + }); + } + }; + } + + /** + * @param {Identifier[]} namespaceIdentifiers + * @returns {boolean} `true` if the namespace variable is more than just a glorified constant + */ +};function usesNamespaceAsObject(namespaceIdentifiers) { + return !namespaceIdentifiers.every(identifier => { + const parent = identifier.parent; + + // `namespace.x` or `namespace['x']` + return parent && parent.type === 'MemberExpression' && (parent.property.type === 'Identifier' || parent.property.type === 'Literal'); + }); +} + +/** + * @param {MemberExpression} memberExpression + * @returns {string} the name of the member in the object expression, e.g. the `x` in `namespace.x` + */ +function getMemberPropertyName(memberExpression) { + return memberExpression.property.type === 'Identifier' ? memberExpression.property.name : memberExpression.property.value; +} + +/** + * @param {ScopeManager} scopeManager + * @param {ASTNode} node + * @return {Set} + */ +function getVariableNamesInScope(scopeManager, node) { + let currentNode = node; + let scope = scopeManager.acquire(currentNode); + while (scope == null) { + currentNode = currentNode.parent; + scope = scopeManager.acquire(currentNode, true); + } + return new Set([].concat(_toConsumableArray(scope.variables.map(variable => variable.name)), _toConsumableArray(scope.upper.variables.map(variable => variable.name)))); +} + +/** + * + * @param {*} names + * @param {*} nameConflicts + * @param {*} namespaceName + */ +function generateLocalNames(names, nameConflicts, namespaceName) { + const localNames = {}; + names.forEach(name => { + let localName; + if (!nameConflicts[name].has(name)) { + localName = name; + } else if (!nameConflicts[name].has(`${namespaceName}_${name}`)) { + localName = `${namespaceName}_${name}`; + } else { + for (let i = 1; i < Infinity; i++) { + if (!nameConflicts[name].has(`${namespaceName}_${name}_${i}`)) { + localName = `${namespaceName}_${name}_${i}`; + break; + } + } + } + localNames[name] = localName; + }); + return localNames; +} +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1uYW1lc3BhY2UuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsImZpeGFibGUiLCJzY2hlbWEiLCJjcmVhdGUiLCJjb250ZXh0Iiwibm9kZSIsInNjb3BlVmFyaWFibGVzIiwiZ2V0U2NvcGUiLCJ2YXJpYWJsZXMiLCJuYW1lc3BhY2VWYXJpYWJsZSIsImZpbmQiLCJ2YXJpYWJsZSIsImRlZnMiLCJuYW1lc3BhY2VSZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsIm5hbWVzcGFjZUlkZW50aWZpZXJzIiwibWFwIiwicmVmZXJlbmNlIiwiaWRlbnRpZmllciIsImNhbkZpeCIsImxlbmd0aCIsInVzZXNOYW1lc3BhY2VBc09iamVjdCIsInJlcG9ydCIsIm1lc3NhZ2UiLCJmaXgiLCJmaXhlciIsInNjb3BlTWFuYWdlciIsImdldFNvdXJjZUNvZGUiLCJmaXhlcyIsImltcG9ydE5hbWVDb25mbGljdHMiLCJmb3JFYWNoIiwicGFyZW50IiwiaW1wb3J0TmFtZSIsImdldE1lbWJlclByb3BlcnR5TmFtZSIsImxvY2FsQ29uZmxpY3RzIiwiZ2V0VmFyaWFibGVOYW1lc0luU2NvcGUiLCJjIiwiYWRkIiwiaW1wb3J0TmFtZXMiLCJPYmplY3QiLCJrZXlzIiwiaW1wb3J0TG9jYWxOYW1lcyIsImdlbmVyYXRlTG9jYWxOYW1lcyIsIm5hbWUiLCJuYW1lZEltcG9ydFNwZWNpZmllcnMiLCJwdXNoIiwicmVwbGFjZVRleHQiLCJqb2luIiwiZXZlcnkiLCJwcm9wZXJ0eSIsIm1lbWJlckV4cHJlc3Npb24iLCJ2YWx1ZSIsImN1cnJlbnROb2RlIiwic2NvcGUiLCJhY3F1aXJlIiwiU2V0IiwidXBwZXIiLCJuYW1lcyIsIm5hbWVDb25mbGljdHMiLCJuYW1lc3BhY2VOYW1lIiwibG9jYWxOYW1lcyIsImxvY2FsTmFtZSIsImhhcyIsImkiLCJJbmZpbml0eSJdLCJtYXBwaW5ncyI6Ijs7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LEdBQXRCLENBQTBCTCxZQUFZQSxTQUFTZ0MsSUFBL0MsQ0FGRSxHQUFQO0FBSUQ7O0FBRUQ7Ozs7OztBQU1BLFNBQVNELGtCQUFULENBQTRCZSxLQUE1QixFQUFtQ0MsYUFBbkMsRUFBa0RDLGFBQWxELEVBQWlFO0FBQy9ELFFBQU1DLGFBQWEsRUFBbkI7QUFDQUgsUUFBTTNCLE9BQU4sQ0FBZWEsSUFBRCxJQUFVO0FBQ3RCLFFBQUlrQixTQUFKO0FBQ0EsUUFBSSxDQUFDSCxjQUFjZixJQUFkLEVBQW9CbUIsR0FBcEIsQ0FBd0JuQixJQUF4QixDQUFMLEVBQW9DO0FBQ2xDa0Isa0JBQVlsQixJQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUksQ0FBQ2UsY0FBY2YsSUFBZCxFQUFvQm1CLEdBQXBCLENBQXlCLEdBQUVILGFBQWMsSUFBR2hCLElBQUssRUFBakQsQ0FBTCxFQUEwRDtBQUMvRGtCLGtCQUFhLEdBQUVGLGFBQWMsSUFBR2hCLElBQUssRUFBckM7QUFDRCxLQUZNLE1BRUE7QUFDTCxXQUFLLElBQUlvQixJQUFJLENBQWIsRUFBZ0JBLElBQUlDLFFBQXBCLEVBQThCRCxHQUE5QixFQUFtQztBQUNqQyxZQUFJLENBQUNMLGNBQWNmLElBQWQsRUFBb0JtQixHQUFwQixDQUF5QixHQUFFSCxhQUFjLElBQUdoQixJQUFLLElBQUdvQixDQUFFLEVBQXRELENBQUwsRUFBK0Q7QUFDN0RGLHNCQUFhLEdBQUVGLGFBQWMsSUFBR2hCLElBQUssSUFBR29CLENBQUUsRUFBMUM7QUFDQTtBQUNEO0FBQ0Y7QUFDRjtBQUNESCxlQUFXakIsSUFBWCxJQUFtQmtCLFNBQW5CO0FBQ0QsR0FmRDtBQWdCQSxTQUFPRCxVQUFQO0FBQ0QiLCJmaWxlIjoibm8tbmFtZXNwYWNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IFJ1bGUgdG8gZGlzYWxsb3cgbmFtZXNwYWNlIGltcG9ydFxuICogQGF1dGhvciBSYWRlayBCZW5rZWxcbiAqL1xuXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZSBEZWZpbml0aW9uXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tbmFtZXNwYWNlJyksXG4gICAgfSxcbiAgICBmaXhhYmxlOiAnY29kZScsXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInOiBmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICBjb25zdCBzY29wZVZhcmlhYmxlcyA9IGNvbnRleHQuZ2V0U2NvcGUoKS52YXJpYWJsZXNcbiAgICAgICAgY29uc3QgbmFtZXNwYWNlVmFyaWFibGUgPSBzY29wZVZhcmlhYmxlcy5maW5kKCh2YXJpYWJsZSkgPT5cbiAgICAgICAgICB2YXJpYWJsZS5kZWZzWzBdLm5vZGUgPT09IG5vZGVcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBuYW1lc3BhY2VSZWZlcmVuY2VzID0gbmFtZXNwYWNlVmFyaWFibGUucmVmZXJlbmNlc1xuICAgICAgICBjb25zdCBuYW1lc3BhY2VJZGVudGlmaWVycyA9IG5hbWVzcGFjZVJlZmVyZW5jZXMubWFwKHJlZmVyZW5jZSA9PiByZWZlcmVuY2UuaWRlbnRpZmllcilcbiAgICAgICAgY29uc3QgY2FuRml4ID0gbmFtZXNwYWNlSWRlbnRpZmllcnMubGVuZ3RoID4gMCAmJiAhdXNlc05hbWVzcGFjZUFzT2JqZWN0KG5hbWVzcGFjZUlkZW50aWZpZXJzKVxuXG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIG1lc3NhZ2U6IGBVbmV4cGVjdGVkIG5hbWVzcGFjZSBpbXBvcnQuYCxcbiAgICAgICAgICBmaXg6IGNhbkZpeCAmJiAoZml4ZXIgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2NvcGVNYW5hZ2VyID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKCkuc2NvcGVNYW5hZ2VyXG4gICAgICAgICAgICBjb25zdCBmaXhlcyA9IFtdXG5cbiAgICAgICAgICAgIC8vIFBhc3MgMTogQ29sbGVjdCB2YXJpYWJsZSBuYW1lcyB0aGF0IGFyZSBhbHJlYWR5IGluIHNjb3BlIGZvciBlYWNoIHJlZmVyZW5jZSB3ZSB3YW50XG4gICAgICAgICAgICAvLyB0byB0cmFuc2Zvcm0sIHNvIHRoYXQgd2UgY2FuIGJlIHN1cmUgdGhhdCB3ZSBjaG9vc2Ugbm9uLWNvbmZsaWN0aW5nIGltcG9ydCBuYW1lc1xuICAgICAgICAgICAgY29uc3QgaW1wb3J0TmFtZUNvbmZsaWN0cyA9IHt9XG4gICAgICAgICAgICBuYW1lc3BhY2VJZGVudGlmaWVycy5mb3JFYWNoKChpZGVudGlmaWVyKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGlkZW50aWZpZXIucGFyZW50XG4gICAgICAgICAgICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LnR5cGUgPT09ICdNZW1iZXJFeHByZXNzaW9uJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGltcG9ydE5hbWUgPSBnZXRNZW1iZXJQcm9wZXJ0eU5hbWUocGFyZW50KVxuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2FsQ29uZmxpY3RzID0gZ2V0VmFyaWFibGVOYW1lc0luU2NvcGUoc2NvcGVNYW5hZ2VyLCBwYXJlbnQpXG4gICAgICAgICAgICAgICAgaWYgKCFpbXBvcnROYW1lQ29uZmxpY3RzW2ltcG9ydE5hbWVdKSB7XG4gICAgICAgICAgICAgICAgICBpbXBvcnROYW1lQ29uZmxpY3RzW2ltcG9ydE5hbWVdID0gbG9jYWxDb25mbGljdHNcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbG9jYWxDb25mbGljdHMuZm9yRWFjaCgoYykgPT4gaW1wb3J0TmFtZUNvbmZsaWN0c1tpbXBvcnROYW1lXS5hZGQoYykpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAvLyBDaG9vc2UgbmV3IG5hbWVzIGZvciBlYWNoIGltcG9ydFxuICAgICAgICAgICAgY29uc3QgaW1wb3J0TmFtZXMgPSBPYmplY3Qua2V5cyhpbXBvcnROYW1lQ29uZmxpY3RzKVxuICAgICAgICAgICAgY29uc3QgaW1wb3J0TG9jYWxOYW1lcyA9IGdlbmVyYXRlTG9jYWxOYW1lcyhcbiAgICAgICAgICAgICAgaW1wb3J0TmFtZXMsXG4gICAgICAgICAgICAgIGltcG9ydE5hbWVDb25mbGljdHMsXG4gICAgICAgICAgICAgIG5hbWVzcGFjZVZhcmlhYmxlLm5hbWVcbiAgICAgICAgICAgIClcblxuICAgICAgICAgICAgLy8gUmVwbGFjZSB0aGUgSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyIHdpdGggYSBsaXN0IG9mIEltcG9ydFNwZWNpZmllcnNcbiAgICAgICAgICAgIGNvbnN0IG5hbWVkSW1wb3J0U3BlY2lmaWVycyA9IGltcG9ydE5hbWVzLm1hcCgoaW1wb3J0TmFtZSkgPT5cbiAgICAgICAgICAgICAgaW1wb3J0TmFtZSA9PT0gaW1wb3J0TG9jYWxOYW1lc1tpbXBvcnROYW1lXVxuICAgICAgICAgICAgICAgID8gaW1wb3J0TmFtZVxuICAgICAgICAgICAgICAgIDogYCR7aW1wb3J0TmFtZX0gYXMgJHtpbXBvcnRMb2NhbE5hbWVzW2ltcG9ydE5hbWVdfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGZpeGVzLnB1c2goZml4ZXIucmVwbGFjZVRleHQobm9kZSwgYHsgJHtuYW1lZEltcG9ydFNwZWNpZmllcnMuam9pbignLCAnKX0gfWApKVxuXG4gICAgICAgICAgICAvLyBQYXNzIDI6IFJlcGxhY2UgcmVmZXJlbmNlcyB0byB0aGUgbmFtZXNwYWNlIHdpdGggcmVmZXJlbmNlcyB0byB0aGUgbmFtZWQgaW1wb3J0c1xuICAgICAgICAgICAgbmFtZXNwYWNlSWRlbnRpZmllcnMuZm9yRWFjaCgoaWRlbnRpZmllcikgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBpZGVudGlmaWVyLnBhcmVudFxuICAgICAgICAgICAgICBpZiAocGFyZW50ICYmIHBhcmVudC50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbicpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbXBvcnROYW1lID0gZ2V0TWVtYmVyUHJvcGVydHlOYW1lKHBhcmVudClcbiAgICAgICAgICAgICAgICBmaXhlcy5wdXNoKGZpeGVyLnJlcGxhY2VUZXh0KHBhcmVudCwgaW1wb3J0TG9jYWxOYW1lc1tpbXBvcnROYW1lXSkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIHJldHVybiBmaXhlc1xuICAgICAgICAgIH0pLFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59XG5cbi8qKlxuICogQHBhcmFtIHtJZGVudGlmaWVyW119IG5hbWVzcGFjZUlkZW50aWZpZXJzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBuYW1lc3BhY2UgdmFyaWFibGUgaXMgbW9yZSB0aGFuIGp1c3QgYSBnbG9yaWZpZWQgY29uc3RhbnRcbiAqL1xuZnVuY3Rpb24gdXNlc05hbWVzcGFjZUFzT2JqZWN0KG5hbWVzcGFjZUlkZW50aWZpZXJzKSB7XG4gIHJldHVybiAhbmFtZXNwYWNlSWRlbnRpZmllcnMuZXZlcnkoKGlkZW50aWZpZXIpID0+IHtcbiAgICBjb25zdCBwYXJlbnQgPSBpZGVudGlmaWVyLnBhcmVudFxuXG4gICAgLy8gYG5hbWVzcGFjZS54YCBvciBgbmFtZXNwYWNlWyd4J11gXG4gICAgcmV0dXJuIChcbiAgICAgIHBhcmVudCAmJiBwYXJlbnQudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nICYmXG4gICAgICAocGFyZW50LnByb3BlcnR5LnR5cGUgPT09ICdJZGVudGlmaWVyJyB8fCBwYXJlbnQucHJvcGVydHkudHlwZSA9PT0gJ0xpdGVyYWwnKVxuICAgIClcbiAgfSlcbn1cblxuLyoqXG4gKiBAcGFyYW0ge01lbWJlckV4cHJlc3Npb259IG1lbWJlckV4cHJlc3Npb25cbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIgaW4gdGhlIG9iamVjdCBleHByZXNzaW9uLCBlLmcuIHRoZSBgeGAgaW4gYG5hbWVzcGFjZS54YFxuICovXG5mdW5jdGlvbiBnZXRNZW1iZXJQcm9wZXJ0eU5hbWUobWVtYmVyRXhwcmVzc2lvbikge1xuICByZXR1cm4gbWVtYmVyRXhwcmVzc2lvbi5wcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcidcbiAgICA/IG1lbWJlckV4cHJlc3Npb24ucHJvcGVydHkubmFtZVxuICAgIDogbWVtYmVyRXhwcmVzc2lvbi5wcm9wZXJ0eS52YWx1ZVxufVxuXG4vKipcbiAqIEBwYXJhbSB7U2NvcGVNYW5hZ2VyfSBzY29wZU1hbmFnZXJcbiAqIEBwYXJhbSB7QVNUTm9kZX0gbm9kZVxuICogQHJldHVybiB7U2V0PHN0cmluZz59XG4gKi9cbmZ1bmN0aW9uIGdldFZhcmlhYmxlTmFtZXNJblNjb3BlKHNjb3BlTWFuYWdlciwgbm9kZSkge1xuICBsZXQgY3VycmVudE5vZGUgPSBub2RlXG4gIGxldCBzY29wZSA9IHNjb3BlTWFuYWdlci5hY3F1aXJlKGN1cnJlbnROb2RlKVxuICB3aGlsZSAoc2NvcGUgPT0gbnVsbCkge1xuICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50XG4gICAgc2NvcGUgPSBzY29wZU1hbmFnZXIuYWNxdWlyZShjdXJyZW50Tm9kZSwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gbmV3IFNldChbXG4gICAgLi4uc2NvcGUudmFyaWFibGVzLm1hcCh2YXJpYWJsZSA9PiB2YXJpYWJsZS5uYW1lKSxcbiAgICAuLi5zY29wZS51cHBlci52YXJpYWJsZXMubWFwKHZhcmlhYmxlID0+IHZhcmlhYmxlLm5hbWUpLFxuICBdKVxufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0geyp9IG5hbWVzXG4gKiBAcGFyYW0geyp9IG5hbWVDb25mbGljdHNcbiAqIEBwYXJhbSB7Kn0gbmFtZXNwYWNlTmFtZVxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZUxvY2FsTmFtZXMobmFtZXMsIG5hbWVDb25mbGljdHMsIG5hbWVzcGFjZU5hbWUpIHtcbiAgY29uc3QgbG9jYWxOYW1lcyA9IHt9XG4gIG5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICBsZXQgbG9jYWxOYW1lXG4gICAgaWYgKCFuYW1lQ29uZmxpY3RzW25hbWVdLmhhcyhuYW1lKSkge1xuICAgICAgbG9jYWxOYW1lID0gbmFtZVxuICAgIH0gZWxzZSBpZiAoIW5hbWVDb25mbGljdHNbbmFtZV0uaGFzKGAke25hbWVzcGFjZU5hbWV9XyR7bmFtZX1gKSkge1xuICAgICAgbG9jYWxOYW1lID0gYCR7bmFtZXNwYWNlTmFtZX1fJHtuYW1lfWBcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBJbmZpbml0eTsgaSsrKSB7XG4gICAgICAgIGlmICghbmFtZUNvbmZsaWN0c1tuYW1lXS5oYXMoYCR7bmFtZXNwYWNlTmFtZX1fJHtuYW1lfV8ke2l9YCkpIHtcbiAgICAgICAgICBsb2NhbE5hbWUgPSBgJHtuYW1lc3BhY2VOYW1lfV8ke25hbWV9XyR7aX1gXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBsb2NhbE5hbWVzW25hbWVdID0gbG9jYWxOYW1lXG4gIH0pXG4gIHJldHVybiBsb2NhbE5hbWVzXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-nodejs-modules.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-nodejs-modules.js new file mode 100644 index 0000000..584f4dc --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-nodejs-modules.js @@ -0,0 +1,60 @@ +'use strict'; + +var _importType = require('../core/importType'); + +var _importType2 = _interopRequireDefault(_importType); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function reportIfMissing(context, node, allowed, name) { + if (allowed.indexOf(name) === -1 && (0, _importType2.default)(name, context) === 'builtin') { + context.report(node, 'Do not import Node.js builtin module "' + name + '"'); + } +} + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-nodejs-modules') + }, + schema: [{ + type: 'object', + properties: { + allow: { + type: 'array', + uniqueItems: true, + items: { + type: 'string' + } + } + }, + additionalProperties: false + }] + }, + + create: function (context) { + const options = context.options[0] || {}; + const allowed = options.allow || []; + + return { + ImportDeclaration: function handleImports(node) { + reportIfMissing(context, node, allowed, node.source.value); + }, + CallExpression: function handleRequires(node) { + if ((0, _staticRequire2.default)(node)) { + reportIfMissing(context, node, allowed, node.arguments[0].value); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1ub2RlanMtbW9kdWxlcy5qcyJdLCJuYW1lcyI6WyJyZXBvcnRJZk1pc3NpbmciLCJjb250ZXh0Iiwibm9kZSIsImFsbG93ZWQiLCJuYW1lIiwiaW5kZXhPZiIsInJlcG9ydCIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwiYWxsb3ciLCJ1bmlxdWVJdGVtcyIsIml0ZW1zIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJjcmVhdGUiLCJvcHRpb25zIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJoYW5kbGVJbXBvcnRzIiwic291cmNlIiwidmFsdWUiLCJDYWxsRXhwcmVzc2lvbiIsImhhbmRsZVJlcXVpcmVzIiwiYXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUEsU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLElBQWxDLEVBQXdDQyxPQUF4QyxFQUFpREMsSUFBakQsRUFBdUQ7QUFDckQsTUFBSUQsUUFBUUUsT0FBUixDQUFnQkQsSUFBaEIsTUFBMEIsQ0FBQyxDQUEzQixJQUFnQywwQkFBV0EsSUFBWCxFQUFpQkgsT0FBakIsTUFBOEIsU0FBbEUsRUFBNkU7QUFDM0VBLFlBQVFLLE1BQVIsQ0FBZUosSUFBZixFQUFxQiwyQ0FBMkNFLElBQTNDLEdBQWtELEdBQXZFO0FBQ0Q7QUFDRjs7QUFFREcsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sWUFERjtBQUVKQyxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsbUJBQVI7QUFERCxLQUZGO0FBS0pDLFlBQVEsQ0FDTjtBQUNFSCxZQUFNLFFBRFI7QUFFRUksa0JBQVk7QUFDVkMsZUFBTztBQUNMTCxnQkFBTSxPQUREO0FBRUxNLHVCQUFhLElBRlI7QUFHTEMsaUJBQU87QUFDTFAsa0JBQU07QUFERDtBQUhGO0FBREcsT0FGZDtBQVdFUSw0QkFBc0I7QUFYeEIsS0FETTtBQUxKLEdBRFM7O0FBdUJmQyxVQUFRLFVBQVVsQixPQUFWLEVBQW1CO0FBQ3pCLFVBQU1tQixVQUFVbkIsUUFBUW1CLE9BQVIsQ0FBZ0IsQ0FBaEIsS0FBc0IsRUFBdEM7QUFDQSxVQUFNakIsVUFBVWlCLFFBQVFMLEtBQVIsSUFBaUIsRUFBakM7O0FBRUEsV0FBTztBQUNMTSx5QkFBbUIsU0FBU0MsYUFBVCxDQUF1QnBCLElBQXZCLEVBQTZCO0FBQzlDRix3QkFBZ0JDLE9BQWhCLEVBQXlCQyxJQUF6QixFQUErQkMsT0FBL0IsRUFBd0NELEtBQUtxQixNQUFMLENBQVlDLEtBQXBEO0FBQ0QsT0FISTtBQUlMQyxzQkFBZ0IsU0FBU0MsY0FBVCxDQUF3QnhCLElBQXhCLEVBQThCO0FBQzVDLFlBQUksNkJBQWdCQSxJQUFoQixDQUFKLEVBQTJCO0FBQ3pCRiwwQkFBZ0JDLE9BQWhCLEVBQXlCQyxJQUF6QixFQUErQkMsT0FBL0IsRUFBd0NELEtBQUt5QixTQUFMLENBQWUsQ0FBZixFQUFrQkgsS0FBMUQ7QUFDRDtBQUNGO0FBUkksS0FBUDtBQVVEO0FBckNjLENBQWpCIiwiZmlsZSI6Im5vLW5vZGVqcy1tb2R1bGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGltcG9ydFR5cGUgZnJvbSAnLi4vY29yZS9pbXBvcnRUeXBlJ1xuaW1wb3J0IGlzU3RhdGljUmVxdWlyZSBmcm9tICcuLi9jb3JlL3N0YXRpY1JlcXVpcmUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5mdW5jdGlvbiByZXBvcnRJZk1pc3NpbmcoY29udGV4dCwgbm9kZSwgYWxsb3dlZCwgbmFtZSkge1xuICBpZiAoYWxsb3dlZC5pbmRleE9mKG5hbWUpID09PSAtMSAmJiBpbXBvcnRUeXBlKG5hbWUsIGNvbnRleHQpID09PSAnYnVpbHRpbicpIHtcbiAgICBjb250ZXh0LnJlcG9ydChub2RlLCAnRG8gbm90IGltcG9ydCBOb2RlLmpzIGJ1aWx0aW4gbW9kdWxlIFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tbm9kZWpzLW1vZHVsZXMnKSxcbiAgICB9LFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGFsbG93OiB7XG4gICAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXG4gICAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zWzBdIHx8IHt9XG4gICAgY29uc3QgYWxsb3dlZCA9IG9wdGlvbnMuYWxsb3cgfHwgW11cblxuICAgIHJldHVybiB7XG4gICAgICBJbXBvcnREZWNsYXJhdGlvbjogZnVuY3Rpb24gaGFuZGxlSW1wb3J0cyhub2RlKSB7XG4gICAgICAgIHJlcG9ydElmTWlzc2luZyhjb250ZXh0LCBub2RlLCBhbGxvd2VkLCBub2RlLnNvdXJjZS52YWx1ZSlcbiAgICAgIH0sXG4gICAgICBDYWxsRXhwcmVzc2lvbjogZnVuY3Rpb24gaGFuZGxlUmVxdWlyZXMobm9kZSkge1xuICAgICAgICBpZiAoaXNTdGF0aWNSZXF1aXJlKG5vZGUpKSB7XG4gICAgICAgICAgcmVwb3J0SWZNaXNzaW5nKGNvbnRleHQsIG5vZGUsIGFsbG93ZWQsIG5vZGUuYXJndW1lbnRzWzBdLnZhbHVlKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-relative-parent-imports.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-relative-parent-imports.js new file mode 100644 index 0000000..8563a90 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-relative-parent-imports.js @@ -0,0 +1,64 @@ +'use strict'; + +var _moduleVisitor = require('eslint-module-utils/moduleVisitor'); + +var _moduleVisitor2 = _interopRequireDefault(_moduleVisitor); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +var _path = require('path'); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _importType = require('../core/importType'); + +var _importType2 = _interopRequireDefault(_importType); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-relative-parent-imports') + }, + schema: [(0, _moduleVisitor.makeOptionsSchema)()] + }, + + create: function noRelativePackages(context) { + const myPath = context.getFilename(); + if (myPath === '') return {}; // can't check a non-file + + function checkSourceValue(sourceNode) { + const depPath = sourceNode.value; + + if ((0, _importType2.default)(depPath, context) === 'external') { + // ignore packages + return; + } + + const absDepPath = (0, _resolve2.default)(depPath, context); + + if (!absDepPath) { + // unable to resolve path + return; + } + + const relDepPath = (0, _path.relative)((0, _path.dirname)(myPath), absDepPath); + + if ((0, _importType2.default)(relDepPath, context) === 'parent') { + context.report({ + node: sourceNode, + message: 'Relative imports from parent directories are not allowed. ' + `Please either pass what you're importing through at runtime ` + `(dependency injection), move \`${(0, _path.basename)(myPath)}\` to same ` + `directory as \`${depPath}\` or consider making \`${depPath}\` a package.` + }); + } + } + + return (0, _moduleVisitor2.default)(checkSourceValue, context.options[0]); + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1yZWxhdGl2ZS1wYXJlbnQtaW1wb3J0cy5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwidXJsIiwic2NoZW1hIiwiY3JlYXRlIiwibm9SZWxhdGl2ZVBhY2thZ2VzIiwiY29udGV4dCIsIm15UGF0aCIsImdldEZpbGVuYW1lIiwiY2hlY2tTb3VyY2VWYWx1ZSIsInNvdXJjZU5vZGUiLCJkZXBQYXRoIiwidmFsdWUiLCJhYnNEZXBQYXRoIiwicmVsRGVwUGF0aCIsInJlcG9ydCIsIm5vZGUiLCJtZXNzYWdlIiwib3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7Ozs7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFlBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLDRCQUFSO0FBREQsS0FGRjtBQUtKQyxZQUFRLENBQUMsdUNBQUQ7QUFMSixHQURTOztBQVNmQyxVQUFRLFNBQVNDLGtCQUFULENBQTRCQyxPQUE1QixFQUFxQztBQUMzQyxVQUFNQyxTQUFTRCxRQUFRRSxXQUFSLEVBQWY7QUFDQSxRQUFJRCxXQUFXLFFBQWYsRUFBeUIsT0FBTyxFQUFQLENBRmtCLENBRVI7O0FBRW5DLGFBQVNFLGdCQUFULENBQTBCQyxVQUExQixFQUFzQztBQUNwQyxZQUFNQyxVQUFVRCxXQUFXRSxLQUEzQjs7QUFFQSxVQUFJLDBCQUFXRCxPQUFYLEVBQW9CTCxPQUFwQixNQUFpQyxVQUFyQyxFQUFpRDtBQUFFO0FBQ2pEO0FBQ0Q7O0FBRUQsWUFBTU8sYUFBYSx1QkFBUUYsT0FBUixFQUFpQkwsT0FBakIsQ0FBbkI7O0FBRUEsVUFBSSxDQUFDTyxVQUFMLEVBQWlCO0FBQUU7QUFDakI7QUFDRDs7QUFFRCxZQUFNQyxhQUFhLG9CQUFTLG1CQUFRUCxNQUFSLENBQVQsRUFBMEJNLFVBQTFCLENBQW5COztBQUVBLFVBQUksMEJBQVdDLFVBQVgsRUFBdUJSLE9BQXZCLE1BQW9DLFFBQXhDLEVBQWtEO0FBQ2hEQSxnQkFBUVMsTUFBUixDQUFlO0FBQ2JDLGdCQUFNTixVQURPO0FBRWJPLG1CQUFTLCtEQUNOLDhEQURNLEdBRU4sa0NBQWlDLG9CQUFTVixNQUFULENBQWlCLGFBRjVDLEdBR04sa0JBQWlCSSxPQUFRLDJCQUEwQkEsT0FBUTtBQUxqRCxTQUFmO0FBT0Q7QUFDRjs7QUFFRCxXQUFPLDZCQUFjRixnQkFBZCxFQUFnQ0gsUUFBUVksT0FBUixDQUFnQixDQUFoQixDQUFoQyxDQUFQO0FBQ0Q7QUF4Q2MsQ0FBakIiLCJmaWxlIjoibm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kdWxlVmlzaXRvciwgeyBtYWtlT3B0aW9uc1NjaGVtYSB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvbW9kdWxlVmlzaXRvcidcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgcmVsYXRpdmUgfSBmcm9tICdwYXRoJ1xuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuXG5pbXBvcnQgaW1wb3J0VHlwZSBmcm9tICcuLi9jb3JlL2ltcG9ydFR5cGUnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tcmVsYXRpdmUtcGFyZW50LWltcG9ydHMnKSxcbiAgICB9LFxuICAgIHNjaGVtYTogW21ha2VPcHRpb25zU2NoZW1hKCldLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gbm9SZWxhdGl2ZVBhY2thZ2VzKGNvbnRleHQpIHtcbiAgICBjb25zdCBteVBhdGggPSBjb250ZXh0LmdldEZpbGVuYW1lKClcbiAgICBpZiAobXlQYXRoID09PSAnPHRleHQ+JykgcmV0dXJuIHt9IC8vIGNhbid0IGNoZWNrIGEgbm9uLWZpbGVcblxuICAgIGZ1bmN0aW9uIGNoZWNrU291cmNlVmFsdWUoc291cmNlTm9kZSkge1xuICAgICAgY29uc3QgZGVwUGF0aCA9IHNvdXJjZU5vZGUudmFsdWVcblxuICAgICAgaWYgKGltcG9ydFR5cGUoZGVwUGF0aCwgY29udGV4dCkgPT09ICdleHRlcm5hbCcpIHsgLy8gaWdub3JlIHBhY2thZ2VzXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBhYnNEZXBQYXRoID0gcmVzb2x2ZShkZXBQYXRoLCBjb250ZXh0KVxuXG4gICAgICBpZiAoIWFic0RlcFBhdGgpIHsgLy8gdW5hYmxlIHRvIHJlc29sdmUgcGF0aFxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVsRGVwUGF0aCA9IHJlbGF0aXZlKGRpcm5hbWUobXlQYXRoKSwgYWJzRGVwUGF0aClcblxuICAgICAgaWYgKGltcG9ydFR5cGUocmVsRGVwUGF0aCwgY29udGV4dCkgPT09ICdwYXJlbnQnKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBub2RlOiBzb3VyY2VOb2RlLFxuICAgICAgICAgIG1lc3NhZ2U6ICdSZWxhdGl2ZSBpbXBvcnRzIGZyb20gcGFyZW50IGRpcmVjdG9yaWVzIGFyZSBub3QgYWxsb3dlZC4gJyArXG4gICAgICAgICAgICBgUGxlYXNlIGVpdGhlciBwYXNzIHdoYXQgeW91J3JlIGltcG9ydGluZyB0aHJvdWdoIGF0IHJ1bnRpbWUgYCArXG4gICAgICAgICAgICBgKGRlcGVuZGVuY3kgaW5qZWN0aW9uKSwgbW92ZSBcXGAke2Jhc2VuYW1lKG15UGF0aCl9XFxgIHRvIHNhbWUgYCArXG4gICAgICAgICAgICBgZGlyZWN0b3J5IGFzIFxcYCR7ZGVwUGF0aH1cXGAgb3IgY29uc2lkZXIgbWFraW5nIFxcYCR7ZGVwUGF0aH1cXGAgYSBwYWNrYWdlLmAsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZHVsZVZpc2l0b3IoY2hlY2tTb3VyY2VWYWx1ZSwgY29udGV4dC5vcHRpb25zWzBdKVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-restricted-paths.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-restricted-paths.js new file mode 100644 index 0000000..4e836e5 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-restricted-paths.js @@ -0,0 +1,144 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _containsPath = require('contains-path'); + +var _containsPath2 = _interopRequireDefault(_containsPath); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +var _importType = require('../core/importType'); + +var _importType2 = _interopRequireDefault(_importType); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('no-restricted-paths') + }, + + schema: [{ + type: 'object', + properties: { + zones: { + type: 'array', + minItems: 1, + items: { + type: 'object', + properties: { + target: { type: 'string' }, + from: { type: 'string' }, + except: { + type: 'array', + items: { + type: 'string' + }, + uniqueItems: true + } + }, + additionalProperties: false + } + }, + basePath: { type: 'string' } + }, + additionalProperties: false + }] + }, + + create: function noRestrictedPaths(context) { + const options = context.options[0] || {}; + const restrictedPaths = options.zones || []; + const basePath = options.basePath || process.cwd(); + const currentFilename = context.getFilename(); + const matchingZones = restrictedPaths.filter(zone => { + const targetPath = _path2.default.resolve(basePath, zone.target); + + return (0, _containsPath2.default)(currentFilename, targetPath); + }); + + function isValidExceptionPath(absoluteFromPath, absoluteExceptionPath) { + const relativeExceptionPath = _path2.default.relative(absoluteFromPath, absoluteExceptionPath); + + return (0, _importType2.default)(relativeExceptionPath, context) !== 'parent'; + } + + function reportInvalidExceptionPath(node) { + context.report({ + node, + message: 'Restricted path exceptions must be descendants of the configured `from` path for that zone.' + }); + } + + function checkForRestrictedImportPath(importPath, node) { + const absoluteImportPath = (0, _resolve2.default)(importPath, context); + + if (!absoluteImportPath) { + return; + } + + matchingZones.forEach(zone => { + const exceptionPaths = zone.except || []; + const absoluteFrom = _path2.default.resolve(basePath, zone.from); + + if (!(0, _containsPath2.default)(absoluteImportPath, absoluteFrom)) { + return; + } + + const absoluteExceptionPaths = exceptionPaths.map(exceptionPath => _path2.default.resolve(absoluteFrom, exceptionPath)); + const hasValidExceptionPaths = absoluteExceptionPaths.every(absoluteExceptionPath => isValidExceptionPath(absoluteFrom, absoluteExceptionPath)); + + if (!hasValidExceptionPaths) { + reportInvalidExceptionPath(node); + return; + } + + const pathIsExcepted = absoluteExceptionPaths.some(absoluteExceptionPath => (0, _containsPath2.default)(absoluteImportPath, absoluteExceptionPath)); + + if (pathIsExcepted) { + return; + } + + context.report({ + node, + message: `Unexpected path "{{importPath}}" imported in restricted zone.`, + data: { importPath } + }); + }); + } + + return { + ImportDeclaration(node) { + checkForRestrictedImportPath(node.source.value, node.source); + }, + CallExpression(node) { + if ((0, _staticRequire2.default)(node)) { + var _node$arguments = _slicedToArray(node.arguments, 1); + + const firstArgument = _node$arguments[0]; + + + checkForRestrictedImportPath(firstArgument.value, firstArgument); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1yZXN0cmljdGVkLXBhdGhzLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwiem9uZXMiLCJtaW5JdGVtcyIsIml0ZW1zIiwidGFyZ2V0IiwiZnJvbSIsImV4Y2VwdCIsInVuaXF1ZUl0ZW1zIiwiYWRkaXRpb25hbFByb3BlcnRpZXMiLCJiYXNlUGF0aCIsImNyZWF0ZSIsIm5vUmVzdHJpY3RlZFBhdGhzIiwiY29udGV4dCIsIm9wdGlvbnMiLCJyZXN0cmljdGVkUGF0aHMiLCJwcm9jZXNzIiwiY3dkIiwiY3VycmVudEZpbGVuYW1lIiwiZ2V0RmlsZW5hbWUiLCJtYXRjaGluZ1pvbmVzIiwiZmlsdGVyIiwiem9uZSIsInRhcmdldFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImlzVmFsaWRFeGNlcHRpb25QYXRoIiwiYWJzb2x1dGVGcm9tUGF0aCIsImFic29sdXRlRXhjZXB0aW9uUGF0aCIsInJlbGF0aXZlRXhjZXB0aW9uUGF0aCIsInJlbGF0aXZlIiwicmVwb3J0SW52YWxpZEV4Y2VwdGlvblBhdGgiLCJub2RlIiwicmVwb3J0IiwibWVzc2FnZSIsImNoZWNrRm9yUmVzdHJpY3RlZEltcG9ydFBhdGgiLCJpbXBvcnRQYXRoIiwiYWJzb2x1dGVJbXBvcnRQYXRoIiwiZm9yRWFjaCIsImV4Y2VwdGlvblBhdGhzIiwiYWJzb2x1dGVGcm9tIiwiYWJzb2x1dGVFeGNlcHRpb25QYXRocyIsIm1hcCIsImV4Y2VwdGlvblBhdGgiLCJoYXNWYWxpZEV4Y2VwdGlvblBhdGhzIiwiZXZlcnkiLCJwYXRoSXNFeGNlcHRlZCIsInNvbWUiLCJkYXRhIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJzb3VyY2UiLCJ2YWx1ZSIsIkNhbGxFeHByZXNzaW9uIiwiYXJndW1lbnRzIiwiZmlyc3RBcmd1bWVudCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7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O0FBQ0E7QUFDRDs7QUFFRCxjQUFNYyxpQkFBaUJMLHVCQUNwQk0sSUFEb0IsQ0FDZG5CLHFCQUFELElBQTJCLDRCQUFhUyxrQkFBYixFQUFpQ1QscUJBQWpDLENBRFosQ0FBdkI7O0FBR0EsWUFBSWtCLGNBQUosRUFBb0I7QUFDbEI7QUFDRDs7QUFFRGpDLGdCQUFRb0IsTUFBUixDQUFlO0FBQ2JELGNBRGE7QUFFYkUsbUJBQVUsK0RBRkc7QUFHYmMsZ0JBQU0sRUFBRVosVUFBRjtBQUhPLFNBQWY7QUFLRCxPQS9CRDtBQWdDSDs7QUFFRCxXQUFPO0FBQ0xhLHdCQUFrQmpCLElBQWxCLEVBQXdCO0FBQ3RCRyxxQ0FBNkJILEtBQUtrQixNQUFMLENBQVlDLEtBQXpDLEVBQWdEbkIsS0FBS2tCLE1BQXJEO0FBQ0QsT0FISTtBQUlMRSxxQkFBZXBCLElBQWYsRUFBcUI7QUFDbkIsWUFBSSw2QkFBZ0JBLElBQWhCLENBQUosRUFBMkI7QUFBQSwrQ0FDQ0EsS0FBS3FCLFNBRE47O0FBQUEsZ0JBQ2pCQyxhQURpQjs7O0FBR3pCbkIsdUNBQTZCbUIsY0FBY0gsS0FBM0MsRUFBa0RHLGFBQWxEO0FBQ0Q7QUFDRjtBQVZJLEtBQVA7QUFZRDtBQWxIYyxDQUFqQiIsImZpbGUiOiJuby1yZXN0cmljdGVkLXBhdGhzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnRhaW5zUGF0aCBmcm9tICdjb250YWlucy1wYXRoJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcblxuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuaW1wb3J0IGlzU3RhdGljUmVxdWlyZSBmcm9tICcuLi9jb3JlL3N0YXRpY1JlcXVpcmUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuaW1wb3J0IGltcG9ydFR5cGUgZnJvbSAnLi4vY29yZS9pbXBvcnRUeXBlJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25vLXJlc3RyaWN0ZWQtcGF0aHMnKSxcbiAgICB9LFxuXG4gICAgc2NoZW1hOiBbXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgem9uZXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgICBtaW5JdGVtczogMSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB7IHR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgICAgICAgZnJvbTogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgICAgICAgIGV4Y2VwdDoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBiYXNlUGF0aDogeyB0eXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICB9LFxuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbiBub1Jlc3RyaWN0ZWRQYXRocyhjb250ZXh0KSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbnRleHQub3B0aW9uc1swXSB8fCB7fVxuICAgIGNvbnN0IHJlc3RyaWN0ZWRQYXRocyA9IG9wdGlvbnMuem9uZXMgfHwgW11cbiAgICBjb25zdCBiYXNlUGF0aCA9IG9wdGlvbnMuYmFzZVBhdGggfHwgcHJvY2Vzcy5jd2QoKVxuICAgIGNvbnN0IGN1cnJlbnRGaWxlbmFtZSA9IGNvbnRleHQuZ2V0RmlsZW5hbWUoKVxuICAgIGNvbnN0IG1hdGNoaW5nWm9uZXMgPSByZXN0cmljdGVkUGF0aHMuZmlsdGVyKCh6b25lKSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXRQYXRoID0gcGF0aC5yZXNvbHZlKGJhc2VQYXRoLCB6b25lLnRhcmdldClcblxuICAgICAgcmV0dXJuIGNvbnRhaW5zUGF0aChjdXJyZW50RmlsZW5hbWUsIHRhcmdldFBhdGgpXG4gICAgfSlcblxuICAgIGZ1bmN0aW9uIGlzVmFsaWRFeGNlcHRpb25QYXRoKGFic29sdXRlRnJvbVBhdGgsIGFic29sdXRlRXhjZXB0aW9uUGF0aCkge1xuICAgICAgY29uc3QgcmVsYXRpdmVFeGNlcHRpb25QYXRoID0gcGF0aC5yZWxhdGl2ZShhYnNvbHV0ZUZyb21QYXRoLCBhYnNvbHV0ZUV4Y2VwdGlvblBhdGgpXG5cbiAgICAgIHJldHVybiBpbXBvcnRUeXBlKHJlbGF0aXZlRXhjZXB0aW9uUGF0aCwgY29udGV4dCkgIT09ICdwYXJlbnQnXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVwb3J0SW52YWxpZEV4Y2VwdGlvblBhdGgobm9kZSkge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBub2RlLFxuICAgICAgICBtZXNzYWdlOiAnUmVzdHJpY3RlZCBwYXRoIGV4Y2VwdGlvbnMgbXVzdCBiZSBkZXNjZW5kYW50cyBvZiB0aGUgY29uZmlndXJlZCBgZnJvbWAgcGF0aCBmb3IgdGhhdCB6b25lLicsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrRm9yUmVzdHJpY3RlZEltcG9ydFBhdGgoaW1wb3J0UGF0aCwgbm9kZSkge1xuICAgICAgICBjb25zdCBhYnNvbHV0ZUltcG9ydFBhdGggPSByZXNvbHZlKGltcG9ydFBhdGgsIGNvbnRleHQpXG5cbiAgICAgICAgaWYgKCFhYnNvbHV0ZUltcG9ydFBhdGgpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIG1hdGNoaW5nWm9uZXMuZm9yRWFjaCgoem9uZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4Y2VwdGlvblBhdGhzID0gem9uZS5leGNlcHQgfHwgW11cbiAgICAgICAgICBjb25zdCBhYnNvbHV0ZUZyb20gPSBwYXRoLnJlc29sdmUoYmFzZVBhdGgsIHpvbmUuZnJvbSlcblxuICAgICAgICAgIGlmICghY29udGFpbnNQYXRoKGFic29sdXRlSW1wb3J0UGF0aCwgYWJzb2x1dGVGcm9tKSkge1xuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYWJzb2x1dGVFeGNlcHRpb25QYXRocyA9IGV4Y2VwdGlvblBhdGhzLm1hcCgoZXhjZXB0aW9uUGF0aCkgPT5cbiAgICAgICAgICAgIHBhdGgucmVzb2x2ZShhYnNvbHV0ZUZyb20sIGV4Y2VwdGlvblBhdGgpXG4gICAgICAgICAgKVxuICAgICAgICAgIGNvbnN0IGhhc1ZhbGlkRXhjZXB0aW9uUGF0aHMgPSBhYnNvbHV0ZUV4Y2VwdGlvblBhdGhzXG4gICAgICAgICAgICAuZXZlcnkoKGFic29sdXRlRXhjZXB0aW9uUGF0aCkgPT4gaXNWYWxpZEV4Y2VwdGlvblBhdGgoYWJzb2x1dGVGcm9tLCBhYnNvbHV0ZUV4Y2VwdGlvblBhdGgpKVxuXG4gICAgICAgICAgaWYgKCFoYXNWYWxpZEV4Y2VwdGlvblBhdGhzKSB7XG4gICAgICAgICAgICByZXBvcnRJbnZhbGlkRXhjZXB0aW9uUGF0aChub2RlKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcGF0aElzRXhjZXB0ZWQgPSBhYnNvbHV0ZUV4Y2VwdGlvblBhdGhzXG4gICAgICAgICAgICAuc29tZSgoYWJzb2x1dGVFeGNlcHRpb25QYXRoKSA9PiBjb250YWluc1BhdGgoYWJzb2x1dGVJbXBvcnRQYXRoLCBhYnNvbHV0ZUV4Y2VwdGlvblBhdGgpKVxuXG4gICAgICAgICAgaWYgKHBhdGhJc0V4Y2VwdGVkKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbWVzc2FnZTogYFVuZXhwZWN0ZWQgcGF0aCBcInt7aW1wb3J0UGF0aH19XCIgaW1wb3J0ZWQgaW4gcmVzdHJpY3RlZCB6b25lLmAsXG4gICAgICAgICAgICBkYXRhOiB7IGltcG9ydFBhdGggfSxcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBJbXBvcnREZWNsYXJhdGlvbihub2RlKSB7XG4gICAgICAgIGNoZWNrRm9yUmVzdHJpY3RlZEltcG9ydFBhdGgobm9kZS5zb3VyY2UudmFsdWUsIG5vZGUuc291cmNlKVxuICAgICAgfSxcbiAgICAgIENhbGxFeHByZXNzaW9uKG5vZGUpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljUmVxdWlyZShub2RlKSkge1xuICAgICAgICAgIGNvbnN0IFsgZmlyc3RBcmd1bWVudCBdID0gbm9kZS5hcmd1bWVudHNcblxuICAgICAgICAgIGNoZWNrRm9yUmVzdHJpY3RlZEltcG9ydFBhdGgoZmlyc3RBcmd1bWVudC52YWx1ZSwgZmlyc3RBcmd1bWVudClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-self-import.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-self-import.js new file mode 100644 index 0000000..068833a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-self-import.js @@ -0,0 +1,56 @@ +'use strict'; + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function isImportingSelf(context, node, requireName) { + const filePath = context.getFilename(); + + // If the input is from stdin, this test can't fail + if (filePath !== '' && filePath === (0, _resolve2.default)(requireName, context)) { + context.report({ + node, + message: 'Module imports itself.' + }); + } +} /** + * @fileOverview Forbids a module from importing itself + * @author Gio d'Amelio + */ + +module.exports = { + meta: { + type: 'problem', + docs: { + description: 'Forbid a module from importing itself', + recommended: true, + url: (0, _docsUrl2.default)('no-self-import') + }, + + schema: [] + }, + create: function (context) { + return { + ImportDeclaration(node) { + isImportingSelf(context, node, node.source.value); + }, + CallExpression(node) { + if ((0, _staticRequire2.default)(node)) { + isImportingSelf(context, node, node.arguments[0].value); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby1zZWxmLWltcG9ydC5qcyJdLCJuYW1lcyI6WyJpc0ltcG9ydGluZ1NlbGYiLCJjb250ZXh0Iiwibm9kZSIsInJlcXVpcmVOYW1lIiwiZmlsZVBhdGgiLCJnZXRGaWxlbmFtZSIsInJlcG9ydCIsIm1lc3NhZ2UiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwiZGVzY3JpcHRpb24iLCJyZWNvbW1lbmRlZCIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsIkltcG9ydERlY2xhcmF0aW9uIiwic291cmNlIiwidmFsdWUiLCJDYWxsRXhwcmVzc2lvbiIsImFyZ3VtZW50cyJdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7OztBQUNBOzs7O0FBQ0E7Ozs7OztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLE9BQXpCLEVBQWtDQyxJQUFsQyxFQUF3Q0MsV0FBeEMsRUFBcUQ7QUFDbkQsUUFBTUMsV0FBV0gsUUFBUUksV0FBUixFQUFqQjs7QUFFQTtBQUNBLE1BQUlELGFBQWEsUUFBYixJQUF5QkEsYUFBYSx1QkFBUUQsV0FBUixFQUFxQkYsT0FBckIsQ0FBMUMsRUFBeUU7QUFDdkVBLFlBQVFLLE1BQVIsQ0FBZTtBQUNYSixVQURXO0FBRVhLLGVBQVM7QUFGRSxLQUFmO0FBSUQ7QUFDRixDLENBbkJEOzs7OztBQXFCQUMsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sU0FERjtBQUVKQyxVQUFNO0FBQ0pDLG1CQUFhLHVDQURUO0FBRUpDLG1CQUFhLElBRlQ7QUFHSkMsV0FBSyx1QkFBUSxnQkFBUjtBQUhELEtBRkY7O0FBUUpDLFlBQVE7QUFSSixHQURTO0FBV2ZDLFVBQVEsVUFBVWhCLE9BQVYsRUFBbUI7QUFDekIsV0FBTztBQUNMaUIsd0JBQWtCaEIsSUFBbEIsRUFBd0I7QUFDdEJGLHdCQUFnQkMsT0FBaEIsRUFBeUJDLElBQXpCLEVBQStCQSxLQUFLaUIsTUFBTCxDQUFZQyxLQUEzQztBQUNELE9BSEk7QUFJTEMscUJBQWVuQixJQUFmLEVBQXFCO0FBQ25CLFlBQUksNkJBQWdCQSxJQUFoQixDQUFKLEVBQTJCO0FBQ3pCRiwwQkFBZ0JDLE9BQWhCLEVBQXlCQyxJQUF6QixFQUErQkEsS0FBS29CLFNBQUwsQ0FBZSxDQUFmLEVBQWtCRixLQUFqRDtBQUNEO0FBQ0Y7QUFSSSxLQUFQO0FBVUQ7QUF0QmMsQ0FBakIiLCJmaWxlIjoibm8tc2VsZi1pbXBvcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlT3ZlcnZpZXcgRm9yYmlkcyBhIG1vZHVsZSBmcm9tIGltcG9ydGluZyBpdHNlbGZcbiAqIEBhdXRob3IgR2lvIGQnQW1lbGlvXG4gKi9cblxuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuaW1wb3J0IGlzU3RhdGljUmVxdWlyZSBmcm9tICcuLi9jb3JlL3N0YXRpY1JlcXVpcmUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5mdW5jdGlvbiBpc0ltcG9ydGluZ1NlbGYoY29udGV4dCwgbm9kZSwgcmVxdWlyZU5hbWUpIHtcbiAgY29uc3QgZmlsZVBhdGggPSBjb250ZXh0LmdldEZpbGVuYW1lKClcblxuICAvLyBJZiB0aGUgaW5wdXQgaXMgZnJvbSBzdGRpbiwgdGhpcyB0ZXN0IGNhbid0IGZhaWxcbiAgaWYgKGZpbGVQYXRoICE9PSAnPHRleHQ+JyAmJiBmaWxlUGF0aCA9PT0gcmVzb2x2ZShyZXF1aXJlTmFtZSwgY29udGV4dCkpIHtcbiAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgIG5vZGUsXG4gICAgICAgIG1lc3NhZ2U6ICdNb2R1bGUgaW1wb3J0cyBpdHNlbGYuJyxcbiAgICB9KVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRm9yYmlkIGEgbW9kdWxlIGZyb20gaW1wb3J0aW5nIGl0c2VsZicsXG4gICAgICByZWNvbW1lbmRlZDogdHJ1ZSxcbiAgICAgIHVybDogZG9jc1VybCgnbm8tc2VsZi1pbXBvcnQnKSxcbiAgICB9LFxuXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcbiAgY3JlYXRlOiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHJldHVybiB7XG4gICAgICBJbXBvcnREZWNsYXJhdGlvbihub2RlKSB7XG4gICAgICAgIGlzSW1wb3J0aW5nU2VsZihjb250ZXh0LCBub2RlLCBub2RlLnNvdXJjZS52YWx1ZSlcbiAgICAgIH0sXG4gICAgICBDYWxsRXhwcmVzc2lvbihub2RlKSB7XG4gICAgICAgIGlmIChpc1N0YXRpY1JlcXVpcmUobm9kZSkpIHtcbiAgICAgICAgICBpc0ltcG9ydGluZ1NlbGYoY29udGV4dCwgbm9kZSwgbm9kZS5hcmd1bWVudHNbMF0udmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unassigned-import.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unassigned-import.js new file mode 100644 index 0000000..65250b8 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unassigned-import.js @@ -0,0 +1,88 @@ +'use strict'; + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _minimatch = require('minimatch'); + +var _minimatch2 = _interopRequireDefault(_minimatch); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function report(context, node) { + context.report({ + node, + message: 'Imported module should be assigned' + }); +} + +function testIsAllow(globs, filename, source) { + if (!Array.isArray(globs)) { + return false; // default doesn't allow any patterns + } + + let filePath; + + if (source[0] !== '.' && source[0] !== '/') { + // a node module + filePath = source; + } else { + filePath = _path2.default.resolve(_path2.default.dirname(filename), source); // get source absolute path + } + + return globs.find(glob => (0, _minimatch2.default)(filePath, glob) || (0, _minimatch2.default)(filePath, _path2.default.join(process.cwd(), glob))) !== undefined; +} + +function create(context) { + const options = context.options[0] || {}; + const filename = context.getFilename(); + const isAllow = source => testIsAllow(options.allow, filename, source); + + return { + ImportDeclaration(node) { + if (node.specifiers.length === 0 && !isAllow(node.source.value)) { + report(context, node); + } + }, + ExpressionStatement(node) { + if (node.expression.type === 'CallExpression' && (0, _staticRequire2.default)(node.expression) && !isAllow(node.expression.arguments[0].value)) { + report(context, node.expression); + } + } + }; +} + +module.exports = { + create, + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-unassigned-import') + }, + schema: [{ + 'type': 'object', + 'properties': { + 'devDependencies': { 'type': ['boolean', 'array'] }, + 'optionalDependencies': { 'type': ['boolean', 'array'] }, + 'peerDependencies': { 'type': ['boolean', 'array'] }, + 'allow': { + 'type': 'array', + 'items': { + 'type': 'string' + } + } + }, + 'additionalProperties': false + }] + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby11bmFzc2lnbmVkLWltcG9ydC5qcyJdLCJuYW1lcyI6WyJyZXBvcnQiLCJjb250ZXh0Iiwibm9kZSIsIm1lc3NhZ2UiLCJ0ZXN0SXNBbGxvdyIsImdsb2JzIiwiZmlsZW5hbWUiLCJzb3VyY2UiLCJBcnJheSIsImlzQXJyYXkiLCJmaWxlUGF0aCIsInBhdGgiLCJyZXNvbHZlIiwiZGlybmFtZSIsImZpbmQiLCJnbG9iIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJ1bmRlZmluZWQiLCJjcmVhdGUiLCJvcHRpb25zIiwiZ2V0RmlsZW5hbWUiLCJpc0FsbG93IiwiYWxsb3ciLCJJbXBvcnREZWNsYXJhdGlvbiIsInNwZWNpZmllcnMiLCJsZW5ndGgiLCJ2YWx1ZSIsIkV4cHJlc3Npb25TdGF0ZW1lbnQiLCJleHByZXNzaW9uIiwidHlwZSIsImFyZ3VtZW50cyIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwiZG9jcyIsInVybCIsInNjaGVtYSJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFDQTs7Ozs7O0FBRUEsU0FBU0EsTUFBVCxDQUFnQkMsT0FBaEIsRUFBeUJDLElBQXpCLEVBQStCO0FBQzdCRCxVQUFRRCxNQUFSLENBQWU7QUFDYkUsUUFEYTtBQUViQyxhQUFTO0FBRkksR0FBZjtBQUlEOztBQUVELFNBQVNDLFdBQVQsQ0FBcUJDLEtBQXJCLEVBQTRCQyxRQUE1QixFQUFzQ0MsTUFBdEMsRUFBOEM7QUFDNUMsTUFBSSxDQUFDQyxNQUFNQyxPQUFOLENBQWNKLEtBQWQsQ0FBTCxFQUEyQjtBQUN6QixXQUFPLEtBQVAsQ0FEeUIsQ0FDWjtBQUNkOztBQUVELE1BQUlLLFFBQUo7O0FBRUEsTUFBSUgsT0FBTyxDQUFQLE1BQWMsR0FBZCxJQUFxQkEsT0FBTyxDQUFQLE1BQWMsR0FBdkMsRUFBNEM7QUFBRTtBQUM1Q0csZUFBV0gsTUFBWDtBQUNELEdBRkQsTUFFTztBQUNMRyxlQUFXQyxlQUFLQyxPQUFMLENBQWFELGVBQUtFLE9BQUwsQ0FBYVAsUUFBYixDQUFiLEVBQXFDQyxNQUFyQyxDQUFYLENBREssQ0FDbUQ7QUFDekQ7O0FBRUQsU0FBT0YsTUFBTVMsSUFBTixDQUFXQyxRQUNoQix5QkFBVUwsUUFBVixFQUFvQkssSUFBcEIsS0FDQSx5QkFBVUwsUUFBVixFQUFvQkMsZUFBS0ssSUFBTCxDQUFVQyxRQUFRQyxHQUFSLEVBQVYsRUFBeUJILElBQXpCLENBQXBCLENBRkssTUFHQUksU0FIUDtBQUlEOztBQUVELFNBQVNDLE1BQVQsQ0FBZ0JuQixPQUFoQixFQUF5QjtBQUN2QixRQUFNb0IsVUFBVXBCLFFBQVFvQixPQUFSLENBQWdCLENBQWhCLEtBQXNCLEVBQXRDO0FBQ0EsUUFBTWYsV0FBV0wsUUFBUXFCLFdBQVIsRUFBakI7QUFDQSxRQUFNQyxVQUFVaEIsVUFBVUgsWUFBWWlCLFFBQVFHLEtBQXBCLEVBQTJCbEIsUUFBM0IsRUFBcUNDLE1BQXJDLENBQTFCOztBQUVBLFNBQU87QUFDTGtCLHNCQUFrQnZCLElBQWxCLEVBQXdCO0FBQ3RCLFVBQUlBLEtBQUt3QixVQUFMLENBQWdCQyxNQUFoQixLQUEyQixDQUEzQixJQUFnQyxDQUFDSixRQUFRckIsS0FBS0ssTUFBTCxDQUFZcUIsS0FBcEIsQ0FBckMsRUFBaUU7QUFDL0Q1QixlQUFPQyxPQUFQLEVBQWdCQyxJQUFoQjtBQUNEO0FBQ0YsS0FMSTtBQU1MMkIsd0JBQW9CM0IsSUFBcEIsRUFBMEI7QUFDeEIsVUFBSUEsS0FBSzRCLFVBQUwsQ0FBZ0JDLElBQWhCLEtBQXlCLGdCQUF6QixJQUNGLDZCQUFnQjdCLEtBQUs0QixVQUFyQixDQURFLElBRUYsQ0FBQ1AsUUFBUXJCLEtBQUs0QixVQUFMLENBQWdCRSxTQUFoQixDQUEwQixDQUExQixFQUE2QkosS0FBckMsQ0FGSCxFQUVnRDtBQUM5QzVCLGVBQU9DLE9BQVAsRUFBZ0JDLEtBQUs0QixVQUFyQjtBQUNEO0FBQ0Y7QUFaSSxHQUFQO0FBY0Q7O0FBRURHLE9BQU9DLE9BQVAsR0FBaUI7QUFDZmQsUUFEZTtBQUVmZSxRQUFNO0FBQ0pKLFVBQU0sWUFERjtBQUVKSyxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsc0JBQVI7QUFERCxLQUZGO0FBS0pDLFlBQVEsQ0FDTjtBQUNFLGNBQVEsUUFEVjtBQUVFLG9CQUFjO0FBQ1osMkJBQW1CLEVBQUUsUUFBUSxDQUFDLFNBQUQsRUFBWSxPQUFaLENBQVYsRUFEUDtBQUVaLGdDQUF3QixFQUFFLFFBQVEsQ0FBQyxTQUFELEVBQVksT0FBWixDQUFWLEVBRlo7QUFHWiw0QkFBb0IsRUFBRSxRQUFRLENBQUMsU0FBRCxFQUFZLE9BQVosQ0FBVixFQUhSO0FBSVosaUJBQVM7QUFDUCxrQkFBUSxPQUREO0FBRVAsbUJBQVM7QUFDUCxvQkFBUTtBQUREO0FBRkY7QUFKRyxPQUZoQjtBQWFFLDhCQUF3QjtBQWIxQixLQURNO0FBTEo7QUFGUyxDQUFqQiIsImZpbGUiOiJuby11bmFzc2lnbmVkLWltcG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5pbXBvcnQgbWluaW1hdGNoIGZyb20gJ21pbmltYXRjaCdcblxuaW1wb3J0IGlzU3RhdGljUmVxdWlyZSBmcm9tICcuLi9jb3JlL3N0YXRpY1JlcXVpcmUnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5mdW5jdGlvbiByZXBvcnQoY29udGV4dCwgbm9kZSkge1xuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgbm9kZSxcbiAgICBtZXNzYWdlOiAnSW1wb3J0ZWQgbW9kdWxlIHNob3VsZCBiZSBhc3NpZ25lZCcsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHRlc3RJc0FsbG93KGdsb2JzLCBmaWxlbmFtZSwgc291cmNlKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShnbG9icykpIHtcbiAgICByZXR1cm4gZmFsc2UgLy8gZGVmYXVsdCBkb2Vzbid0IGFsbG93IGFueSBwYXR0ZXJuc1xuICB9XG5cbiAgbGV0IGZpbGVQYXRoXG5cbiAgaWYgKHNvdXJjZVswXSAhPT0gJy4nICYmIHNvdXJjZVswXSAhPT0gJy8nKSB7IC8vIGEgbm9kZSBtb2R1bGVcbiAgICBmaWxlUGF0aCA9IHNvdXJjZVxuICB9IGVsc2Uge1xuICAgIGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZShmaWxlbmFtZSksIHNvdXJjZSkgLy8gZ2V0IHNvdXJjZSBhYnNvbHV0ZSBwYXRoXG4gIH1cblxuICByZXR1cm4gZ2xvYnMuZmluZChnbG9iID0+IChcbiAgICBtaW5pbWF0Y2goZmlsZVBhdGgsIGdsb2IpIHx8XG4gICAgbWluaW1hdGNoKGZpbGVQYXRoLCBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgZ2xvYikpXG4gICkpICE9PSB1bmRlZmluZWRcbn1cblxuZnVuY3Rpb24gY3JlYXRlKGNvbnRleHQpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGNvbnRleHQub3B0aW9uc1swXSB8fCB7fVxuICBjb25zdCBmaWxlbmFtZSA9IGNvbnRleHQuZ2V0RmlsZW5hbWUoKVxuICBjb25zdCBpc0FsbG93ID0gc291cmNlID0+IHRlc3RJc0FsbG93KG9wdGlvbnMuYWxsb3csIGZpbGVuYW1lLCBzb3VyY2UpXG5cbiAgcmV0dXJuIHtcbiAgICBJbXBvcnREZWNsYXJhdGlvbihub2RlKSB7XG4gICAgICBpZiAobm9kZS5zcGVjaWZpZXJzLmxlbmd0aCA9PT0gMCAmJiAhaXNBbGxvdyhub2RlLnNvdXJjZS52YWx1ZSkpIHtcbiAgICAgICAgcmVwb3J0KGNvbnRleHQsIG5vZGUpXG4gICAgICB9XG4gICAgfSxcbiAgICBFeHByZXNzaW9uU3RhdGVtZW50KG5vZGUpIHtcbiAgICAgIGlmIChub2RlLmV4cHJlc3Npb24udHlwZSA9PT0gJ0NhbGxFeHByZXNzaW9uJyAmJlxuICAgICAgICBpc1N0YXRpY1JlcXVpcmUobm9kZS5leHByZXNzaW9uKSAmJlxuICAgICAgICAhaXNBbGxvdyhub2RlLmV4cHJlc3Npb24uYXJndW1lbnRzWzBdLnZhbHVlKSkge1xuICAgICAgICByZXBvcnQoY29udGV4dCwgbm9kZS5leHByZXNzaW9uKVxuICAgICAgfVxuICAgIH0sXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNyZWF0ZSxcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25vLXVuYXNzaWduZWQtaW1wb3J0JyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtcbiAgICAgIHtcbiAgICAgICAgJ3R5cGUnOiAnb2JqZWN0JyxcbiAgICAgICAgJ3Byb3BlcnRpZXMnOiB7XG4gICAgICAgICAgJ2RldkRlcGVuZGVuY2llcyc6IHsgJ3R5cGUnOiBbJ2Jvb2xlYW4nLCAnYXJyYXknXSB9LFxuICAgICAgICAgICdvcHRpb25hbERlcGVuZGVuY2llcyc6IHsgJ3R5cGUnOiBbJ2Jvb2xlYW4nLCAnYXJyYXknXSB9LFxuICAgICAgICAgICdwZWVyRGVwZW5kZW5jaWVzJzogeyAndHlwZSc6IFsnYm9vbGVhbicsICdhcnJheSddIH0sXG4gICAgICAgICAgJ2FsbG93Jzoge1xuICAgICAgICAgICAgJ3R5cGUnOiAnYXJyYXknLFxuICAgICAgICAgICAgJ2l0ZW1zJzoge1xuICAgICAgICAgICAgICAndHlwZSc6ICdzdHJpbmcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAnYWRkaXRpb25hbFByb3BlcnRpZXMnOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unresolved.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unresolved.js new file mode 100644 index 0000000..5f675c4 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unresolved.js @@ -0,0 +1,58 @@ +'use strict'; + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _ModuleCache = require('eslint-module-utils/ModuleCache'); + +var _ModuleCache2 = _interopRequireDefault(_ModuleCache); + +var _moduleVisitor = require('eslint-module-utils/moduleVisitor'); + +var _moduleVisitor2 = _interopRequireDefault(_moduleVisitor); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * @fileOverview Ensures that an imported path exists, given resolution rules. + * @author Ben Mosher + */ + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('no-unresolved') + }, + + schema: [(0, _moduleVisitor.makeOptionsSchema)({ + caseSensitive: { type: 'boolean', default: true } + })] + }, + + create: function (context) { + + function checkSourceValue(source) { + const shouldCheckCase = !_resolve.CASE_SENSITIVE_FS && (!context.options[0] || context.options[0].caseSensitive !== false); + + const resolvedPath = (0, _resolve2.default)(source.value, context); + + if (resolvedPath === undefined) { + context.report(source, `Unable to resolve path to module '${source.value}'.`); + } else if (shouldCheckCase) { + const cacheSettings = _ModuleCache2.default.getSettings(context.settings); + if (!(0, _resolve.fileExistsWithCaseSync)(resolvedPath, cacheSettings)) { + context.report(source, `Casing of ${source.value} does not match the underlying filesystem.`); + } + } + } + + return (0, _moduleVisitor2.default)(checkSourceValue, context.options[0]); + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby11bnJlc29sdmVkLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwidHlwZSIsImRvY3MiLCJ1cmwiLCJzY2hlbWEiLCJjYXNlU2Vuc2l0aXZlIiwiZGVmYXVsdCIsImNyZWF0ZSIsImNvbnRleHQiLCJjaGVja1NvdXJjZVZhbHVlIiwic291cmNlIiwic2hvdWxkQ2hlY2tDYXNlIiwiQ0FTRV9TRU5TSVRJVkVfRlMiLCJvcHRpb25zIiwicmVzb2x2ZWRQYXRoIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJyZXBvcnQiLCJjYWNoZVNldHRpbmdzIiwiTW9kdWxlQ2FjaGUiLCJnZXRTZXR0aW5ncyIsInNldHRpbmdzIl0sIm1hcHBpbmdzIjoiOztBQUtBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFSQTs7Ozs7QUFVQUEsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sU0FERjtBQUVKQyxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsZUFBUjtBQURELEtBRkY7O0FBTUpDLFlBQVEsQ0FBRSxzQ0FBa0I7QUFDMUJDLHFCQUFlLEVBQUVKLE1BQU0sU0FBUixFQUFtQkssU0FBUyxJQUE1QjtBQURXLEtBQWxCLENBQUY7QUFOSixHQURTOztBQVlmQyxVQUFRLFVBQVVDLE9BQVYsRUFBbUI7O0FBRXpCLGFBQVNDLGdCQUFULENBQTBCQyxNQUExQixFQUFrQztBQUNoQyxZQUFNQyxrQkFBa0IsQ0FBQ0MsMEJBQUQsS0FDckIsQ0FBQ0osUUFBUUssT0FBUixDQUFnQixDQUFoQixDQUFELElBQXVCTCxRQUFRSyxPQUFSLENBQWdCLENBQWhCLEVBQW1CUixhQUFuQixLQUFxQyxLQUR2QyxDQUF4Qjs7QUFHQSxZQUFNUyxlQUFlLHVCQUFRSixPQUFPSyxLQUFmLEVBQXNCUCxPQUF0QixDQUFyQjs7QUFFQSxVQUFJTSxpQkFBaUJFLFNBQXJCLEVBQWdDO0FBQzlCUixnQkFBUVMsTUFBUixDQUFlUCxNQUFmLEVBQ0cscUNBQW9DQSxPQUFPSyxLQUFNLElBRHBEO0FBRUQsT0FIRCxNQUtLLElBQUlKLGVBQUosRUFBcUI7QUFDeEIsY0FBTU8sZ0JBQWdCQyxzQkFBWUMsV0FBWixDQUF3QlosUUFBUWEsUUFBaEMsQ0FBdEI7QUFDQSxZQUFJLENBQUMscUNBQXVCUCxZQUF2QixFQUFxQ0ksYUFBckMsQ0FBTCxFQUEwRDtBQUN4RFYsa0JBQVFTLE1BQVIsQ0FBZVAsTUFBZixFQUNHLGFBQVlBLE9BQU9LLEtBQU0sNENBRDVCO0FBRUQ7QUFFRjtBQUNGOztBQUVELFdBQU8sNkJBQWNOLGdCQUFkLEVBQWdDRCxRQUFRSyxPQUFSLENBQWdCLENBQWhCLENBQWhDLENBQVA7QUFFRDtBQXJDYyxDQUFqQiIsImZpbGUiOiJuby11bnJlc29sdmVkLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZU92ZXJ2aWV3IEVuc3VyZXMgdGhhdCBhbiBpbXBvcnRlZCBwYXRoIGV4aXN0cywgZ2l2ZW4gcmVzb2x1dGlvbiBydWxlcy5cbiAqIEBhdXRob3IgQmVuIE1vc2hlclxuICovXG5cbmltcG9ydCByZXNvbHZlLCB7IENBU0VfU0VOU0lUSVZFX0ZTLCBmaWxlRXhpc3RzV2l0aENhc2VTeW5jIH0gZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuaW1wb3J0IE1vZHVsZUNhY2hlIGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvTW9kdWxlQ2FjaGUnXG5pbXBvcnQgbW9kdWxlVmlzaXRvciwgeyBtYWtlT3B0aW9uc1NjaGVtYSB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvbW9kdWxlVmlzaXRvcidcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3Byb2JsZW0nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tdW5yZXNvbHZlZCcpLFxuICAgIH0sXG5cbiAgICBzY2hlbWE6IFsgbWFrZU9wdGlvbnNTY2hlbWEoe1xuICAgICAgY2FzZVNlbnNpdGl2ZTogeyB0eXBlOiAnYm9vbGVhbicsIGRlZmF1bHQ6IHRydWUgfSxcbiAgICB9KV0sXG4gIH0sXG5cbiAgY3JlYXRlOiBmdW5jdGlvbiAoY29udGV4dCkge1xuXG4gICAgZnVuY3Rpb24gY2hlY2tTb3VyY2VWYWx1ZShzb3VyY2UpIHtcbiAgICAgIGNvbnN0IHNob3VsZENoZWNrQ2FzZSA9ICFDQVNFX1NFTlNJVElWRV9GUyAmJlxuICAgICAgICAoIWNvbnRleHQub3B0aW9uc1swXSB8fCBjb250ZXh0Lm9wdGlvbnNbMF0uY2FzZVNlbnNpdGl2ZSAhPT0gZmFsc2UpXG5cbiAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmUoc291cmNlLnZhbHVlLCBjb250ZXh0KVxuXG4gICAgICBpZiAocmVzb2x2ZWRQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQoc291cmNlLFxuICAgICAgICAgIGBVbmFibGUgdG8gcmVzb2x2ZSBwYXRoIHRvIG1vZHVsZSAnJHtzb3VyY2UudmFsdWV9Jy5gKVxuICAgICAgfVxuXG4gICAgICBlbHNlIGlmIChzaG91bGRDaGVja0Nhc2UpIHtcbiAgICAgICAgY29uc3QgY2FjaGVTZXR0aW5ncyA9IE1vZHVsZUNhY2hlLmdldFNldHRpbmdzKGNvbnRleHQuc2V0dGluZ3MpXG4gICAgICAgIGlmICghZmlsZUV4aXN0c1dpdGhDYXNlU3luYyhyZXNvbHZlZFBhdGgsIGNhY2hlU2V0dGluZ3MpKSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQoc291cmNlLFxuICAgICAgICAgICAgYENhc2luZyBvZiAke3NvdXJjZS52YWx1ZX0gZG9lcyBub3QgbWF0Y2ggdGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbS5gKVxuICAgICAgICB9XG5cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbW9kdWxlVmlzaXRvcihjaGVja1NvdXJjZVZhbHVlLCBjb250ZXh0Lm9wdGlvbnNbMF0pXG5cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unused-modules.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unused-modules.js new file mode 100644 index 0000000..1ff23ea --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-unused-modules.js @@ -0,0 +1,942 @@ +'use strict'; + +var _ExportMap = require('../ExportMap'); + +var _ExportMap2 = _interopRequireDefault(_ExportMap); + +var _ignore = require('eslint-module-utils/ignore'); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +var _path = require('path'); + +var _readPkgUp = require('read-pkg-up'); + +var _readPkgUp2 = _interopRequireDefault(_readPkgUp); + +var _object = require('object.values'); + +var _object2 = _interopRequireDefault(_object); + +var _arrayIncludes = require('array-includes'); + +var _arrayIncludes2 = _interopRequireDefault(_arrayIncludes); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } } /** + * @fileOverview Ensures that modules contain exports and/or all + * modules are consumed within other modules. + * @author René Fermann + */ + +// eslint/lib/util/glob-util has been moved to eslint/lib/util/glob-utils with version 5.3 +// and has been moved to eslint/lib/cli-engine/file-enumerator in version 6 +let listFilesToProcess; +try { + const FileEnumerator = require('eslint/lib/cli-engine/file-enumerator').FileEnumerator; + listFilesToProcess = function (src, extensions) { + const e = new FileEnumerator({ + extensions: extensions + }); + return Array.from(e.iterateFiles(src), (_ref) => { + let filePath = _ref.filePath, + ignored = _ref.ignored; + return { + ignored, + filename: filePath + }; + }); + }; +} catch (e1) { + // Prevent passing invalid options (extensions array) to old versions of the function. + // https://github.com/eslint/eslint/blob/v5.16.0/lib/util/glob-utils.js#L178-L280 + // https://github.com/eslint/eslint/blob/v5.2.0/lib/util/glob-util.js#L174-L269 + let originalListFilesToProcess; + try { + originalListFilesToProcess = require('eslint/lib/util/glob-utils').listFilesToProcess; + listFilesToProcess = function (src, extensions) { + return originalListFilesToProcess(src, { + extensions: extensions + }); + }; + } catch (e2) { + originalListFilesToProcess = require('eslint/lib/util/glob-util').listFilesToProcess; + + listFilesToProcess = function (src, extensions) { + const patterns = src.reduce((carry, pattern) => { + return carry.concat(extensions.map(extension => { + return (/\*\*|\*\./.test(pattern) ? pattern : `${pattern}/**/*${extension}` + ); + })); + }, src.slice()); + + return originalListFilesToProcess(patterns); + }; + } +} + +const EXPORT_DEFAULT_DECLARATION = 'ExportDefaultDeclaration'; +const EXPORT_NAMED_DECLARATION = 'ExportNamedDeclaration'; +const EXPORT_ALL_DECLARATION = 'ExportAllDeclaration'; +const IMPORT_DECLARATION = 'ImportDeclaration'; +const IMPORT_NAMESPACE_SPECIFIER = 'ImportNamespaceSpecifier'; +const IMPORT_DEFAULT_SPECIFIER = 'ImportDefaultSpecifier'; +const VARIABLE_DECLARATION = 'VariableDeclaration'; +const FUNCTION_DECLARATION = 'FunctionDeclaration'; +const CLASS_DECLARATION = 'ClassDeclaration'; +const DEFAULT = 'default'; +const TYPE_ALIAS = 'TypeAlias'; + +/** + * List of imports per file. + * + * Represented by a two-level Map to a Set of identifiers. The upper-level Map + * keys are the paths to the modules containing the imports, while the + * lower-level Map keys are the paths to the files which are being imported + * from. Lastly, the Set of identifiers contains either names being imported + * or a special AST node name listed above (e.g ImportDefaultSpecifier). + * + * For example, if we have a file named foo.js containing: + * + * import { o2 } from './bar.js'; + * + * Then we will have a structure that looks like: + * + * Map { 'foo.js' => Map { 'bar.js' => Set { 'o2' } } } + * + * @type {Map>>} + */ +const importList = new Map(); + +/** + * List of exports per file. + * + * Represented by a two-level Map to an object of metadata. The upper-level Map + * keys are the paths to the modules containing the exports, while the + * lower-level Map keys are the specific identifiers or special AST node names + * being exported. The leaf-level metadata object at the moment only contains a + * `whereUsed` propoerty, which contains a Set of paths to modules that import + * the name. + * + * For example, if we have a file named bar.js containing the following exports: + * + * const o2 = 'bar'; + * export { o2 }; + * + * And a file named foo.js containing the following import: + * + * import { o2 } from './bar.js'; + * + * Then we will have a structure that looks like: + * + * Map { 'bar.js' => Map { 'o2' => { whereUsed: Set { 'foo.js' } } } } + * + * @type {Map>} + */ +const exportList = new Map(); + +const ignoredFiles = new Set(); +const filesOutsideSrc = new Set(); + +const isNodeModule = path => { + return (/\/(node_modules)\//.test(path) + ); +}; + +/** + * read all files matching the patterns in src and ignoreExports + * + * return all files matching src pattern, which are not matching the ignoreExports pattern + */ +const resolveFiles = (src, ignoreExports, context) => { + const extensions = Array.from((0, _ignore.getFileExtensions)(context.settings)); + + const srcFiles = new Set(); + const srcFileList = listFilesToProcess(src, extensions); + + // prepare list of ignored files + const ignoredFilesList = listFilesToProcess(ignoreExports, extensions); + ignoredFilesList.forEach((_ref2) => { + let filename = _ref2.filename; + return ignoredFiles.add(filename); + }); + + // prepare list of source files, don't consider files from node_modules + srcFileList.filter((_ref3) => { + let filename = _ref3.filename; + return !isNodeModule(filename); + }).forEach((_ref4) => { + let filename = _ref4.filename; + + srcFiles.add(filename); + }); + return srcFiles; +}; + +/** + * parse all source files and build up 2 maps containing the existing imports and exports + */ +const prepareImportsAndExports = (srcFiles, context) => { + const exportAll = new Map(); + srcFiles.forEach(file => { + const exports = new Map(); + const imports = new Map(); + const currentExports = _ExportMap2.default.get(file, context); + if (currentExports) { + const dependencies = currentExports.dependencies, + reexports = currentExports.reexports, + localImportList = currentExports.imports, + namespace = currentExports.namespace; + + // dependencies === export * from + + const currentExportAll = new Set(); + dependencies.forEach(getDependency => { + const dependency = getDependency(); + if (dependency === null) { + return; + } + + currentExportAll.add(dependency.path); + }); + exportAll.set(file, currentExportAll); + + reexports.forEach((value, key) => { + if (key === DEFAULT) { + exports.set(IMPORT_DEFAULT_SPECIFIER, { whereUsed: new Set() }); + } else { + exports.set(key, { whereUsed: new Set() }); + } + const reexport = value.getImport(); + if (!reexport) { + return; + } + let localImport = imports.get(reexport.path); + let currentValue; + if (value.local === DEFAULT) { + currentValue = IMPORT_DEFAULT_SPECIFIER; + } else { + currentValue = value.local; + } + if (typeof localImport !== 'undefined') { + localImport = new Set([].concat(_toConsumableArray(localImport), [currentValue])); + } else { + localImport = new Set([currentValue]); + } + imports.set(reexport.path, localImport); + }); + + localImportList.forEach((value, key) => { + if (isNodeModule(key)) { + return; + } + imports.set(key, value.importedSpecifiers); + }); + importList.set(file, imports); + + // build up export list only, if file is not ignored + if (ignoredFiles.has(file)) { + return; + } + namespace.forEach((value, key) => { + if (key === DEFAULT) { + exports.set(IMPORT_DEFAULT_SPECIFIER, { whereUsed: new Set() }); + } else { + exports.set(key, { whereUsed: new Set() }); + } + }); + } + exports.set(EXPORT_ALL_DECLARATION, { whereUsed: new Set() }); + exports.set(IMPORT_NAMESPACE_SPECIFIER, { whereUsed: new Set() }); + exportList.set(file, exports); + }); + exportAll.forEach((value, key) => { + value.forEach(val => { + const currentExports = exportList.get(val); + const currentExport = currentExports.get(EXPORT_ALL_DECLARATION); + currentExport.whereUsed.add(key); + }); + }); +}; + +/** + * traverse through all imports and add the respective path to the whereUsed-list + * of the corresponding export + */ +const determineUsage = () => { + importList.forEach((listValue, listKey) => { + listValue.forEach((value, key) => { + const exports = exportList.get(key); + if (typeof exports !== 'undefined') { + value.forEach(currentImport => { + let specifier; + if (currentImport === IMPORT_NAMESPACE_SPECIFIER) { + specifier = IMPORT_NAMESPACE_SPECIFIER; + } else if (currentImport === IMPORT_DEFAULT_SPECIFIER) { + specifier = IMPORT_DEFAULT_SPECIFIER; + } else { + specifier = currentImport; + } + if (typeof specifier !== 'undefined') { + const exportStatement = exports.get(specifier); + if (typeof exportStatement !== 'undefined') { + const whereUsed = exportStatement.whereUsed; + + whereUsed.add(listKey); + exports.set(specifier, { whereUsed }); + } + } + }); + } + }); + }); +}; + +const getSrc = src => { + if (src) { + return src; + } + return [process.cwd()]; +}; + +/** + * prepare the lists of existing imports and exports - should only be executed once at + * the start of a new eslint run + */ +let srcFiles; +let lastPrepareKey; +const doPreparation = (src, ignoreExports, context) => { + const prepareKey = JSON.stringify({ + src: (src || []).sort(), + ignoreExports: (ignoreExports || []).sort(), + extensions: Array.from((0, _ignore.getFileExtensions)(context.settings)).sort() + }); + if (prepareKey === lastPrepareKey) { + return; + } + + importList.clear(); + exportList.clear(); + ignoredFiles.clear(); + filesOutsideSrc.clear(); + + srcFiles = resolveFiles(getSrc(src), ignoreExports, context); + prepareImportsAndExports(srcFiles, context); + determineUsage(); + lastPrepareKey = prepareKey; +}; + +const newNamespaceImportExists = specifiers => specifiers.some((_ref5) => { + let type = _ref5.type; + return type === IMPORT_NAMESPACE_SPECIFIER; +}); + +const newDefaultImportExists = specifiers => specifiers.some((_ref6) => { + let type = _ref6.type; + return type === IMPORT_DEFAULT_SPECIFIER; +}); + +const fileIsInPkg = file => { + var _readPkgUp$sync = _readPkgUp2.default.sync({ cwd: file, normalize: false }); + + const path = _readPkgUp$sync.path, + pkg = _readPkgUp$sync.pkg; + + const basePath = (0, _path.dirname)(path); + + const checkPkgFieldString = pkgField => { + if ((0, _path.join)(basePath, pkgField) === file) { + return true; + } + }; + + const checkPkgFieldObject = pkgField => { + const pkgFieldFiles = (0, _object2.default)(pkgField).map(value => (0, _path.join)(basePath, value)); + if ((0, _arrayIncludes2.default)(pkgFieldFiles, file)) { + return true; + } + }; + + const checkPkgField = pkgField => { + if (typeof pkgField === 'string') { + return checkPkgFieldString(pkgField); + } + + if (typeof pkgField === 'object') { + return checkPkgFieldObject(pkgField); + } + }; + + if (pkg.private === true) { + return false; + } + + if (pkg.bin) { + if (checkPkgField(pkg.bin)) { + return true; + } + } + + if (pkg.browser) { + if (checkPkgField(pkg.browser)) { + return true; + } + } + + if (pkg.main) { + if (checkPkgFieldString(pkg.main)) { + return true; + } + } + + return false; +}; + +module.exports = { + meta: { + type: 'suggestion', + docs: { url: (0, _docsUrl2.default)('no-unused-modules') }, + schema: [{ + properties: { + src: { + description: 'files/paths to be analyzed (only for unused exports)', + type: 'array', + minItems: 1, + items: { + type: 'string', + minLength: 1 + } + }, + ignoreExports: { + description: 'files/paths for which unused exports will not be reported (e.g module entry points)', + type: 'array', + minItems: 1, + items: { + type: 'string', + minLength: 1 + } + }, + missingExports: { + description: 'report modules without any exports', + type: 'boolean' + }, + unusedExports: { + description: 'report exports without any usage', + type: 'boolean' + } + }, + not: { + properties: { + unusedExports: { enum: [false] }, + missingExports: { enum: [false] } + } + }, + anyOf: [{ + not: { + properties: { + unusedExports: { enum: [true] } + } + }, + required: ['missingExports'] + }, { + not: { + properties: { + missingExports: { enum: [true] } + } + }, + required: ['unusedExports'] + }, { + properties: { + unusedExports: { enum: [true] } + }, + required: ['unusedExports'] + }, { + properties: { + missingExports: { enum: [true] } + }, + required: ['missingExports'] + }] + }] + }, + + create: context => { + var _ref7 = context.options[0] || {}; + + const src = _ref7.src; + var _ref7$ignoreExports = _ref7.ignoreExports; + const ignoreExports = _ref7$ignoreExports === undefined ? [] : _ref7$ignoreExports, + missingExports = _ref7.missingExports, + unusedExports = _ref7.unusedExports; + + + if (unusedExports) { + doPreparation(src, ignoreExports, context); + } + + const file = context.getFilename(); + + const checkExportPresence = node => { + if (!missingExports) { + return; + } + + if (ignoredFiles.has(file)) { + return; + } + + const exportCount = exportList.get(file); + const exportAll = exportCount.get(EXPORT_ALL_DECLARATION); + const namespaceImports = exportCount.get(IMPORT_NAMESPACE_SPECIFIER); + + exportCount.delete(EXPORT_ALL_DECLARATION); + exportCount.delete(IMPORT_NAMESPACE_SPECIFIER); + if (exportCount.size < 1) { + // node.body[0] === 'undefined' only happens, if everything is commented out in the file + // being linted + context.report(node.body[0] ? node.body[0] : node, 'No exports found'); + } + exportCount.set(EXPORT_ALL_DECLARATION, exportAll); + exportCount.set(IMPORT_NAMESPACE_SPECIFIER, namespaceImports); + }; + + const checkUsage = (node, exportedValue) => { + if (!unusedExports) { + return; + } + + if (ignoredFiles.has(file)) { + return; + } + + if (fileIsInPkg(file)) { + return; + } + + if (filesOutsideSrc.has(file)) { + return; + } + + // make sure file to be linted is included in source files + if (!srcFiles.has(file)) { + srcFiles = resolveFiles(getSrc(src), ignoreExports, context); + if (!srcFiles.has(file)) { + filesOutsideSrc.add(file); + return; + } + } + + exports = exportList.get(file); + + // special case: export * from + const exportAll = exports.get(EXPORT_ALL_DECLARATION); + if (typeof exportAll !== 'undefined' && exportedValue !== IMPORT_DEFAULT_SPECIFIER) { + if (exportAll.whereUsed.size > 0) { + return; + } + } + + // special case: namespace import + const namespaceImports = exports.get(IMPORT_NAMESPACE_SPECIFIER); + if (typeof namespaceImports !== 'undefined') { + if (namespaceImports.whereUsed.size > 0) { + return; + } + } + + // exportsList will always map any imported value of 'default' to 'ImportDefaultSpecifier' + const exportsKey = exportedValue === DEFAULT ? IMPORT_DEFAULT_SPECIFIER : exportedValue; + + const exportStatement = exports.get(exportsKey); + + const value = exportsKey === IMPORT_DEFAULT_SPECIFIER ? DEFAULT : exportsKey; + + if (typeof exportStatement !== 'undefined') { + if (exportStatement.whereUsed.size < 1) { + context.report(node, `exported declaration '${value}' not used within other modules`); + } + } else { + context.report(node, `exported declaration '${value}' not used within other modules`); + } + }; + + /** + * only useful for tools like vscode-eslint + * + * update lists of existing exports during runtime + */ + const updateExportUsage = node => { + if (ignoredFiles.has(file)) { + return; + } + + let exports = exportList.get(file); + + // new module has been created during runtime + // include it in further processing + if (typeof exports === 'undefined') { + exports = new Map(); + } + + const newExports = new Map(); + const newExportIdentifiers = new Set(); + + node.body.forEach((_ref8) => { + let type = _ref8.type, + declaration = _ref8.declaration, + specifiers = _ref8.specifiers; + + if (type === EXPORT_DEFAULT_DECLARATION) { + newExportIdentifiers.add(IMPORT_DEFAULT_SPECIFIER); + } + if (type === EXPORT_NAMED_DECLARATION) { + if (specifiers.length > 0) { + specifiers.forEach(specifier => { + if (specifier.exported) { + newExportIdentifiers.add(specifier.exported.name); + } + }); + } + if (declaration) { + if (declaration.type === FUNCTION_DECLARATION || declaration.type === CLASS_DECLARATION || declaration.type === TYPE_ALIAS) { + newExportIdentifiers.add(declaration.id.name); + } + if (declaration.type === VARIABLE_DECLARATION) { + declaration.declarations.forEach((_ref9) => { + let id = _ref9.id; + + newExportIdentifiers.add(id.name); + }); + } + } + } + }); + + // old exports exist within list of new exports identifiers: add to map of new exports + exports.forEach((value, key) => { + if (newExportIdentifiers.has(key)) { + newExports.set(key, value); + } + }); + + // new export identifiers added: add to map of new exports + newExportIdentifiers.forEach(key => { + if (!exports.has(key)) { + newExports.set(key, { whereUsed: new Set() }); + } + }); + + // preserve information about namespace imports + let exportAll = exports.get(EXPORT_ALL_DECLARATION); + let namespaceImports = exports.get(IMPORT_NAMESPACE_SPECIFIER); + + if (typeof namespaceImports === 'undefined') { + namespaceImports = { whereUsed: new Set() }; + } + + newExports.set(EXPORT_ALL_DECLARATION, exportAll); + newExports.set(IMPORT_NAMESPACE_SPECIFIER, namespaceImports); + exportList.set(file, newExports); + }; + + /** + * only useful for tools like vscode-eslint + * + * update lists of existing imports during runtime + */ + const updateImportUsage = node => { + if (!unusedExports) { + return; + } + + let oldImportPaths = importList.get(file); + if (typeof oldImportPaths === 'undefined') { + oldImportPaths = new Map(); + } + + const oldNamespaceImports = new Set(); + const newNamespaceImports = new Set(); + + const oldExportAll = new Set(); + const newExportAll = new Set(); + + const oldDefaultImports = new Set(); + const newDefaultImports = new Set(); + + const oldImports = new Map(); + const newImports = new Map(); + oldImportPaths.forEach((value, key) => { + if (value.has(EXPORT_ALL_DECLARATION)) { + oldExportAll.add(key); + } + if (value.has(IMPORT_NAMESPACE_SPECIFIER)) { + oldNamespaceImports.add(key); + } + if (value.has(IMPORT_DEFAULT_SPECIFIER)) { + oldDefaultImports.add(key); + } + value.forEach(val => { + if (val !== IMPORT_NAMESPACE_SPECIFIER && val !== IMPORT_DEFAULT_SPECIFIER) { + oldImports.set(val, key); + } + }); + }); + + node.body.forEach(astNode => { + let resolvedPath; + + // support for export { value } from 'module' + if (astNode.type === EXPORT_NAMED_DECLARATION) { + if (astNode.source) { + resolvedPath = (0, _resolve2.default)(astNode.source.raw.replace(/('|")/g, ''), context); + astNode.specifiers.forEach(specifier => { + let name; + if (specifier.exported.name === DEFAULT) { + name = IMPORT_DEFAULT_SPECIFIER; + } else { + name = specifier.local.name; + } + newImports.set(name, resolvedPath); + }); + } + } + + if (astNode.type === EXPORT_ALL_DECLARATION) { + resolvedPath = (0, _resolve2.default)(astNode.source.raw.replace(/('|")/g, ''), context); + newExportAll.add(resolvedPath); + } + + if (astNode.type === IMPORT_DECLARATION) { + resolvedPath = (0, _resolve2.default)(astNode.source.raw.replace(/('|")/g, ''), context); + if (!resolvedPath) { + return; + } + + if (isNodeModule(resolvedPath)) { + return; + } + + if (newNamespaceImportExists(astNode.specifiers)) { + newNamespaceImports.add(resolvedPath); + } + + if (newDefaultImportExists(astNode.specifiers)) { + newDefaultImports.add(resolvedPath); + } + + astNode.specifiers.forEach(specifier => { + if (specifier.type === IMPORT_DEFAULT_SPECIFIER || specifier.type === IMPORT_NAMESPACE_SPECIFIER) { + return; + } + newImports.set(specifier.imported.name, resolvedPath); + }); + } + }); + + newExportAll.forEach(value => { + if (!oldExportAll.has(value)) { + let imports = oldImportPaths.get(value); + if (typeof imports === 'undefined') { + imports = new Set(); + } + imports.add(EXPORT_ALL_DECLARATION); + oldImportPaths.set(value, imports); + + let exports = exportList.get(value); + let currentExport; + if (typeof exports !== 'undefined') { + currentExport = exports.get(EXPORT_ALL_DECLARATION); + } else { + exports = new Map(); + exportList.set(value, exports); + } + + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.add(file); + } else { + const whereUsed = new Set(); + whereUsed.add(file); + exports.set(EXPORT_ALL_DECLARATION, { whereUsed }); + } + } + }); + + oldExportAll.forEach(value => { + if (!newExportAll.has(value)) { + const imports = oldImportPaths.get(value); + imports.delete(EXPORT_ALL_DECLARATION); + + const exports = exportList.get(value); + if (typeof exports !== 'undefined') { + const currentExport = exports.get(EXPORT_ALL_DECLARATION); + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.delete(file); + } + } + } + }); + + newDefaultImports.forEach(value => { + if (!oldDefaultImports.has(value)) { + let imports = oldImportPaths.get(value); + if (typeof imports === 'undefined') { + imports = new Set(); + } + imports.add(IMPORT_DEFAULT_SPECIFIER); + oldImportPaths.set(value, imports); + + let exports = exportList.get(value); + let currentExport; + if (typeof exports !== 'undefined') { + currentExport = exports.get(IMPORT_DEFAULT_SPECIFIER); + } else { + exports = new Map(); + exportList.set(value, exports); + } + + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.add(file); + } else { + const whereUsed = new Set(); + whereUsed.add(file); + exports.set(IMPORT_DEFAULT_SPECIFIER, { whereUsed }); + } + } + }); + + oldDefaultImports.forEach(value => { + if (!newDefaultImports.has(value)) { + const imports = oldImportPaths.get(value); + imports.delete(IMPORT_DEFAULT_SPECIFIER); + + const exports = exportList.get(value); + if (typeof exports !== 'undefined') { + const currentExport = exports.get(IMPORT_DEFAULT_SPECIFIER); + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.delete(file); + } + } + } + }); + + newNamespaceImports.forEach(value => { + if (!oldNamespaceImports.has(value)) { + let imports = oldImportPaths.get(value); + if (typeof imports === 'undefined') { + imports = new Set(); + } + imports.add(IMPORT_NAMESPACE_SPECIFIER); + oldImportPaths.set(value, imports); + + let exports = exportList.get(value); + let currentExport; + if (typeof exports !== 'undefined') { + currentExport = exports.get(IMPORT_NAMESPACE_SPECIFIER); + } else { + exports = new Map(); + exportList.set(value, exports); + } + + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.add(file); + } else { + const whereUsed = new Set(); + whereUsed.add(file); + exports.set(IMPORT_NAMESPACE_SPECIFIER, { whereUsed }); + } + } + }); + + oldNamespaceImports.forEach(value => { + if (!newNamespaceImports.has(value)) { + const imports = oldImportPaths.get(value); + imports.delete(IMPORT_NAMESPACE_SPECIFIER); + + const exports = exportList.get(value); + if (typeof exports !== 'undefined') { + const currentExport = exports.get(IMPORT_NAMESPACE_SPECIFIER); + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.delete(file); + } + } + } + }); + + newImports.forEach((value, key) => { + if (!oldImports.has(key)) { + let imports = oldImportPaths.get(value); + if (typeof imports === 'undefined') { + imports = new Set(); + } + imports.add(key); + oldImportPaths.set(value, imports); + + let exports = exportList.get(value); + let currentExport; + if (typeof exports !== 'undefined') { + currentExport = exports.get(key); + } else { + exports = new Map(); + exportList.set(value, exports); + } + + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.add(file); + } else { + const whereUsed = new Set(); + whereUsed.add(file); + exports.set(key, { whereUsed }); + } + } + }); + + oldImports.forEach((value, key) => { + if (!newImports.has(key)) { + const imports = oldImportPaths.get(value); + imports.delete(key); + + const exports = exportList.get(value); + if (typeof exports !== 'undefined') { + const currentExport = exports.get(key); + if (typeof currentExport !== 'undefined') { + currentExport.whereUsed.delete(file); + } + } + } + }); + }; + + return { + 'Program:exit': node => { + updateExportUsage(node); + updateImportUsage(node); + checkExportPresence(node); + }, + 'ExportDefaultDeclaration': node => { + checkUsage(node, IMPORT_DEFAULT_SPECIFIER); + }, + 'ExportNamedDeclaration': node => { + node.specifiers.forEach(specifier => { + checkUsage(node, specifier.exported.name); + }); + if (node.declaration) { + if (node.declaration.type === FUNCTION_DECLARATION || node.declaration.type === CLASS_DECLARATION || node.declaration.type === TYPE_ALIAS) { + checkUsage(node, node.declaration.id.name); + } + if (node.declaration.type === VARIABLE_DECLARATION) { + node.declaration.declarations.forEach(declaration => { + checkUsage(node, declaration.id.name); + }); + } + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby11bnVzZWQtbW9kdWxlcy5qcyJdLCJuYW1lcyI6WyJsaXN0RmlsZXNUb1Byb2Nlc3MiLCJGaWxlRW51bWVyYXRvciIsInJlcXVpcmUiLCJzcmMiLCJleHRlbnNpb25zIiwiZSIsIkFycmF5IiwiZnJvbSIsIml0ZXJhdGVGaWxlcyIsImZpbGVQYXRoIiwiaWdub3JlZCIsImZpbGVuYW1lIiwiZTEiLCJvcmlnaW5hbExpc3RGaWxlc1RvUHJvY2VzcyIsImUyIiwicGF0dGVybnMiLCJyZWR1Y2UiLCJjYXJyeSIsInBhdHRlcm4iLCJjb25jYXQiLCJtYXAiLCJleHRlbnNpb24iLCJ0ZXN0Iiwic2xpY2UiLCJFWFBPUlRfREVGQVVMVF9ERUNMQVJBVElPTiIsIkVYUE9SVF9OQU1FRF9ERUNMQVJBVElPTiIsIkVYUE9SVF9BTExfREVDTEFSQVRJT04iLCJJTVBPUlRfREVDTEFSQVRJT04iLCJJTVBPUlRfTkFNRVNQQUNFX1NQRUNJRklFUiIsIklNUE9SVF9ERUZBVUxUX1NQRUNJRklFUiIsIlZBUklBQkxFX0RFQ0xBUkFUSU9OIiwiRlVOQ1RJT05fREVDTEFSQVRJT04iLCJDTEFTU19ERUNMQVJBVElPTiIsIkRFRkFVTFQiLCJUWVBFX0FMSUFTIiwiaW1wb3J0TGlzdCIsIk1hcCIsImV4cG9ydExpc3QiLCJpZ25vcmVkRmlsZXMiLCJTZXQiLCJmaWxlc091dHNpZGVTcmMiLCJpc05vZGVNb2R1bGUiLCJwYXRoIiwicmVzb2x2ZUZpbGVzIiwiaWdub3JlRXhwb3J0cyIsImNvbnRleHQiLCJzZXR0aW5ncyIsInNyY0ZpbGVzIiwic3JjRmlsZUxpc3QiLCJpZ25vcmVkRmlsZXNMaXN0IiwiZm9yRWFjaCIsImFkZCIsImZpbHRlciIsInByZXBhcmVJbXBvcnRzQW5kRXhwb3J0cyIsImV4cG9ydEFsbCIsImZpbGUiLCJleHBvcnRzIiwiaW1wb3J0cyIsImN1cnJlbnRFeHBvcnRzIiwiRXhwb3J0cyIsImdldCIsImRlcGVuZGVuY2llcyIsInJlZXhwb3J0cyIsImxvY2FsSW1wb3J0TGlzdCIsIm5hbWVzcGFjZSIsImN1cnJlbnRFeHBvcnRBbGwiLCJnZXREZXBlbmRlbmN5IiwiZGVwZW5kZW5jeSIsInNldCIsInZhbHVlIiwia2V5Iiwid2hlcmVVc2VkIiwicmVleHBvcnQiLCJnZXRJbXBvcnQiLCJsb2NhbEltcG9ydCIsImN1cnJlbnRWYWx1ZSIsImxvY2FsIiwiaW1wb3J0ZWRTcGVjaWZpZXJzIiwiaGFzIiwidmFsIiwiY3VycmVudEV4cG9ydCIsImRldGVybWluZVVzYWdlIiwibGlzdFZhbHVlIiwibGlzdEtleSIsImN1cnJlbnRJbXBvcnQiLCJzcGVjaWZpZXIiLCJleHBvcnRTdGF0ZW1lbnQiLCJnZXRTcmMiLCJwcm9jZXNzIiwiY3dkIiwibGFzdFByZXBhcmVLZXkiLCJkb1ByZXBhcmF0aW9uIiwicHJlcGFyZUtleSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3J0IiwiY2xlYXIiLCJuZXdOYW1lc3BhY2VJbXBvcnRFeGlzdHMiLCJzcGVjaWZpZXJzIiwic29tZSIsInR5cGUiLCJuZXdEZWZhdWx0SW1wb3J0RXhpc3RzIiwiZmlsZUlzSW5Qa2ciLCJyZWFkUGtnVXAiLCJzeW5jIiwibm9ybWFsaXplIiwicGtnIiwiYmFzZVBhdGgiLCJjaGVja1BrZ0ZpZWxkU3RyaW5nIiwicGtnRmllbGQiLCJjaGVja1BrZ0ZpZWxkT2JqZWN0IiwicGtnRmllbGRGaWxlcyIsImNoZWNrUGtnRmllbGQiLCJwcml2YXRlIiwiYmluIiwiYnJvd3NlciIsIm1haW4iLCJtb2R1bGUiLCJtZXRhIiwiZG9jcyIsInVybCIsInNjaGVtYSIsInByb3BlcnRpZXMiLCJkZXNjcmlwdGlvbiIsIm1pbkl0ZW1zIiwiaXRlbXMiLCJtaW5MZW5ndGgiLCJtaXNzaW5nRXhwb3J0cyIsInVudXNlZEV4cG9ydHMiLCJub3QiLCJlbnVtIiwiYW55T2YiLCJyZXF1aXJlZCIsImNyZWF0ZSIsIm9wdGlvbnMiLCJnZXRGaWxlbmFtZSIsImNoZWNrRXhwb3J0UHJlc2VuY2UiLCJub2RlIiwiZXhwb3J0Q291bnQiLCJuYW1lc3BhY2VJbXBvcnRzIiwiZGVsZXRlIiwic2l6ZSIsInJlcG9ydCIsImJvZHkiLCJjaGVja1VzYWdlIiwiZXhwb3J0ZWRWYWx1ZSIsImV4cG9ydHNLZXkiLCJ1cGRhdGVFeHBvcnRVc2FnZSIsIm5ld0V4cG9ydHMiLCJuZXdFeHBvcnRJZGVudGlmaWVycyIsImRlY2xhcmF0aW9uIiwibGVuZ3RoIiwiZXhwb3J0ZWQiLCJuYW1lIiwiaWQiLCJkZWNsYXJhdGlvbnMiLCJ1cGRhdGVJbXBvcnRVc2FnZSIsIm9sZEltcG9ydFBhdGhzIiwib2xkTmFtZXNwYWNlSW1wb3J0cyIsIm5ld05hbWVzcGFjZUltcG9ydHMiLCJvbGRFeHBvcnRBbGwiLCJuZXdFeHBvcnRBbGwiLCJvbGREZWZhdWx0SW1wb3J0cyIsIm5ld0RlZmF1bHRJbXBvcnRzIiwib2xkSW1wb3J0cyIsIm5ld0ltcG9ydHMiLCJhc3ROb2RlIiwicmVzb2x2ZWRQYXRoIiwic291cmNlIiwicmF3IiwicmVwbGFjZSIsImltcG9ydGVkIl0sIm1hcHBpbmdzIjoiOztBQU1BOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O2dNQWJBOzs7Ozs7QUFlQTtBQUNBO0FBQ0EsSUFBSUEsa0JBQUo7QUFDQSxJQUFJO0FBQ0YsUUFBTUMsaUJBQWlCQyxRQUFRLHVDQUFSLEVBQWlERCxjQUF4RTtBQUNBRCx1QkFBcUIsVUFBVUcsR0FBVixFQUFlQyxVQUFmLEVBQTJCO0FBQzlDLFVBQU1DLElBQUksSUFBSUosY0FBSixDQUFtQjtBQUMzQkcsa0JBQVlBO0FBRGUsS0FBbkIsQ0FBVjtBQUdBLFdBQU9FLE1BQU1DLElBQU4sQ0FBV0YsRUFBRUcsWUFBRixDQUFlTCxHQUFmLENBQVgsRUFBZ0M7QUFBQSxVQUFHTSxRQUFILFFBQUdBLFFBQUg7QUFBQSxVQUFhQyxPQUFiLFFBQWFBLE9BQWI7QUFBQSxhQUE0QjtBQUNqRUEsZUFEaUU7QUFFakVDLGtCQUFVRjtBQUZ1RCxP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LFVBSDVCLEVBSUU7QUFDQThHLHVCQUFXUCxJQUFYLEVBQWlCQSxLQUFLYSxXQUFMLENBQWlCSSxFQUFqQixDQUFvQkQsSUFBckM7QUFDRDtBQUNELGNBQUloQixLQUFLYSxXQUFMLENBQWlCbEQsSUFBakIsS0FBMEJ0RSxvQkFBOUIsRUFBb0Q7QUFDbEQyRyxpQkFBS2EsV0FBTCxDQUFpQkssWUFBakIsQ0FBOEJ6RyxPQUE5QixDQUFzQ29HLGVBQWU7QUFDbkROLHlCQUFXUCxJQUFYLEVBQWlCYSxZQUFZSSxFQUFaLENBQWVELElBQWhDO0FBQ0QsYUFGRDtBQUdEO0FBQ0Y7QUFDRjtBQTNCSSxLQUFQO0FBNkJEO0FBbmlCYyxDQUFqQiIsImZpbGUiOiJuby11bnVzZWQtbW9kdWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBFbnN1cmVzIHRoYXQgbW9kdWxlcyBjb250YWluIGV4cG9ydHMgYW5kL29yIGFsbFxuICogbW9kdWxlcyBhcmUgY29uc3VtZWQgd2l0aGluIG90aGVyIG1vZHVsZXMuXG4gKiBAYXV0aG9yIFJlbsOpIEZlcm1hbm5cbiAqL1xuXG5pbXBvcnQgRXhwb3J0cyBmcm9tICcuLi9FeHBvcnRNYXAnXG5pbXBvcnQgeyBnZXRGaWxlRXh0ZW5zaW9ucyB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvaWdub3JlJ1xuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuaW1wb3J0IGRvY3NVcmwgZnJvbSAnLi4vZG9jc1VybCdcbmltcG9ydCB7IGRpcm5hbWUsIGpvaW4gfSBmcm9tICdwYXRoJ1xuaW1wb3J0IHJlYWRQa2dVcCBmcm9tICdyZWFkLXBrZy11cCdcbmltcG9ydCB2YWx1ZXMgZnJvbSAnb2JqZWN0LnZhbHVlcydcbmltcG9ydCBpbmNsdWRlcyBmcm9tICdhcnJheS1pbmNsdWRlcydcblxuLy8gZXNsaW50L2xpYi91dGlsL2dsb2ItdXRpbCBoYXMgYmVlbiBtb3ZlZCB0byBlc2xpbnQvbGliL3V0aWwvZ2xvYi11dGlscyB3aXRoIHZlcnNpb24gNS4zXG4vLyBhbmQgaGFzIGJlZW4gbW92ZWQgdG8gZXNsaW50L2xpYi9jbGktZW5naW5lL2ZpbGUtZW51bWVyYXRvciBpbiB2ZXJzaW9uIDZcbmxldCBsaXN0RmlsZXNUb1Byb2Nlc3NcbnRyeSB7XG4gIGNvbnN0IEZpbGVFbnVtZXJhdG9yID0gcmVxdWlyZSgnZXNsaW50L2xpYi9jbGktZW5naW5lL2ZpbGUtZW51bWVyYXRvcicpLkZpbGVFbnVtZXJhdG9yXG4gIGxpc3RGaWxlc1RvUHJvY2VzcyA9IGZ1bmN0aW9uIChzcmMsIGV4dGVuc2lvbnMpIHtcbiAgICBjb25zdCBlID0gbmV3IEZpbGVFbnVtZXJhdG9yKHtcbiAgICAgIGV4dGVuc2lvbnM6IGV4dGVuc2lvbnMsXG4gICAgfSlcbiAgICByZXR1cm4gQXJyYXkuZnJvbShlLml0ZXJhdGVGaWxlcyhzcmMpLCAoeyBmaWxlUGF0aCwgaWdub3JlZCB9KSA9PiAoe1xuICAgICAgaWdub3JlZCxcbiAgICAgIGZpbGVuYW1lOiBmaWxlUGF0aCxcbiAgICB9KSlcbiAgfVxufSBjYXRjaCAoZTEpIHtcbiAgLy8gUHJldmVudCBwYXNzaW5nIGludmFsaWQgb3B0aW9ucyAoZXh0ZW5zaW9ucyBhcnJheSkgdG8gb2xkIHZlcnNpb25zIG9mIHRoZSBmdW5jdGlvbi5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2VzbGludC9lc2xpbnQvYmxvYi92NS4xNi4wL2xpYi91dGlsL2dsb2ItdXRpbHMuanMjTDE3OC1MMjgwXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9lc2xpbnQvZXNsaW50L2Jsb2IvdjUuMi4wL2xpYi91dGlsL2dsb2ItdXRpbC5qcyNMMTc0LUwyNjlcbiAgbGV0IG9yaWdpbmFsTGlzdEZpbGVzVG9Qcm9jZXNzXG4gIHRyeSB7XG4gICAgb3JpZ2luYWxMaXN0RmlsZXNUb1Byb2Nlc3MgPSByZXF1aXJlKCdlc2xpbnQvbGliL3V0aWwvZ2xvYi11dGlscycpLmxpc3RGaWxlc1RvUHJvY2Vzc1xuICAgIGxpc3RGaWxlc1RvUHJvY2VzcyA9IGZ1bmN0aW9uIChzcmMsIGV4dGVuc2lvbnMpIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbExpc3RGaWxlc1RvUHJvY2VzcyhzcmMsIHtcbiAgICAgICAgZXh0ZW5zaW9uczogZXh0ZW5zaW9ucyxcbiAgICAgIH0pXG4gICAgfVxuICB9IGNhdGNoIChlMikge1xuICAgIG9yaWdpbmFsTGlzdEZpbGVzVG9Qcm9jZXNzID0gcmVxdWlyZSgnZXNsaW50L2xpYi91dGlsL2dsb2ItdXRpbCcpLmxpc3RGaWxlc1RvUHJvY2Vzc1xuXG4gICAgbGlzdEZpbGVzVG9Qcm9jZXNzID0gZnVuY3Rpb24gKHNyYywgZXh0ZW5zaW9ucykge1xuICAgICAgY29uc3QgcGF0dGVybnMgPSBzcmMucmVkdWNlKChjYXJyeSwgcGF0dGVybikgPT4ge1xuICAgICAgICByZXR1cm4gY2FycnkuY29uY2F0KGV4dGVuc2lvbnMubWFwKChleHRlbnNpb24pID0+IHtcbiAgICAgICAgICByZXR1cm4gL1xcKlxcKnxcXCpcXC4vLnRlc3QocGF0dGVybikgPyBwYXR0ZXJuIDogYCR7cGF0dGVybn0vKiovKiR7ZXh0ZW5zaW9ufWBcbiAgICAgICAgfSkpXG4gICAgICB9LCBzcmMuc2xpY2UoKSlcblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTGlzdEZpbGVzVG9Qcm9jZXNzKHBhdHRlcm5zKVxuICAgIH1cbiAgfVxufVxuXG5jb25zdCBFWFBPUlRfREVGQVVMVF9ERUNMQVJBVElPTiA9ICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nXG5jb25zdCBFWFBPUlRfTkFNRURfREVDTEFSQVRJT04gPSAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbidcbmNvbnN0IEVYUE9SVF9BTExfREVDTEFSQVRJT04gPSAnRXhwb3J0QWxsRGVjbGFyYXRpb24nXG5jb25zdCBJTVBPUlRfREVDTEFSQVRJT04gPSAnSW1wb3J0RGVjbGFyYXRpb24nXG5jb25zdCBJTVBPUlRfTkFNRVNQQUNFX1NQRUNJRklFUiA9ICdJbXBvcnROYW1lc3BhY2VTcGVjaWZpZXInXG5jb25zdCBJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIgPSAnSW1wb3J0RGVmYXVsdFNwZWNpZmllcidcbmNvbnN0IFZBUklBQkxFX0RFQ0xBUkFUSU9OID0gJ1ZhcmlhYmxlRGVjbGFyYXRpb24nXG5jb25zdCBGVU5DVElPTl9ERUNMQVJBVElPTiA9ICdGdW5jdGlvbkRlY2xhcmF0aW9uJ1xuY29uc3QgQ0xBU1NfREVDTEFSQVRJT04gPSAnQ2xhc3NEZWNsYXJhdGlvbidcbmNvbnN0IERFRkFVTFQgPSAnZGVmYXVsdCdcbmNvbnN0IFRZUEVfQUxJQVMgPSAnVHlwZUFsaWFzJ1xuXG4vKipcbiAqIExpc3Qgb2YgaW1wb3J0cyBwZXIgZmlsZS5cbiAqXG4gKiBSZXByZXNlbnRlZCBieSBhIHR3by1sZXZlbCBNYXAgdG8gYSBTZXQgb2YgaWRlbnRpZmllcnMuIFRoZSB1cHBlci1sZXZlbCBNYXBcbiAqIGtleXMgYXJlIHRoZSBwYXRocyB0byB0aGUgbW9kdWxlcyBjb250YWluaW5nIHRoZSBpbXBvcnRzLCB3aGlsZSB0aGVcbiAqIGxvd2VyLWxldmVsIE1hcCBrZXlzIGFyZSB0aGUgcGF0aHMgdG8gdGhlIGZpbGVzIHdoaWNoIGFyZSBiZWluZyBpbXBvcnRlZFxuICogZnJvbS4gTGFzdGx5LCB0aGUgU2V0IG9mIGlkZW50aWZpZXJzIGNvbnRhaW5zIGVpdGhlciBuYW1lcyBiZWluZyBpbXBvcnRlZFxuICogb3IgYSBzcGVjaWFsIEFTVCBub2RlIG5hbWUgbGlzdGVkIGFib3ZlIChlLmcgSW1wb3J0RGVmYXVsdFNwZWNpZmllcikuXG4gKlxuICogRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgYSBmaWxlIG5hbWVkIGZvby5qcyBjb250YWluaW5nOlxuICpcbiAqICAgaW1wb3J0IHsgbzIgfSBmcm9tICcuL2Jhci5qcyc7XG4gKlxuICogVGhlbiB3ZSB3aWxsIGhhdmUgYSBzdHJ1Y3R1cmUgdGhhdCBsb29rcyBsaWtlOlxuICpcbiAqICAgTWFwIHsgJ2Zvby5qcycgPT4gTWFwIHsgJ2Jhci5qcycgPT4gU2V0IHsgJ28yJyB9IH0gfVxuICpcbiAqIEB0eXBlIHtNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4+fVxuICovXG5jb25zdCBpbXBvcnRMaXN0ID0gbmV3IE1hcCgpXG5cbi8qKlxuICogTGlzdCBvZiBleHBvcnRzIHBlciBmaWxlLlxuICpcbiAqIFJlcHJlc2VudGVkIGJ5IGEgdHdvLWxldmVsIE1hcCB0byBhbiBvYmplY3Qgb2YgbWV0YWRhdGEuIFRoZSB1cHBlci1sZXZlbCBNYXBcbiAqIGtleXMgYXJlIHRoZSBwYXRocyB0byB0aGUgbW9kdWxlcyBjb250YWluaW5nIHRoZSBleHBvcnRzLCB3aGlsZSB0aGVcbiAqIGxvd2VyLWxldmVsIE1hcCBrZXlzIGFyZSB0aGUgc3BlY2lmaWMgaWRlbnRpZmllcnMgb3Igc3BlY2lhbCBBU1Qgbm9kZSBuYW1lc1xuICogYmVpbmcgZXhwb3J0ZWQuIFRoZSBsZWFmLWxldmVsIG1ldGFkYXRhIG9iamVjdCBhdCB0aGUgbW9tZW50IG9ubHkgY29udGFpbnMgYVxuICogYHdoZXJlVXNlZGAgcHJvcG9lcnR5LCB3aGljaCBjb250YWlucyBhIFNldCBvZiBwYXRocyB0byBtb2R1bGVzIHRoYXQgaW1wb3J0XG4gKiB0aGUgbmFtZS5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgaWYgd2UgaGF2ZSBhIGZpbGUgbmFtZWQgYmFyLmpzIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBleHBvcnRzOlxuICpcbiAqICAgY29uc3QgbzIgPSAnYmFyJztcbiAqICAgZXhwb3J0IHsgbzIgfTtcbiAqXG4gKiBBbmQgYSBmaWxlIG5hbWVkIGZvby5qcyBjb250YWluaW5nIHRoZSBmb2xsb3dpbmcgaW1wb3J0OlxuICpcbiAqICAgaW1wb3J0IHsgbzIgfSBmcm9tICcuL2Jhci5qcyc7XG4gKlxuICogVGhlbiB3ZSB3aWxsIGhhdmUgYSBzdHJ1Y3R1cmUgdGhhdCBsb29rcyBsaWtlOlxuICpcbiAqICAgTWFwIHsgJ2Jhci5qcycgPT4gTWFwIHsgJ28yJyA9PiB7IHdoZXJlVXNlZDogU2V0IHsgJ2Zvby5qcycgfSB9IH0gfVxuICpcbiAqIEB0eXBlIHtNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBvYmplY3Q+Pn1cbiAqL1xuY29uc3QgZXhwb3J0TGlzdCA9IG5ldyBNYXAoKVxuXG5jb25zdCBpZ25vcmVkRmlsZXMgPSBuZXcgU2V0KClcbmNvbnN0IGZpbGVzT3V0c2lkZVNyYyA9IG5ldyBTZXQoKVxuXG5jb25zdCBpc05vZGVNb2R1bGUgPSBwYXRoID0+IHtcbiAgcmV0dXJuIC9cXC8obm9kZV9tb2R1bGVzKVxcLy8udGVzdChwYXRoKVxufVxuXG4vKipcbiAqIHJlYWQgYWxsIGZpbGVzIG1hdGNoaW5nIHRoZSBwYXR0ZXJucyBpbiBzcmMgYW5kIGlnbm9yZUV4cG9ydHNcbiAqXG4gKiByZXR1cm4gYWxsIGZpbGVzIG1hdGNoaW5nIHNyYyBwYXR0ZXJuLCB3aGljaCBhcmUgbm90IG1hdGNoaW5nIHRoZSBpZ25vcmVFeHBvcnRzIHBhdHRlcm5cbiAqL1xuY29uc3QgcmVzb2x2ZUZpbGVzID0gKHNyYywgaWdub3JlRXhwb3J0cywgY29udGV4dCkgPT4ge1xuICBjb25zdCBleHRlbnNpb25zID0gQXJyYXkuZnJvbShnZXRGaWxlRXh0ZW5zaW9ucyhjb250ZXh0LnNldHRpbmdzKSlcblxuICBjb25zdCBzcmNGaWxlcyA9IG5ldyBTZXQoKVxuICBjb25zdCBzcmNGaWxlTGlzdCA9IGxpc3RGaWxlc1RvUHJvY2VzcyhzcmMsIGV4dGVuc2lvbnMpXG5cbiAgLy8gcHJlcGFyZSBsaXN0IG9mIGlnbm9yZWQgZmlsZXNcbiAgY29uc3QgaWdub3JlZEZpbGVzTGlzdCA9ICBsaXN0RmlsZXNUb1Byb2Nlc3MoaWdub3JlRXhwb3J0cywgZXh0ZW5zaW9ucylcbiAgaWdub3JlZEZpbGVzTGlzdC5mb3JFYWNoKCh7IGZpbGVuYW1lIH0pID0+IGlnbm9yZWRGaWxlcy5hZGQoZmlsZW5hbWUpKVxuXG4gIC8vIHByZXBhcmUgbGlzdCBvZiBzb3VyY2UgZmlsZXMsIGRvbid0IGNvbnNpZGVyIGZpbGVzIGZyb20gbm9kZV9tb2R1bGVzXG4gIHNyY0ZpbGVMaXN0LmZpbHRlcigoeyBmaWxlbmFtZSB9KSA9PiAhaXNOb2RlTW9kdWxlKGZpbGVuYW1lKSkuZm9yRWFjaCgoeyBmaWxlbmFtZSB9KSA9PiB7XG4gICAgc3JjRmlsZXMuYWRkKGZpbGVuYW1lKVxuICB9KVxuICByZXR1cm4gc3JjRmlsZXNcbn1cblxuLyoqXG4gKiBwYXJzZSBhbGwgc291cmNlIGZpbGVzIGFuZCBidWlsZCB1cCAyIG1hcHMgY29udGFpbmluZyB0aGUgZXhpc3RpbmcgaW1wb3J0cyBhbmQgZXhwb3J0c1xuICovXG5jb25zdCBwcmVwYXJlSW1wb3J0c0FuZEV4cG9ydHMgPSAoc3JjRmlsZXMsIGNvbnRleHQpID0+IHtcbiAgY29uc3QgZXhwb3J0QWxsID0gbmV3IE1hcCgpXG4gIHNyY0ZpbGVzLmZvckVhY2goZmlsZSA9PiB7XG4gICAgY29uc3QgZXhwb3J0cyA9IG5ldyBNYXAoKVxuICAgIGNvbnN0IGltcG9ydHMgPSBuZXcgTWFwKClcbiAgICBjb25zdCBjdXJyZW50RXhwb3J0cyA9IEV4cG9ydHMuZ2V0KGZpbGUsIGNvbnRleHQpXG4gICAgaWYgKGN1cnJlbnRFeHBvcnRzKSB7XG4gICAgICBjb25zdCB7IGRlcGVuZGVuY2llcywgcmVleHBvcnRzLCBpbXBvcnRzOiBsb2NhbEltcG9ydExpc3QsIG5hbWVzcGFjZSAgfSA9IGN1cnJlbnRFeHBvcnRzXG5cbiAgICAgIC8vIGRlcGVuZGVuY2llcyA9PT0gZXhwb3J0ICogZnJvbVxuICAgICAgY29uc3QgY3VycmVudEV4cG9ydEFsbCA9IG5ldyBTZXQoKVxuICAgICAgZGVwZW5kZW5jaWVzLmZvckVhY2goZ2V0RGVwZW5kZW5jeSA9PiB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY3kgPSBnZXREZXBlbmRlbmN5KClcbiAgICAgICAgaWYgKGRlcGVuZGVuY3kgPT09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnRFeHBvcnRBbGwuYWRkKGRlcGVuZGVuY3kucGF0aClcbiAgICAgIH0pXG4gICAgICBleHBvcnRBbGwuc2V0KGZpbGUsIGN1cnJlbnRFeHBvcnRBbGwpXG5cbiAgICAgIHJlZXhwb3J0cy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09IERFRkFVTFQpIHtcbiAgICAgICAgICBleHBvcnRzLnNldChJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIsIHsgd2hlcmVVc2VkOiBuZXcgU2V0KCkgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleHBvcnRzLnNldChrZXksIHsgd2hlcmVVc2VkOiBuZXcgU2V0KCkgfSlcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWV4cG9ydCA9ICB2YWx1ZS5nZXRJbXBvcnQoKVxuICAgICAgICBpZiAoIXJlZXhwb3J0KSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxvY2FsSW1wb3J0ID0gaW1wb3J0cy5nZXQocmVleHBvcnQucGF0aClcbiAgICAgICAgbGV0IGN1cnJlbnRWYWx1ZVxuICAgICAgICBpZiAodmFsdWUubG9jYWwgPT09IERFRkFVTFQpIHtcbiAgICAgICAgICBjdXJyZW50VmFsdWUgPSBJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVJcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50VmFsdWUgPSB2YWx1ZS5sb2NhbFxuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbG9jYWxJbXBvcnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgbG9jYWxJbXBvcnQgPSBuZXcgU2V0KFsuLi5sb2NhbEltcG9ydCwgY3VycmVudFZhbHVlXSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2NhbEltcG9ydCA9IG5ldyBTZXQoW2N1cnJlbnRWYWx1ZV0pXG4gICAgICAgIH1cbiAgICAgICAgaW1wb3J0cy5zZXQocmVleHBvcnQucGF0aCwgbG9jYWxJbXBvcnQpXG4gICAgICB9KVxuXG4gICAgICBsb2NhbEltcG9ydExpc3QuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBpZiAoaXNOb2RlTW9kdWxlKGtleSkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICBpbXBvcnRzLnNldChrZXksIHZhbHVlLmltcG9ydGVkU3BlY2lmaWVycylcbiAgICAgIH0pXG4gICAgICBpbXBvcnRMaXN0LnNldChmaWxlLCBpbXBvcnRzKVxuXG4gICAgICAvLyBidWlsZCB1cCBleHBvcnQgbGlzdCBvbmx5LCBpZiBmaWxlIGlzIG5vdCBpZ25vcmVkXG4gICAgICBpZiAoaWdub3JlZEZpbGVzLmhhcyhmaWxlKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIG5hbWVzcGFjZS5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmIChrZXkgPT09IERFRkFVTFQpIHtcbiAgICAgICAgICBleHBvcnRzLnNldChJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIsIHsgd2hlcmVVc2VkOiBuZXcgU2V0KCkgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleHBvcnRzLnNldChrZXksIHsgd2hlcmVVc2VkOiBuZXcgU2V0KCkgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgZXhwb3J0cy5zZXQoRVhQT1JUX0FMTF9ERUNMQVJBVElPTiwgeyB3aGVyZVVzZWQ6IG5ldyBTZXQoKSB9KVxuICAgIGV4cG9ydHMuc2V0KElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSLCB7IHdoZXJlVXNlZDogbmV3IFNldCgpIH0pXG4gICAgZXhwb3J0TGlzdC5zZXQoZmlsZSwgZXhwb3J0cylcbiAgfSlcbiAgZXhwb3J0QWxsLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICB2YWx1ZS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50RXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KHZhbClcbiAgICAgIGNvbnN0IGN1cnJlbnRFeHBvcnQgPSBjdXJyZW50RXhwb3J0cy5nZXQoRVhQT1JUX0FMTF9ERUNMQVJBVElPTilcbiAgICAgIGN1cnJlbnRFeHBvcnQud2hlcmVVc2VkLmFkZChrZXkpXG4gICAgfSlcbiAgfSlcbn1cblxuLyoqXG4gKiB0cmF2ZXJzZSB0aHJvdWdoIGFsbCBpbXBvcnRzIGFuZCBhZGQgdGhlIHJlc3BlY3RpdmUgcGF0aCB0byB0aGUgd2hlcmVVc2VkLWxpc3RcbiAqIG9mIHRoZSBjb3JyZXNwb25kaW5nIGV4cG9ydFxuICovXG5jb25zdCBkZXRlcm1pbmVVc2FnZSA9ICgpID0+IHtcbiAgaW1wb3J0TGlzdC5mb3JFYWNoKChsaXN0VmFsdWUsIGxpc3RLZXkpID0+IHtcbiAgICBsaXN0VmFsdWUuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgY29uc3QgZXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KGtleSlcbiAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChjdXJyZW50SW1wb3J0ID0+IHtcbiAgICAgICAgICBsZXQgc3BlY2lmaWVyXG4gICAgICAgICAgaWYgKGN1cnJlbnRJbXBvcnQgPT09IElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSKSB7XG4gICAgICAgICAgICBzcGVjaWZpZXIgPSBJTVBPUlRfTkFNRVNQQUNFX1NQRUNJRklFUlxuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudEltcG9ydCA9PT0gSU1QT1JUX0RFRkFVTFRfU1BFQ0lGSUVSKSB7XG4gICAgICAgICAgICBzcGVjaWZpZXIgPSBJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVJcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3BlY2lmaWVyID0gY3VycmVudEltcG9ydFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHNwZWNpZmllciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGV4cG9ydFN0YXRlbWVudCA9IGV4cG9ydHMuZ2V0KHNwZWNpZmllcilcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZXhwb3J0U3RhdGVtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICBjb25zdCB7IHdoZXJlVXNlZCB9ID0gZXhwb3J0U3RhdGVtZW50XG4gICAgICAgICAgICAgIHdoZXJlVXNlZC5hZGQobGlzdEtleSlcbiAgICAgICAgICAgICAgZXhwb3J0cy5zZXQoc3BlY2lmaWVyLCB7IHdoZXJlVXNlZCB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9KVxufVxuXG5jb25zdCBnZXRTcmMgPSBzcmMgPT4ge1xuICBpZiAoc3JjKSB7XG4gICAgcmV0dXJuIHNyY1xuICB9XG4gIHJldHVybiBbcHJvY2Vzcy5jd2QoKV1cbn1cblxuLyoqXG4gKiBwcmVwYXJlIHRoZSBsaXN0cyBvZiBleGlzdGluZyBpbXBvcnRzIGFuZCBleHBvcnRzIC0gc2hvdWxkIG9ubHkgYmUgZXhlY3V0ZWQgb25jZSBhdFxuICogdGhlIHN0YXJ0IG9mIGEgbmV3IGVzbGludCBydW5cbiAqL1xubGV0IHNyY0ZpbGVzXG5sZXQgbGFzdFByZXBhcmVLZXlcbmNvbnN0IGRvUHJlcGFyYXRpb24gPSAoc3JjLCBpZ25vcmVFeHBvcnRzLCBjb250ZXh0KSA9PiB7XG4gIGNvbnN0IHByZXBhcmVLZXkgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgc3JjOiAoc3JjIHx8IFtdKS5zb3J0KCksXG4gICAgaWdub3JlRXhwb3J0czogKGlnbm9yZUV4cG9ydHMgfHwgW10pLnNvcnQoKSxcbiAgICBleHRlbnNpb25zOiBBcnJheS5mcm9tKGdldEZpbGVFeHRlbnNpb25zKGNvbnRleHQuc2V0dGluZ3MpKS5zb3J0KCksXG4gIH0pXG4gIGlmIChwcmVwYXJlS2V5ID09PSBsYXN0UHJlcGFyZUtleSkge1xuICAgIHJldHVyblxuICB9XG5cbiAgaW1wb3J0TGlzdC5jbGVhcigpXG4gIGV4cG9ydExpc3QuY2xlYXIoKVxuICBpZ25vcmVkRmlsZXMuY2xlYXIoKVxuICBmaWxlc091dHNpZGVTcmMuY2xlYXIoKVxuXG4gIHNyY0ZpbGVzID0gcmVzb2x2ZUZpbGVzKGdldFNyYyhzcmMpLCBpZ25vcmVFeHBvcnRzLCBjb250ZXh0KVxuICBwcmVwYXJlSW1wb3J0c0FuZEV4cG9ydHMoc3JjRmlsZXMsIGNvbnRleHQpXG4gIGRldGVybWluZVVzYWdlKClcbiAgbGFzdFByZXBhcmVLZXkgPSBwcmVwYXJlS2V5XG59XG5cbmNvbnN0IG5ld05hbWVzcGFjZUltcG9ydEV4aXN0cyA9IHNwZWNpZmllcnMgPT5cbiAgc3BlY2lmaWVycy5zb21lKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gSU1QT1JUX05BTUVTUEFDRV9TUEVDSUZJRVIpXG5cbmNvbnN0IG5ld0RlZmF1bHRJbXBvcnRFeGlzdHMgPSBzcGVjaWZpZXJzID0+XG4gIHNwZWNpZmllcnMuc29tZSgoeyB0eXBlIH0pID0+IHR5cGUgPT09IElNUE9SVF9ERUZBVUxUX1NQRUNJRklFUilcblxuY29uc3QgZmlsZUlzSW5Qa2cgPSBmaWxlID0+IHtcbiAgY29uc3QgeyBwYXRoLCBwa2cgfSA9IHJlYWRQa2dVcC5zeW5jKHtjd2Q6IGZpbGUsIG5vcm1hbGl6ZTogZmFsc2V9KVxuICBjb25zdCBiYXNlUGF0aCA9IGRpcm5hbWUocGF0aClcblxuICBjb25zdCBjaGVja1BrZ0ZpZWxkU3RyaW5nID0gcGtnRmllbGQgPT4ge1xuICAgIGlmIChqb2luKGJhc2VQYXRoLCBwa2dGaWVsZCkgPT09IGZpbGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgfVxuXG4gIGNvbnN0IGNoZWNrUGtnRmllbGRPYmplY3QgPSBwa2dGaWVsZCA9PiB7XG4gICAgICBjb25zdCBwa2dGaWVsZEZpbGVzID0gdmFsdWVzKHBrZ0ZpZWxkKS5tYXAodmFsdWUgPT4gam9pbihiYXNlUGF0aCwgdmFsdWUpKVxuICAgICAgaWYgKGluY2x1ZGVzKHBrZ0ZpZWxkRmlsZXMsIGZpbGUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gIH1cblxuICBjb25zdCBjaGVja1BrZ0ZpZWxkID0gcGtnRmllbGQgPT4ge1xuICAgIGlmICh0eXBlb2YgcGtnRmllbGQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gY2hlY2tQa2dGaWVsZFN0cmluZyhwa2dGaWVsZClcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHBrZ0ZpZWxkID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGNoZWNrUGtnRmllbGRPYmplY3QocGtnRmllbGQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHBrZy5wcml2YXRlID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpZiAocGtnLmJpbikge1xuICAgIGlmIChjaGVja1BrZ0ZpZWxkKHBrZy5iaW4pKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChwa2cuYnJvd3Nlcikge1xuICAgIGlmIChjaGVja1BrZ0ZpZWxkKHBrZy5icm93c2VyKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH1cblxuICBpZiAocGtnLm1haW4pIHtcbiAgICBpZiAoY2hlY2tQa2dGaWVsZFN0cmluZyhwa2cubWFpbikpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHsgdXJsOiBkb2NzVXJsKCduby11bnVzZWQtbW9kdWxlcycpIH0sXG4gICAgc2NoZW1hOiBbe1xuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBzcmM6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ2ZpbGVzL3BhdGhzIHRvIGJlIGFuYWx5emVkIChvbmx5IGZvciB1bnVzZWQgZXhwb3J0cyknLFxuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgbWluSXRlbXM6IDEsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgbWluTGVuZ3RoOiAxLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGlnbm9yZUV4cG9ydHM6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdmaWxlcy9wYXRocyBmb3Igd2hpY2ggdW51c2VkIGV4cG9ydHMgd2lsbCBub3QgYmUgcmVwb3J0ZWQgKGUuZyBtb2R1bGUgZW50cnkgcG9pbnRzKScsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICBtaW5JdGVtczogMSxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICBtaW5MZW5ndGg6IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgbWlzc2luZ0V4cG9ydHM6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ3JlcG9ydCBtb2R1bGVzIHdpdGhvdXQgYW55IGV4cG9ydHMnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgdW51c2VkRXhwb3J0czoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAncmVwb3J0IGV4cG9ydHMgd2l0aG91dCBhbnkgdXNhZ2UnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBub3Q6IHtcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHVudXNlZEV4cG9ydHM6IHsgZW51bTogW2ZhbHNlXSB9LFxuICAgICAgICAgIG1pc3NpbmdFeHBvcnRzOiB7IGVudW06IFtmYWxzZV0gfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBhbnlPZjpbe1xuICAgICAgICBub3Q6IHtcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICB1bnVzZWRFeHBvcnRzOiB7IGVudW06IFt0cnVlXSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ21pc3NpbmdFeHBvcnRzJ10sXG4gICAgICB9LCB7XG4gICAgICAgIG5vdDoge1xuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIG1pc3NpbmdFeHBvcnRzOiB7IGVudW06IFt0cnVlXSB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ3VudXNlZEV4cG9ydHMnXSxcbiAgICAgIH0sIHtcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHVudXNlZEV4cG9ydHM6IHsgZW51bTogW3RydWVdIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJlcXVpcmVkOiBbJ3VudXNlZEV4cG9ydHMnXSxcbiAgICAgIH0sIHtcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIG1pc3NpbmdFeHBvcnRzOiB7IGVudW06IFt0cnVlXSB9LFxuICAgICAgICB9LFxuICAgICAgICByZXF1aXJlZDogWydtaXNzaW5nRXhwb3J0cyddLFxuICAgICAgfV0sXG4gICAgfV0sXG4gIH0sXG5cbiAgY3JlYXRlOiBjb250ZXh0ID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBzcmMsXG4gICAgICBpZ25vcmVFeHBvcnRzID0gW10sXG4gICAgICBtaXNzaW5nRXhwb3J0cyxcbiAgICAgIHVudXNlZEV4cG9ydHMsXG4gICAgfSA9IGNvbnRleHQub3B0aW9uc1swXSB8fCB7fVxuXG4gICAgaWYgKHVudXNlZEV4cG9ydHMpIHtcbiAgICAgIGRvUHJlcGFyYXRpb24oc3JjLCBpZ25vcmVFeHBvcnRzLCBjb250ZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGZpbGUgPSBjb250ZXh0LmdldEZpbGVuYW1lKClcblxuICAgIGNvbnN0IGNoZWNrRXhwb3J0UHJlc2VuY2UgPSBub2RlID0+IHtcbiAgICAgIGlmICghbWlzc2luZ0V4cG9ydHMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChpZ25vcmVkRmlsZXMuaGFzKGZpbGUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBleHBvcnRDb3VudCA9IGV4cG9ydExpc3QuZ2V0KGZpbGUpXG4gICAgICBjb25zdCBleHBvcnRBbGwgPSBleHBvcnRDb3VudC5nZXQoRVhQT1JUX0FMTF9ERUNMQVJBVElPTilcbiAgICAgIGNvbnN0IG5hbWVzcGFjZUltcG9ydHMgPSBleHBvcnRDb3VudC5nZXQoSU1QT1JUX05BTUVTUEFDRV9TUEVDSUZJRVIpXG5cbiAgICAgIGV4cG9ydENvdW50LmRlbGV0ZShFWFBPUlRfQUxMX0RFQ0xBUkFUSU9OKVxuICAgICAgZXhwb3J0Q291bnQuZGVsZXRlKElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSKVxuICAgICAgaWYgKGV4cG9ydENvdW50LnNpemUgPCAxKSB7XG4gICAgICAgIC8vIG5vZGUuYm9keVswXSA9PT0gJ3VuZGVmaW5lZCcgb25seSBoYXBwZW5zLCBpZiBldmVyeXRoaW5nIGlzIGNvbW1lbnRlZCBvdXQgaW4gdGhlIGZpbGVcbiAgICAgICAgLy8gYmVpbmcgbGludGVkXG4gICAgICAgIGNvbnRleHQucmVwb3J0KG5vZGUuYm9keVswXSA/IG5vZGUuYm9keVswXSA6IG5vZGUsICdObyBleHBvcnRzIGZvdW5kJylcbiAgICAgIH1cbiAgICAgIGV4cG9ydENvdW50LnNldChFWFBPUlRfQUxMX0RFQ0xBUkFUSU9OLCBleHBvcnRBbGwpXG4gICAgICBleHBvcnRDb3VudC5zZXQoSU1QT1JUX05BTUVTUEFDRV9TUEVDSUZJRVIsIG5hbWVzcGFjZUltcG9ydHMpXG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tVc2FnZSA9IChub2RlLCBleHBvcnRlZFZhbHVlKSA9PiB7XG4gICAgICBpZiAoIXVudXNlZEV4cG9ydHMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChpZ25vcmVkRmlsZXMuaGFzKGZpbGUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBpZiAoZmlsZUlzSW5Qa2coZmlsZSkpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGlmIChmaWxlc091dHNpZGVTcmMuaGFzKGZpbGUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBtYWtlIHN1cmUgZmlsZSB0byBiZSBsaW50ZWQgaXMgaW5jbHVkZWQgaW4gc291cmNlIGZpbGVzXG4gICAgICBpZiAoIXNyY0ZpbGVzLmhhcyhmaWxlKSkge1xuICAgICAgICBzcmNGaWxlcyA9IHJlc29sdmVGaWxlcyhnZXRTcmMoc3JjKSwgaWdub3JlRXhwb3J0cywgY29udGV4dClcbiAgICAgICAgaWYgKCFzcmNGaWxlcy5oYXMoZmlsZSkpIHtcbiAgICAgICAgICBmaWxlc091dHNpZGVTcmMuYWRkKGZpbGUpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KGZpbGUpXG5cbiAgICAgIC8vIHNwZWNpYWwgY2FzZTogZXhwb3J0ICogZnJvbVxuICAgICAgY29uc3QgZXhwb3J0QWxsID0gZXhwb3J0cy5nZXQoRVhQT1JUX0FMTF9ERUNMQVJBVElPTilcbiAgICAgIGlmICh0eXBlb2YgZXhwb3J0QWxsICE9PSAndW5kZWZpbmVkJyAmJiBleHBvcnRlZFZhbHVlICE9PSBJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIpIHtcbiAgICAgICAgaWYgKGV4cG9ydEFsbC53aGVyZVVzZWQuc2l6ZSA+IDApIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBzcGVjaWFsIGNhc2U6IG5hbWVzcGFjZSBpbXBvcnRcbiAgICAgIGNvbnN0IG5hbWVzcGFjZUltcG9ydHMgPSBleHBvcnRzLmdldChJTVBPUlRfTkFNRVNQQUNFX1NQRUNJRklFUilcbiAgICAgIGlmICh0eXBlb2YgbmFtZXNwYWNlSW1wb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaWYgKG5hbWVzcGFjZUltcG9ydHMud2hlcmVVc2VkLnNpemUgPiAwKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZXhwb3J0c0xpc3Qgd2lsbCBhbHdheXMgbWFwIGFueSBpbXBvcnRlZCB2YWx1ZSBvZiAnZGVmYXVsdCcgdG8gJ0ltcG9ydERlZmF1bHRTcGVjaWZpZXInXG4gICAgICBjb25zdCBleHBvcnRzS2V5ID0gZXhwb3J0ZWRWYWx1ZSA9PT0gREVGQVVMVCA/IElNUE9SVF9ERUZBVUxUX1NQRUNJRklFUiA6IGV4cG9ydGVkVmFsdWVcblxuICAgICAgY29uc3QgZXhwb3J0U3RhdGVtZW50ID0gZXhwb3J0cy5nZXQoZXhwb3J0c0tleSlcblxuICAgICAgY29uc3QgdmFsdWUgPSBleHBvcnRzS2V5ID09PSBJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIgPyBERUZBVUxUIDogZXhwb3J0c0tleVxuXG4gICAgICBpZiAodHlwZW9mIGV4cG9ydFN0YXRlbWVudCAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICBpZiAoZXhwb3J0U3RhdGVtZW50LndoZXJlVXNlZC5zaXplIDwgMSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KFxuICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgIGBleHBvcnRlZCBkZWNsYXJhdGlvbiAnJHt2YWx1ZX0nIG5vdCB1c2VkIHdpdGhpbiBvdGhlciBtb2R1bGVzYFxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQoXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBgZXhwb3J0ZWQgZGVjbGFyYXRpb24gJyR7dmFsdWV9JyBub3QgdXNlZCB3aXRoaW4gb3RoZXIgbW9kdWxlc2BcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG9ubHkgdXNlZnVsIGZvciB0b29scyBsaWtlIHZzY29kZS1lc2xpbnRcbiAgICAgKlxuICAgICAqIHVwZGF0ZSBsaXN0cyBvZiBleGlzdGluZyBleHBvcnRzIGR1cmluZyBydW50aW1lXG4gICAgICovXG4gICAgY29uc3QgdXBkYXRlRXhwb3J0VXNhZ2UgPSBub2RlID0+IHtcbiAgICAgIGlmIChpZ25vcmVkRmlsZXMuaGFzKGZpbGUpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBsZXQgZXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KGZpbGUpXG5cbiAgICAgIC8vIG5ldyBtb2R1bGUgaGFzIGJlZW4gY3JlYXRlZCBkdXJpbmcgcnVudGltZVxuICAgICAgLy8gaW5jbHVkZSBpdCBpbiBmdXJ0aGVyIHByb2Nlc3NpbmdcbiAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZXhwb3J0cyA9IG5ldyBNYXAoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdFeHBvcnRzID0gbmV3IE1hcCgpXG4gICAgICBjb25zdCBuZXdFeHBvcnRJZGVudGlmaWVycyA9IG5ldyBTZXQoKVxuXG4gICAgICBub2RlLmJvZHkuZm9yRWFjaCgoeyB0eXBlLCBkZWNsYXJhdGlvbiwgc3BlY2lmaWVycyB9KSA9PiB7XG4gICAgICAgIGlmICh0eXBlID09PSBFWFBPUlRfREVGQVVMVF9ERUNMQVJBVElPTikge1xuICAgICAgICAgIG5ld0V4cG9ydElkZW50aWZpZXJzLmFkZChJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGUgPT09IEVYUE9SVF9OQU1FRF9ERUNMQVJBVElPTikge1xuICAgICAgICAgIGlmIChzcGVjaWZpZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHNwZWNpZmllcnMuZm9yRWFjaChzcGVjaWZpZXIgPT4ge1xuICAgICAgICAgICAgICBpZiAoc3BlY2lmaWVyLmV4cG9ydGVkKSB7XG4gICAgICAgICAgICAgICAgbmV3RXhwb3J0SWRlbnRpZmllcnMuYWRkKHNwZWNpZmllci5leHBvcnRlZC5uYW1lKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGVjbGFyYXRpb24pIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgZGVjbGFyYXRpb24udHlwZSA9PT0gRlVOQ1RJT05fREVDTEFSQVRJT04gfHxcbiAgICAgICAgICAgICAgZGVjbGFyYXRpb24udHlwZSA9PT0gQ0xBU1NfREVDTEFSQVRJT04gfHxcbiAgICAgICAgICAgICAgZGVjbGFyYXRpb24udHlwZSA9PT0gVFlQRV9BTElBU1xuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIG5ld0V4cG9ydElkZW50aWZpZXJzLmFkZChkZWNsYXJhdGlvbi5pZC5uYW1lKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRlY2xhcmF0aW9uLnR5cGUgPT09IFZBUklBQkxFX0RFQ0xBUkFUSU9OKSB7XG4gICAgICAgICAgICAgIGRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucy5mb3JFYWNoKCh7IGlkIH0pID0+IHtcbiAgICAgICAgICAgICAgICBuZXdFeHBvcnRJZGVudGlmaWVycy5hZGQoaWQubmFtZSlcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIC8vIG9sZCBleHBvcnRzIGV4aXN0IHdpdGhpbiBsaXN0IG9mIG5ldyBleHBvcnRzIGlkZW50aWZpZXJzOiBhZGQgdG8gbWFwIG9mIG5ldyBleHBvcnRzXG4gICAgICBleHBvcnRzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKG5ld0V4cG9ydElkZW50aWZpZXJzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgbmV3RXhwb3J0cy5zZXQoa2V5LCB2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gbmV3IGV4cG9ydCBpZGVudGlmaWVycyBhZGRlZDogYWRkIHRvIG1hcCBvZiBuZXcgZXhwb3J0c1xuICAgICAgbmV3RXhwb3J0SWRlbnRpZmllcnMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBpZiAoIWV4cG9ydHMuaGFzKGtleSkpIHtcbiAgICAgICAgICBuZXdFeHBvcnRzLnNldChrZXksIHsgd2hlcmVVc2VkOiBuZXcgU2V0KCkgfSlcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgLy8gcHJlc2VydmUgaW5mb3JtYXRpb24gYWJvdXQgbmFtZXNwYWNlIGltcG9ydHNcbiAgICAgIGxldCBleHBvcnRBbGwgPSBleHBvcnRzLmdldChFWFBPUlRfQUxMX0RFQ0xBUkFUSU9OKVxuICAgICAgbGV0IG5hbWVzcGFjZUltcG9ydHMgPSBleHBvcnRzLmdldChJTVBPUlRfTkFNRVNQQUNFX1NQRUNJRklFUilcblxuICAgICAgaWYgKHR5cGVvZiBuYW1lc3BhY2VJbXBvcnRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBuYW1lc3BhY2VJbXBvcnRzID0geyB3aGVyZVVzZWQ6IG5ldyBTZXQoKSB9XG4gICAgICB9XG5cbiAgICAgIG5ld0V4cG9ydHMuc2V0KEVYUE9SVF9BTExfREVDTEFSQVRJT04sIGV4cG9ydEFsbClcbiAgICAgIG5ld0V4cG9ydHMuc2V0KElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSLCBuYW1lc3BhY2VJbXBvcnRzKVxuICAgICAgZXhwb3J0TGlzdC5zZXQoZmlsZSwgbmV3RXhwb3J0cylcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBvbmx5IHVzZWZ1bCBmb3IgdG9vbHMgbGlrZSB2c2NvZGUtZXNsaW50XG4gICAgICpcbiAgICAgKiB1cGRhdGUgbGlzdHMgb2YgZXhpc3RpbmcgaW1wb3J0cyBkdXJpbmcgcnVudGltZVxuICAgICAqL1xuICAgIGNvbnN0IHVwZGF0ZUltcG9ydFVzYWdlID0gbm9kZSA9PiB7XG4gICAgICBpZiAoIXVudXNlZEV4cG9ydHMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGxldCBvbGRJbXBvcnRQYXRocyA9IGltcG9ydExpc3QuZ2V0KGZpbGUpXG4gICAgICBpZiAodHlwZW9mIG9sZEltcG9ydFBhdGhzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBvbGRJbXBvcnRQYXRocyA9IG5ldyBNYXAoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBvbGROYW1lc3BhY2VJbXBvcnRzID0gbmV3IFNldCgpXG4gICAgICBjb25zdCBuZXdOYW1lc3BhY2VJbXBvcnRzID0gbmV3IFNldCgpXG5cbiAgICAgIGNvbnN0IG9sZEV4cG9ydEFsbCA9IG5ldyBTZXQoKVxuICAgICAgY29uc3QgbmV3RXhwb3J0QWxsID0gbmV3IFNldCgpXG5cbiAgICAgIGNvbnN0IG9sZERlZmF1bHRJbXBvcnRzID0gbmV3IFNldCgpXG4gICAgICBjb25zdCBuZXdEZWZhdWx0SW1wb3J0cyA9IG5ldyBTZXQoKVxuXG4gICAgICBjb25zdCBvbGRJbXBvcnRzID0gbmV3IE1hcCgpXG4gICAgICBjb25zdCBuZXdJbXBvcnRzID0gbmV3IE1hcCgpXG4gICAgICBvbGRJbXBvcnRQYXRocy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZS5oYXMoRVhQT1JUX0FMTF9ERUNMQVJBVElPTikpIHtcbiAgICAgICAgICBvbGRFeHBvcnRBbGwuYWRkKGtleSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuaGFzKElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSKSkge1xuICAgICAgICAgIG9sZE5hbWVzcGFjZUltcG9ydHMuYWRkKGtleSlcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUuaGFzKElNUE9SVF9ERUZBVUxUX1NQRUNJRklFUikpIHtcbiAgICAgICAgICBvbGREZWZhdWx0SW1wb3J0cy5hZGQoa2V5KVxuICAgICAgICB9XG4gICAgICAgIHZhbHVlLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgICBpZiAodmFsICE9PSBJTVBPUlRfTkFNRVNQQUNFX1NQRUNJRklFUiAmJlxuICAgICAgICAgICAgICB2YWwgIT09IElNUE9SVF9ERUZBVUxUX1NQRUNJRklFUikge1xuICAgICAgICAgICAgICAgb2xkSW1wb3J0cy5zZXQodmFsLCBrZXkpXG4gICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgbm9kZS5ib2R5LmZvckVhY2goYXN0Tm9kZSA9PiB7XG4gICAgICAgIGxldCByZXNvbHZlZFBhdGhcblxuICAgICAgICAvLyBzdXBwb3J0IGZvciBleHBvcnQgeyB2YWx1ZSB9IGZyb20gJ21vZHVsZSdcbiAgICAgICAgaWYgKGFzdE5vZGUudHlwZSA9PT0gRVhQT1JUX05BTUVEX0RFQ0xBUkFUSU9OKSB7XG4gICAgICAgICAgaWYgKGFzdE5vZGUuc291cmNlKSB7XG4gICAgICAgICAgICByZXNvbHZlZFBhdGggPSByZXNvbHZlKGFzdE5vZGUuc291cmNlLnJhdy5yZXBsYWNlKC8oJ3xcIikvZywgJycpLCBjb250ZXh0KVxuICAgICAgICAgICAgYXN0Tm9kZS5zcGVjaWZpZXJzLmZvckVhY2goc3BlY2lmaWVyID0+IHtcbiAgICAgICAgICAgICAgbGV0IG5hbWVcbiAgICAgICAgICAgICAgaWYgKHNwZWNpZmllci5leHBvcnRlZC5uYW1lID09PSBERUZBVUxUKSB7XG4gICAgICAgICAgICAgICAgbmFtZSA9IElNUE9SVF9ERUZBVUxUX1NQRUNJRklFUlxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBzcGVjaWZpZXIubG9jYWwubmFtZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG5ld0ltcG9ydHMuc2V0KG5hbWUsIHJlc29sdmVkUGF0aClcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFzdE5vZGUudHlwZSA9PT0gRVhQT1JUX0FMTF9ERUNMQVJBVElPTikge1xuICAgICAgICAgIHJlc29sdmVkUGF0aCA9IHJlc29sdmUoYXN0Tm9kZS5zb3VyY2UucmF3LnJlcGxhY2UoLygnfFwiKS9nLCAnJyksIGNvbnRleHQpXG4gICAgICAgICAgbmV3RXhwb3J0QWxsLmFkZChyZXNvbHZlZFBhdGgpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXN0Tm9kZS50eXBlID09PSBJTVBPUlRfREVDTEFSQVRJT04pIHtcbiAgICAgICAgICByZXNvbHZlZFBhdGggPSByZXNvbHZlKGFzdE5vZGUuc291cmNlLnJhdy5yZXBsYWNlKC8oJ3xcIikvZywgJycpLCBjb250ZXh0KVxuICAgICAgICAgIGlmICghcmVzb2x2ZWRQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNOb2RlTW9kdWxlKHJlc29sdmVkUGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChuZXdOYW1lc3BhY2VJbXBvcnRFeGlzdHMoYXN0Tm9kZS5zcGVjaWZpZXJzKSkge1xuICAgICAgICAgICAgbmV3TmFtZXNwYWNlSW1wb3J0cy5hZGQocmVzb2x2ZWRQYXRoKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChuZXdEZWZhdWx0SW1wb3J0RXhpc3RzKGFzdE5vZGUuc3BlY2lmaWVycykpIHtcbiAgICAgICAgICAgIG5ld0RlZmF1bHRJbXBvcnRzLmFkZChyZXNvbHZlZFBhdGgpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYXN0Tm9kZS5zcGVjaWZpZXJzLmZvckVhY2goc3BlY2lmaWVyID0+IHtcbiAgICAgICAgICAgIGlmIChzcGVjaWZpZXIudHlwZSA9PT0gSU1QT1JUX0RFRkFVTFRfU1BFQ0lGSUVSIHx8XG4gICAgICAgICAgICAgICAgc3BlY2lmaWVyLnR5cGUgPT09IElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSKSB7XG4gICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3SW1wb3J0cy5zZXQoc3BlY2lmaWVyLmltcG9ydGVkLm5hbWUsIHJlc29sdmVkUGF0aClcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBuZXdFeHBvcnRBbGwuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICghb2xkRXhwb3J0QWxsLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICBsZXQgaW1wb3J0cyA9IG9sZEltcG9ydFBhdGhzLmdldCh2YWx1ZSlcbiAgICAgICAgICBpZiAodHlwZW9mIGltcG9ydHMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpbXBvcnRzID0gbmV3IFNldCgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGltcG9ydHMuYWRkKEVYUE9SVF9BTExfREVDTEFSQVRJT04pXG4gICAgICAgICAgb2xkSW1wb3J0UGF0aHMuc2V0KHZhbHVlLCBpbXBvcnRzKVxuXG4gICAgICAgICAgbGV0IGV4cG9ydHMgPSBleHBvcnRMaXN0LmdldCh2YWx1ZSlcbiAgICAgICAgICBsZXQgY3VycmVudEV4cG9ydFxuICAgICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGN1cnJlbnRFeHBvcnQgPSBleHBvcnRzLmdldChFWFBPUlRfQUxMX0RFQ0xBUkFUSU9OKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBleHBvcnRzID0gbmV3IE1hcCgpXG4gICAgICAgICAgICBleHBvcnRMaXN0LnNldCh2YWx1ZSwgZXhwb3J0cylcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRFeHBvcnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjdXJyZW50RXhwb3J0LndoZXJlVXNlZC5hZGQoZmlsZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgd2hlcmVVc2VkID0gbmV3IFNldCgpXG4gICAgICAgICAgICB3aGVyZVVzZWQuYWRkKGZpbGUpXG4gICAgICAgICAgICBleHBvcnRzLnNldChFWFBPUlRfQUxMX0RFQ0xBUkFUSU9OLCB7IHdoZXJlVXNlZCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgb2xkRXhwb3J0QWxsLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBpZiAoIW5ld0V4cG9ydEFsbC5oYXModmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgaW1wb3J0cyA9IG9sZEltcG9ydFBhdGhzLmdldCh2YWx1ZSlcbiAgICAgICAgICBpbXBvcnRzLmRlbGV0ZShFWFBPUlRfQUxMX0RFQ0xBUkFUSU9OKVxuXG4gICAgICAgICAgY29uc3QgZXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KHZhbHVlKVxuICAgICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFeHBvcnQgPSBleHBvcnRzLmdldChFWFBPUlRfQUxMX0RFQ0xBUkFUSU9OKVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RXhwb3J0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICBjdXJyZW50RXhwb3J0LndoZXJlVXNlZC5kZWxldGUoZmlsZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIG5ld0RlZmF1bHRJbXBvcnRzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICBpZiAoIW9sZERlZmF1bHRJbXBvcnRzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICBsZXQgaW1wb3J0cyA9IG9sZEltcG9ydFBhdGhzLmdldCh2YWx1ZSlcbiAgICAgICAgICBpZiAodHlwZW9mIGltcG9ydHMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpbXBvcnRzID0gbmV3IFNldCgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGltcG9ydHMuYWRkKElNUE9SVF9ERUZBVUxUX1NQRUNJRklFUilcbiAgICAgICAgICBvbGRJbXBvcnRQYXRocy5zZXQodmFsdWUsIGltcG9ydHMpXG5cbiAgICAgICAgICBsZXQgZXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KHZhbHVlKVxuICAgICAgICAgIGxldCBjdXJyZW50RXhwb3J0XG4gICAgICAgICAgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY3VycmVudEV4cG9ydCA9IGV4cG9ydHMuZ2V0KElNUE9SVF9ERUZBVUxUX1NQRUNJRklFUilcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXhwb3J0cyA9IG5ldyBNYXAoKVxuICAgICAgICAgICAgZXhwb3J0TGlzdC5zZXQodmFsdWUsIGV4cG9ydHMpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RXhwb3J0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY3VycmVudEV4cG9ydC53aGVyZVVzZWQuYWRkKGZpbGUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHdoZXJlVXNlZCA9IG5ldyBTZXQoKVxuICAgICAgICAgICAgd2hlcmVVc2VkLmFkZChmaWxlKVxuICAgICAgICAgICAgZXhwb3J0cy5zZXQoSU1QT1JUX0RFRkFVTFRfU1BFQ0lGSUVSLCB7IHdoZXJlVXNlZCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgb2xkRGVmYXVsdEltcG9ydHMuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICghbmV3RGVmYXVsdEltcG9ydHMuaGFzKHZhbHVlKSkge1xuICAgICAgICAgIGNvbnN0IGltcG9ydHMgPSBvbGRJbXBvcnRQYXRocy5nZXQodmFsdWUpXG4gICAgICAgICAgaW1wb3J0cy5kZWxldGUoSU1QT1JUX0RFRkFVTFRfU1BFQ0lGSUVSKVxuXG4gICAgICAgICAgY29uc3QgZXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KHZhbHVlKVxuICAgICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFeHBvcnQgPSBleHBvcnRzLmdldChJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIpXG4gICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRFeHBvcnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRFeHBvcnQud2hlcmVVc2VkLmRlbGV0ZShmaWxlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgbmV3TmFtZXNwYWNlSW1wb3J0cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKCFvbGROYW1lc3BhY2VJbXBvcnRzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICBsZXQgaW1wb3J0cyA9IG9sZEltcG9ydFBhdGhzLmdldCh2YWx1ZSlcbiAgICAgICAgICBpZiAodHlwZW9mIGltcG9ydHMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBpbXBvcnRzID0gbmV3IFNldCgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGltcG9ydHMuYWRkKElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSKVxuICAgICAgICAgIG9sZEltcG9ydFBhdGhzLnNldCh2YWx1ZSwgaW1wb3J0cylcblxuICAgICAgICAgIGxldCBleHBvcnRzID0gZXhwb3J0TGlzdC5nZXQodmFsdWUpXG4gICAgICAgICAgbGV0IGN1cnJlbnRFeHBvcnRcbiAgICAgICAgICBpZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjdXJyZW50RXhwb3J0ID0gZXhwb3J0cy5nZXQoSU1QT1JUX05BTUVTUEFDRV9TUEVDSUZJRVIpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cG9ydHMgPSBuZXcgTWFwKClcbiAgICAgICAgICAgIGV4cG9ydExpc3Quc2V0KHZhbHVlLCBleHBvcnRzKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudEV4cG9ydCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGN1cnJlbnRFeHBvcnQud2hlcmVVc2VkLmFkZChmaWxlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB3aGVyZVVzZWQgPSBuZXcgU2V0KClcbiAgICAgICAgICAgIHdoZXJlVXNlZC5hZGQoZmlsZSlcbiAgICAgICAgICAgIGV4cG9ydHMuc2V0KElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSLCB7IHdoZXJlVXNlZCB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgb2xkTmFtZXNwYWNlSW1wb3J0cy5mb3JFYWNoKHZhbHVlID0+IHtcbiAgICAgICAgaWYgKCFuZXdOYW1lc3BhY2VJbXBvcnRzLmhhcyh2YWx1ZSkpIHtcbiAgICAgICAgICBjb25zdCBpbXBvcnRzID0gb2xkSW1wb3J0UGF0aHMuZ2V0KHZhbHVlKVxuICAgICAgICAgIGltcG9ydHMuZGVsZXRlKElNUE9SVF9OQU1FU1BBQ0VfU1BFQ0lGSUVSKVxuXG4gICAgICAgICAgY29uc3QgZXhwb3J0cyA9IGV4cG9ydExpc3QuZ2V0KHZhbHVlKVxuICAgICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFeHBvcnQgPSBleHBvcnRzLmdldChJTVBPUlRfTkFNRVNQQUNFX1NQRUNJRklFUilcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudEV4cG9ydCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgY3VycmVudEV4cG9ydC53aGVyZVVzZWQuZGVsZXRlKGZpbGUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBuZXdJbXBvcnRzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgaWYgKCFvbGRJbXBvcnRzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgbGV0IGltcG9ydHMgPSBvbGRJbXBvcnRQYXRocy5nZXQodmFsdWUpXG4gICAgICAgICAgaWYgKHR5cGVvZiBpbXBvcnRzID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaW1wb3J0cyA9IG5ldyBTZXQoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpbXBvcnRzLmFkZChrZXkpXG4gICAgICAgICAgb2xkSW1wb3J0UGF0aHMuc2V0KHZhbHVlLCBpbXBvcnRzKVxuXG4gICAgICAgICAgbGV0IGV4cG9ydHMgPSBleHBvcnRMaXN0LmdldCh2YWx1ZSlcbiAgICAgICAgICBsZXQgY3VycmVudEV4cG9ydFxuICAgICAgICAgIGlmICh0eXBlb2YgZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGN1cnJlbnRFeHBvcnQgPSBleHBvcnRzLmdldChrZXkpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGV4cG9ydHMgPSBuZXcgTWFwKClcbiAgICAgICAgICAgIGV4cG9ydExpc3Quc2V0KHZhbHVlLCBleHBvcnRzKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0eXBlb2YgY3VycmVudEV4cG9ydCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGN1cnJlbnRFeHBvcnQud2hlcmVVc2VkLmFkZChmaWxlKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB3aGVyZVVzZWQgPSBuZXcgU2V0KClcbiAgICAgICAgICAgIHdoZXJlVXNlZC5hZGQoZmlsZSlcbiAgICAgICAgICAgIGV4cG9ydHMuc2V0KGtleSwgeyB3aGVyZVVzZWQgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG5cbiAgICAgIG9sZEltcG9ydHMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIW5ld0ltcG9ydHMuaGFzKGtleSkpIHtcbiAgICAgICAgICBjb25zdCBpbXBvcnRzID0gb2xkSW1wb3J0UGF0aHMuZ2V0KHZhbHVlKVxuICAgICAgICAgIGltcG9ydHMuZGVsZXRlKGtleSlcblxuICAgICAgICAgIGNvbnN0IGV4cG9ydHMgPSBleHBvcnRMaXN0LmdldCh2YWx1ZSlcbiAgICAgICAgICBpZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RXhwb3J0ID0gZXhwb3J0cy5nZXQoa2V5KVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50RXhwb3J0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICBjdXJyZW50RXhwb3J0LndoZXJlVXNlZC5kZWxldGUoZmlsZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdQcm9ncmFtOmV4aXQnOiBub2RlID0+IHtcbiAgICAgICAgdXBkYXRlRXhwb3J0VXNhZ2Uobm9kZSlcbiAgICAgICAgdXBkYXRlSW1wb3J0VXNhZ2Uobm9kZSlcbiAgICAgICAgY2hlY2tFeHBvcnRQcmVzZW5jZShub2RlKVxuICAgICAgfSxcbiAgICAgICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nOiBub2RlID0+IHtcbiAgICAgICAgY2hlY2tVc2FnZShub2RlLCBJTVBPUlRfREVGQVVMVF9TUEVDSUZJRVIpXG4gICAgICB9LFxuICAgICAgJ0V4cG9ydE5hbWVkRGVjbGFyYXRpb24nOiBub2RlID0+IHtcbiAgICAgICAgbm9kZS5zcGVjaWZpZXJzLmZvckVhY2goc3BlY2lmaWVyID0+IHtcbiAgICAgICAgICAgIGNoZWNrVXNhZ2Uobm9kZSwgc3BlY2lmaWVyLmV4cG9ydGVkLm5hbWUpXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChub2RlLmRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgbm9kZS5kZWNsYXJhdGlvbi50eXBlID09PSBGVU5DVElPTl9ERUNMQVJBVElPTiB8fFxuICAgICAgICAgICAgbm9kZS5kZWNsYXJhdGlvbi50eXBlID09PSBDTEFTU19ERUNMQVJBVElPTiB8fFxuICAgICAgICAgICAgbm9kZS5kZWNsYXJhdGlvbi50eXBlID09PSBUWVBFX0FMSUFTXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjaGVja1VzYWdlKG5vZGUsIG5vZGUuZGVjbGFyYXRpb24uaWQubmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG5vZGUuZGVjbGFyYXRpb24udHlwZSA9PT0gVkFSSUFCTEVfREVDTEFSQVRJT04pIHtcbiAgICAgICAgICAgIG5vZGUuZGVjbGFyYXRpb24uZGVjbGFyYXRpb25zLmZvckVhY2goZGVjbGFyYXRpb24gPT4ge1xuICAgICAgICAgICAgICBjaGVja1VzYWdlKG5vZGUsIGRlY2xhcmF0aW9uLmlkLm5hbWUpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-useless-path-segments.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-useless-path-segments.js new file mode 100644 index 0000000..e4c6d2b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-useless-path-segments.js @@ -0,0 +1,151 @@ +'use strict'; + +var _ignore = require('eslint-module-utils/ignore'); + +var _moduleVisitor = require('eslint-module-utils/moduleVisitor'); + +var _moduleVisitor2 = _interopRequireDefault(_moduleVisitor); + +var _resolve = require('eslint-module-utils/resolve'); + +var _resolve2 = _interopRequireDefault(_resolve); + +var _path = require('path'); + +var _path2 = _interopRequireDefault(_path); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * convert a potentially relative path from node utils into a true + * relative path. + * + * ../ -> .. + * ./ -> . + * .foo/bar -> ./.foo/bar + * ..foo/bar -> ./..foo/bar + * foo/bar -> ./foo/bar + * + * @param relativePath {string} relative posix path potentially missing leading './' + * @returns {string} relative posix path that always starts with a ./ + **/ +function toRelativePath(relativePath) { + const stripped = relativePath.replace(/\/$/g, ''); // Remove trailing / + + return (/^((\.\.)|(\.))($|\/)/.test(stripped) ? stripped : `./${stripped}` + ); +} /** + * @fileOverview Ensures that there are no useless path segments + * @author Thomas Grainger + */ + +function normalize(fn) { + return toRelativePath(_path2.default.posix.normalize(fn)); +} + +function countRelativeParents(pathSegments) { + return pathSegments.reduce((sum, pathSegment) => pathSegment === '..' ? sum + 1 : sum, 0); +} + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('no-useless-path-segments') + }, + + fixable: 'code', + + schema: [{ + type: 'object', + properties: { + commonjs: { type: 'boolean' }, + noUselessIndex: { type: 'boolean' } + }, + additionalProperties: false + }] + }, + + create(context) { + const currentDir = _path2.default.dirname(context.getFilename()); + const options = context.options[0]; + + function checkSourceValue(source) { + const importPath = source.value; + + + function reportWithProposedPath(proposedPath) { + context.report({ + node: source, + // Note: Using messageIds is not possible due to the support for ESLint 2 and 3 + message: `Useless path segments for "${importPath}", should be "${proposedPath}"`, + fix: fixer => proposedPath && fixer.replaceText(source, JSON.stringify(proposedPath)) + }); + } + + // Only relative imports are relevant for this rule --> Skip checking + if (!importPath.startsWith('.')) { + return; + } + + // Report rule violation if path is not the shortest possible + const resolvedPath = (0, _resolve2.default)(importPath, context); + const normedPath = normalize(importPath); + const resolvedNormedPath = (0, _resolve2.default)(normedPath, context); + if (normedPath !== importPath && resolvedPath === resolvedNormedPath) { + return reportWithProposedPath(normedPath); + } + + const fileExtensions = (0, _ignore.getFileExtensions)(context.settings); + const regexUnnecessaryIndex = new RegExp(`.*\\/index(\\${Array.from(fileExtensions).join('|\\')})?$`); + + // Check if path contains unnecessary index (including a configured extension) + if (options && options.noUselessIndex && regexUnnecessaryIndex.test(importPath)) { + const parentDirectory = _path2.default.dirname(importPath); + + // Try to find ambiguous imports + if (parentDirectory !== '.' && parentDirectory !== '..') { + for (let fileExtension of fileExtensions) { + if ((0, _resolve2.default)(`${parentDirectory}${fileExtension}`, context)) { + return reportWithProposedPath(`${parentDirectory}/`); + } + } + } + + return reportWithProposedPath(parentDirectory); + } + + // Path is shortest possible + starts from the current directory --> Return directly + if (importPath.startsWith('./')) { + return; + } + + // Path is not existing --> Return directly (following code requires path to be defined) + if (resolvedPath === undefined) { + return; + } + + const expected = _path2.default.relative(currentDir, resolvedPath); // Expected import path + const expectedSplit = expected.split(_path2.default.sep); // Split by / or \ (depending on OS) + const importPathSplit = importPath.replace(/^\.\//, '').split('/'); + const countImportPathRelativeParents = countRelativeParents(importPathSplit); + const countExpectedRelativeParents = countRelativeParents(expectedSplit); + const diff = countImportPathRelativeParents - countExpectedRelativeParents; + + // Same number of relative parents --> Paths are the same --> Return directly + if (diff <= 0) { + return; + } + + // Report and propose minimal number of required relative parents + return reportWithProposedPath(toRelativePath(importPathSplit.slice(0, countExpectedRelativeParents).concat(importPathSplit.slice(countImportPathRelativeParents + diff)).join('/'))); + } + + return (0, _moduleVisitor2.default)(checkSourceValue, options); + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby11c2VsZXNzLXBhdGgtc2VnbWVudHMuanMiXSwibmFtZXMiOlsidG9SZWxhdGl2ZVBhdGgiLCJyZWxhdGl2ZVBhdGgiLCJzdHJpcHBlZCIsInJlcGxhY2UiLCJ0ZXN0Iiwibm9ybWFsaXplIiwiZm4iLCJwYXRoIiwicG9zaXgiLCJjb3VudFJlbGF0aXZlUGFyZW50cyIsInBhdGhTZWdtZW50cyIsInJlZHVjZSIsInN1bSIsInBhdGhTZWdtZW50IiwibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsImZpeGFibGUiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwiY29tbW9uanMiLCJub1VzZWxlc3NJbmRleCIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiY3JlYXRlIiwiY29udGV4dCIsImN1cnJlbnREaXIiLCJkaXJuYW1lIiwiZ2V0RmlsZW5hbWUiLCJvcHRpb25zIiwiY2hlY2tTb3VyY2VWYWx1ZSIsInNvdXJjZSIsImltcG9ydFBhdGgiLCJ2YWx1ZSIsInJlcG9ydFdpdGhQcm9wb3NlZFBhdGgiLCJwcm9wb3NlZFBhdGgiLCJyZXBvcnQiLCJub2RlIiwibWVzc2FnZSIsImZpeCIsImZpeGVyIiwicmVwbGFjZVRleHQiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRzV2l0aCIsInJlc29sdmVkUGF0aCIsIm5vcm1lZFBhdGgiLCJyZXNvbHZlZE5vcm1lZFBhdGgiLCJmaWxlRXh0ZW5zaW9ucyIsInNldHRpbmdzIiwicmVnZXhVbm5lY2Vzc2FyeUluZGV4IiwiUmVnRXhwIiwiQXJyYXkiLCJmcm9tIiwiam9pbiIsInBhcmVudERpcmVjdG9yeSIsImZpbGVFeHRlbnNpb24iLCJ1bmRlZmluZWQiLCJleHBlY3RlZCIsInJlbGF0aXZlIiwiZXhwZWN0ZWRTcGxpdCIsInNwbGl0Iiwic2VwIiwiaW1wb3J0UGF0aFNwbGl0IiwiY291bnRJbXBvcnRQYXRoUmVsYXRpdmVQYXJlbnRzIiwiY291bnRFeHBlY3RlZFJlbGF0aXZlUGFyZW50cyIsImRpZmYiLCJzbGljZSIsImNvbmNhdCJdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBRUE7Ozs7Ozs7Ozs7Ozs7QUFhQSxTQUFTQSxjQUFULENBQXdCQyxZQUF4QixFQUFzQztBQUNwQyxRQUFNQyxXQUFXRCxhQUFhRSxPQUFiLENBQXFCLE1BQXJCLEVBQTZCLEVBQTdCLENBQWpCLENBRG9DLENBQ2M7O0FBRWxELFNBQU8sd0JBQXVCQyxJQUF2QixDQUE0QkYsUUFBNUIsSUFBd0NBLFFBQXhDLEdBQW9ELEtBQUlBLFFBQVM7QUFBeEU7QUFDRCxDLENBNUJEOzs7OztBQThCQSxTQUFTRyxTQUFULENBQW1CQyxFQUFuQixFQUF1QjtBQUNyQixTQUFPTixlQUFlTyxlQUFLQyxLQUFMLENBQVdILFNBQVgsQ0FBcUJDLEVBQXJCLENBQWYsQ0FBUDtBQUNEOztBQUVELFNBQVNHLG9CQUFULENBQThCQyxZQUE5QixFQUE0QztBQUMxQyxTQUFPQSxhQUFhQyxNQUFiLENBQW9CLENBQUNDLEdBQUQsRUFBTUMsV0FBTixLQUFzQkEsZ0JBQWdCLElBQWhCLEdBQXVCRCxNQUFNLENBQTdCLEdBQWlDQSxHQUEzRSxFQUFnRixDQUFoRixDQUFQO0FBQ0Q7O0FBRURFLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFlBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLDBCQUFSO0FBREQsS0FGRjs7QUFNSkMsYUFBUyxNQU5MOztBQVFKQyxZQUFRLENBQ047QUFDRUosWUFBTSxRQURSO0FBRUVLLGtCQUFZO0FBQ1ZDLGtCQUFVLEVBQUVOLE1BQU0sU0FBUixFQURBO0FBRVZPLHdCQUFnQixFQUFFUCxNQUFNLFNBQVI7QUFGTixPQUZkO0FBTUVRLDRCQUFzQjtBQU54QixLQURNO0FBUkosR0FEUzs7QUFxQmZDLFNBQU9DLE9BQVAsRUFBZ0I7QUFDZCxVQUFNQyxhQUFhckIsZUFBS3NCLE9BQUwsQ0FBYUYsUUFBUUcsV0FBUixFQUFiLENBQW5CO0FBQ0EsVUFBTUMsVUFBVUosUUFBUUksT0FBUixDQUFnQixDQUFoQixDQUFoQjs7QUFFQSxhQUFTQyxnQkFBVCxDQUEwQkMsTUFBMUIsRUFBa0M7QUFBQSxZQUNqQkMsVUFEaUIsR0FDRkQsTUFERSxDQUN4QkUsS0FEd0I7OztBQUdoQyxlQUFTQyxzQkFBVCxDQUFnQ0MsWUFBaEMsRUFBOEM7QUFDNUNWLGdCQUFRVyxNQUFSLENBQWU7QUFDYkMsZ0JBQU1OLE1BRE87QUFFYjtBQUNBTyxtQkFBVSw4QkFBNkJOLFVBQVcsaUJBQWdCRyxZQUFhLEdBSGxFO0FBSWJJLGVBQUtDLFNBQVNMLGdCQUFnQkssTUFBTUMsV0FBTixDQUFrQlYsTUFBbEIsRUFBMEJXLEtBQUtDLFNBQUwsQ0FBZVIsWUFBZixDQUExQjtBQUpqQixTQUFmO0FBTUQ7O0FBRUQ7QUFDQSxVQUFJLENBQUNILFdBQVdZLFVBQVgsQ0FBc0IsR0FBdEIsQ0FBTCxFQUFpQztBQUMvQjtBQUNEOztBQUVEO0FBQ0EsWUFBTUMsZUFBZSx1QkFBUWIsVUFBUixFQUFvQlAsT0FBcEIsQ0FBckI7QUFDQSxZQUFNcUIsYUFBYTNDLFVBQVU2QixVQUFWLENBQW5CO0FBQ0EsWUFBTWUscUJBQXFCLHVCQUFRRCxVQUFSLEVBQW9CckIsT0FBcEIsQ0FBM0I7QUFDQSxVQUFJcUIsZUFBZWQsVUFBZixJQUE2QmEsaUJBQWlCRSxrQkFBbEQsRUFBc0U7QUFDcEUsZUFBT2IsdUJBQXVCWSxVQUF2QixDQUFQO0FBQ0Q7O0FBRUQsWUFBTUUsaUJBQWlCLCtCQUFrQnZCLFFBQVF3QixRQUExQixDQUF2QjtBQUNBLFlBQU1DLHdCQUF3QixJQUFJQyxNQUFKLENBQzNCLGdCQUFlQyxNQUFNQyxJQUFOLENBQVdMLGNBQVgsRUFBMkJNLElBQTNCLENBQWdDLEtBQWhDLENBQXVDLEtBRDNCLENBQTlCOztBQUlBO0FBQ0EsVUFBSXpCLFdBQVdBLFFBQVFQLGNBQW5CLElBQXFDNEIsc0JBQXNCaEQsSUFBdEIsQ0FBMkI4QixVQUEzQixDQUF6QyxFQUFpRjtBQUMvRSxjQUFNdUIsa0JBQWtCbEQsZUFBS3NCLE9BQUwsQ0FBYUssVUFBYixDQUF4Qjs7QUFFQTtBQUNBLFlBQUl1QixvQkFBb0IsR0FBcEIsSUFBMkJBLG9CQUFvQixJQUFuRCxFQUF5RDtBQUN2RCxlQUFLLElBQUlDLGFBQVQsSUFBMEJSLGNBQTFCLEVBQTBDO0FBQ3hDLGdCQUFJLHVCQUFTLEdBQUVPLGVBQWdCLEdBQUVDLGFBQWMsRUFBM0MsRUFBOEMvQixPQUE5QyxDQUFKLEVBQTREO0FBQzFELHFCQUFPUyx1QkFBd0IsR0FBRXFCLGVBQWdCLEdBQTFDLENBQVA7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQsZUFBT3JCLHVCQUF1QnFCLGVBQXZCLENBQVA7QUFDRDs7QUFFRDtBQUNBLFVBQUl2QixXQUFXWSxVQUFYLENBQXNCLElBQXRCLENBQUosRUFBaUM7QUFDL0I7QUFDRDs7QUFFRDtBQUNBLFVBQUlDLGlCQUFpQlksU0FBckIsRUFBZ0M7QUFDOUI7QUFDRDs7QUFFRCxZQUFNQyxXQUFXckQsZUFBS3NELFFBQUwsQ0FBY2pDLFVBQWQsRUFBMEJtQixZQUExQixDQUFqQixDQXhEZ0MsQ0F3RHlCO0FBQ3pELFlBQU1lLGdCQUFnQkYsU0FBU0csS0FBVCxDQUFleEQsZUFBS3lELEdBQXBCLENBQXRCLENBekRnQyxDQXlEZTtBQUMvQyxZQUFNQyxrQkFBa0IvQixXQUFXL0IsT0FBWCxDQUFtQixPQUFuQixFQUE0QixFQUE1QixFQUFnQzRELEtBQWhDLENBQXNDLEdBQXRDLENBQXhCO0FBQ0EsWUFBTUcsaUNBQWlDekQscUJBQXFCd0QsZUFBckIsQ0FBdkM7QUFDQSxZQUFNRSwrQkFBK0IxRCxxQkFBcUJxRCxhQUFyQixDQUFyQztBQUNBLFlBQU1NLE9BQU9GLGlDQUFpQ0MsNEJBQTlDOztBQUVBO0FBQ0EsVUFBSUMsUUFBUSxDQUFaLEVBQWU7QUFDYjtBQUNEOztBQUVEO0FBQ0EsYUFBT2hDLHVCQUNMcEMsZUFDRWlFLGdCQUNHSSxLQURILENBQ1MsQ0FEVCxFQUNZRiw0QkFEWixFQUVHRyxNQUZILENBRVVMLGdCQUFnQkksS0FBaEIsQ0FBc0JILGlDQUFpQ0UsSUFBdkQsQ0FGVixFQUdHWixJQUhILENBR1EsR0FIUixDQURGLENBREssQ0FBUDtBQVFEOztBQUVELFdBQU8sNkJBQWN4QixnQkFBZCxFQUFnQ0QsT0FBaEMsQ0FBUDtBQUNEO0FBekdjLENBQWpCIiwiZmlsZSI6Im5vLXVzZWxlc3MtcGF0aC1zZWdtZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBFbnN1cmVzIHRoYXQgdGhlcmUgYXJlIG5vIHVzZWxlc3MgcGF0aCBzZWdtZW50c1xuICogQGF1dGhvciBUaG9tYXMgR3JhaW5nZXJcbiAqL1xuXG5pbXBvcnQgeyBnZXRGaWxlRXh0ZW5zaW9ucyB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvaWdub3JlJ1xuaW1wb3J0IG1vZHVsZVZpc2l0b3IgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9tb2R1bGVWaXNpdG9yJ1xuaW1wb3J0IHJlc29sdmUgZnJvbSAnZXNsaW50LW1vZHVsZS11dGlscy9yZXNvbHZlJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbi8qKlxuICogY29udmVydCBhIHBvdGVudGlhbGx5IHJlbGF0aXZlIHBhdGggZnJvbSBub2RlIHV0aWxzIGludG8gYSB0cnVlXG4gKiByZWxhdGl2ZSBwYXRoLlxuICpcbiAqIC4uLyAtPiAuLlxuICogLi8gLT4gLlxuICogLmZvby9iYXIgLT4gLi8uZm9vL2JhclxuICogLi5mb28vYmFyIC0+IC4vLi5mb28vYmFyXG4gKiBmb28vYmFyIC0+IC4vZm9vL2JhclxuICpcbiAqIEBwYXJhbSByZWxhdGl2ZVBhdGgge3N0cmluZ30gcmVsYXRpdmUgcG9zaXggcGF0aCBwb3RlbnRpYWxseSBtaXNzaW5nIGxlYWRpbmcgJy4vJ1xuICogQHJldHVybnMge3N0cmluZ30gcmVsYXRpdmUgcG9zaXggcGF0aCB0aGF0IGFsd2F5cyBzdGFydHMgd2l0aCBhIC4vXG4gKiovXG5mdW5jdGlvbiB0b1JlbGF0aXZlUGF0aChyZWxhdGl2ZVBhdGgpIHtcbiAgY29uc3Qgc3RyaXBwZWQgPSByZWxhdGl2ZVBhdGgucmVwbGFjZSgvXFwvJC9nLCAnJykgLy8gUmVtb3ZlIHRyYWlsaW5nIC9cblxuICByZXR1cm4gL14oKFxcLlxcLil8KFxcLikpKCR8XFwvKS8udGVzdChzdHJpcHBlZCkgPyBzdHJpcHBlZCA6IGAuLyR7c3RyaXBwZWR9YFxufVxuXG5mdW5jdGlvbiBub3JtYWxpemUoZm4pIHtcbiAgcmV0dXJuIHRvUmVsYXRpdmVQYXRoKHBhdGgucG9zaXgubm9ybWFsaXplKGZuKSlcbn1cblxuZnVuY3Rpb24gY291bnRSZWxhdGl2ZVBhcmVudHMocGF0aFNlZ21lbnRzKSB7XG4gIHJldHVybiBwYXRoU2VnbWVudHMucmVkdWNlKChzdW0sIHBhdGhTZWdtZW50KSA9PiBwYXRoU2VnbWVudCA9PT0gJy4uJyA/IHN1bSArIDEgOiBzdW0sIDApXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnbm8tdXNlbGVzcy1wYXRoLXNlZ21lbnRzJyksXG4gICAgfSxcblxuICAgIGZpeGFibGU6ICdjb2RlJyxcblxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGNvbW1vbmpzOiB7IHR5cGU6ICdib29sZWFuJyB9LFxuICAgICAgICAgIG5vVXNlbGVzc0luZGV4OiB7IHR5cGU6ICdib29sZWFuJyB9LFxuICAgICAgICB9LFxuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG5cbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBjdXJyZW50RGlyID0gcGF0aC5kaXJuYW1lKGNvbnRleHQuZ2V0RmlsZW5hbWUoKSlcbiAgICBjb25zdCBvcHRpb25zID0gY29udGV4dC5vcHRpb25zWzBdXG5cbiAgICBmdW5jdGlvbiBjaGVja1NvdXJjZVZhbHVlKHNvdXJjZSkge1xuICAgICAgY29uc3QgeyB2YWx1ZTogaW1wb3J0UGF0aCB9ID0gc291cmNlXG5cbiAgICAgIGZ1bmN0aW9uIHJlcG9ydFdpdGhQcm9wb3NlZFBhdGgocHJvcG9zZWRQYXRoKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBub2RlOiBzb3VyY2UsXG4gICAgICAgICAgLy8gTm90ZTogVXNpbmcgbWVzc2FnZUlkcyBpcyBub3QgcG9zc2libGUgZHVlIHRvIHRoZSBzdXBwb3J0IGZvciBFU0xpbnQgMiBhbmQgM1xuICAgICAgICAgIG1lc3NhZ2U6IGBVc2VsZXNzIHBhdGggc2VnbWVudHMgZm9yIFwiJHtpbXBvcnRQYXRofVwiLCBzaG91bGQgYmUgXCIke3Byb3Bvc2VkUGF0aH1cImAsXG4gICAgICAgICAgZml4OiBmaXhlciA9PiBwcm9wb3NlZFBhdGggJiYgZml4ZXIucmVwbGFjZVRleHQoc291cmNlLCBKU09OLnN0cmluZ2lmeShwcm9wb3NlZFBhdGgpKSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gT25seSByZWxhdGl2ZSBpbXBvcnRzIGFyZSByZWxldmFudCBmb3IgdGhpcyBydWxlIC0tPiBTa2lwIGNoZWNraW5nXG4gICAgICBpZiAoIWltcG9ydFBhdGguc3RhcnRzV2l0aCgnLicpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBSZXBvcnQgcnVsZSB2aW9sYXRpb24gaWYgcGF0aCBpcyBub3QgdGhlIHNob3J0ZXN0IHBvc3NpYmxlXG4gICAgICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlKGltcG9ydFBhdGgsIGNvbnRleHQpXG4gICAgICBjb25zdCBub3JtZWRQYXRoID0gbm9ybWFsaXplKGltcG9ydFBhdGgpXG4gICAgICBjb25zdCByZXNvbHZlZE5vcm1lZFBhdGggPSByZXNvbHZlKG5vcm1lZFBhdGgsIGNvbnRleHQpXG4gICAgICBpZiAobm9ybWVkUGF0aCAhPT0gaW1wb3J0UGF0aCAmJiByZXNvbHZlZFBhdGggPT09IHJlc29sdmVkTm9ybWVkUGF0aCkge1xuICAgICAgICByZXR1cm4gcmVwb3J0V2l0aFByb3Bvc2VkUGF0aChub3JtZWRQYXRoKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBmaWxlRXh0ZW5zaW9ucyA9IGdldEZpbGVFeHRlbnNpb25zKGNvbnRleHQuc2V0dGluZ3MpXG4gICAgICBjb25zdCByZWdleFVubmVjZXNzYXJ5SW5kZXggPSBuZXcgUmVnRXhwKFxuICAgICAgICBgLipcXFxcL2luZGV4KFxcXFwke0FycmF5LmZyb20oZmlsZUV4dGVuc2lvbnMpLmpvaW4oJ3xcXFxcJyl9KT8kYFxuICAgICAgKVxuXG4gICAgICAvLyBDaGVjayBpZiBwYXRoIGNvbnRhaW5zIHVubmVjZXNzYXJ5IGluZGV4IChpbmNsdWRpbmcgYSBjb25maWd1cmVkIGV4dGVuc2lvbilcbiAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMubm9Vc2VsZXNzSW5kZXggJiYgcmVnZXhVbm5lY2Vzc2FyeUluZGV4LnRlc3QoaW1wb3J0UGF0aCkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50RGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lKGltcG9ydFBhdGgpXG5cbiAgICAgICAgLy8gVHJ5IHRvIGZpbmQgYW1iaWd1b3VzIGltcG9ydHNcbiAgICAgICAgaWYgKHBhcmVudERpcmVjdG9yeSAhPT0gJy4nICYmIHBhcmVudERpcmVjdG9yeSAhPT0gJy4uJykge1xuICAgICAgICAgIGZvciAobGV0IGZpbGVFeHRlbnNpb24gb2YgZmlsZUV4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgIGlmIChyZXNvbHZlKGAke3BhcmVudERpcmVjdG9yeX0ke2ZpbGVFeHRlbnNpb259YCwgY29udGV4dCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHJlcG9ydFdpdGhQcm9wb3NlZFBhdGgoYCR7cGFyZW50RGlyZWN0b3J5fS9gKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXBvcnRXaXRoUHJvcG9zZWRQYXRoKHBhcmVudERpcmVjdG9yeSlcbiAgICAgIH1cblxuICAgICAgLy8gUGF0aCBpcyBzaG9ydGVzdCBwb3NzaWJsZSArIHN0YXJ0cyBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAtLT4gUmV0dXJuIGRpcmVjdGx5XG4gICAgICBpZiAoaW1wb3J0UGF0aC5zdGFydHNXaXRoKCcuLycpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBQYXRoIGlzIG5vdCBleGlzdGluZyAtLT4gUmV0dXJuIGRpcmVjdGx5IChmb2xsb3dpbmcgY29kZSByZXF1aXJlcyBwYXRoIHRvIGJlIGRlZmluZWQpXG4gICAgICBpZiAocmVzb2x2ZWRQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGV4cGVjdGVkID0gcGF0aC5yZWxhdGl2ZShjdXJyZW50RGlyLCByZXNvbHZlZFBhdGgpIC8vIEV4cGVjdGVkIGltcG9ydCBwYXRoXG4gICAgICBjb25zdCBleHBlY3RlZFNwbGl0ID0gZXhwZWN0ZWQuc3BsaXQocGF0aC5zZXApIC8vIFNwbGl0IGJ5IC8gb3IgXFwgKGRlcGVuZGluZyBvbiBPUylcbiAgICAgIGNvbnN0IGltcG9ydFBhdGhTcGxpdCA9IGltcG9ydFBhdGgucmVwbGFjZSgvXlxcLlxcLy8sICcnKS5zcGxpdCgnLycpXG4gICAgICBjb25zdCBjb3VudEltcG9ydFBhdGhSZWxhdGl2ZVBhcmVudHMgPSBjb3VudFJlbGF0aXZlUGFyZW50cyhpbXBvcnRQYXRoU3BsaXQpXG4gICAgICBjb25zdCBjb3VudEV4cGVjdGVkUmVsYXRpdmVQYXJlbnRzID0gY291bnRSZWxhdGl2ZVBhcmVudHMoZXhwZWN0ZWRTcGxpdClcbiAgICAgIGNvbnN0IGRpZmYgPSBjb3VudEltcG9ydFBhdGhSZWxhdGl2ZVBhcmVudHMgLSBjb3VudEV4cGVjdGVkUmVsYXRpdmVQYXJlbnRzXG5cbiAgICAgIC8vIFNhbWUgbnVtYmVyIG9mIHJlbGF0aXZlIHBhcmVudHMgLS0+IFBhdGhzIGFyZSB0aGUgc2FtZSAtLT4gUmV0dXJuIGRpcmVjdGx5XG4gICAgICBpZiAoZGlmZiA8PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICAvLyBSZXBvcnQgYW5kIHByb3Bvc2UgbWluaW1hbCBudW1iZXIgb2YgcmVxdWlyZWQgcmVsYXRpdmUgcGFyZW50c1xuICAgICAgcmV0dXJuIHJlcG9ydFdpdGhQcm9wb3NlZFBhdGgoXG4gICAgICAgIHRvUmVsYXRpdmVQYXRoKFxuICAgICAgICAgIGltcG9ydFBhdGhTcGxpdFxuICAgICAgICAgICAgLnNsaWNlKDAsIGNvdW50RXhwZWN0ZWRSZWxhdGl2ZVBhcmVudHMpXG4gICAgICAgICAgICAuY29uY2F0KGltcG9ydFBhdGhTcGxpdC5zbGljZShjb3VudEltcG9ydFBhdGhSZWxhdGl2ZVBhcmVudHMgKyBkaWZmKSlcbiAgICAgICAgICAgIC5qb2luKCcvJylcbiAgICAgICAgKVxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBtb2R1bGVWaXNpdG9yKGNoZWNrU291cmNlVmFsdWUsIG9wdGlvbnMpXG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-webpack-loader-syntax.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-webpack-loader-syntax.js new file mode 100644 index 0000000..9727c5f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/no-webpack-loader-syntax.js @@ -0,0 +1,41 @@ +'use strict'; + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function reportIfNonStandard(context, node, name) { + if (name.indexOf('!') !== -1) { + context.report(node, `Unexpected '!' in '${name}'. ` + 'Do not use import syntax to configure webpack loaders.'); + } +} + +module.exports = { + meta: { + type: 'problem', + docs: { + url: (0, _docsUrl2.default)('no-webpack-loader-syntax') + }, + schema: [] + }, + + create: function (context) { + return { + ImportDeclaration: function handleImports(node) { + reportIfNonStandard(context, node, node.source.value); + }, + CallExpression: function handleRequires(node) { + if ((0, _staticRequire2.default)(node)) { + reportIfNonStandard(context, node, node.arguments[0].value); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9uby13ZWJwYWNrLWxvYWRlci1zeW50YXguanMiXSwibmFtZXMiOlsicmVwb3J0SWZOb25TdGFuZGFyZCIsImNvbnRleHQiLCJub2RlIiwibmFtZSIsImluZGV4T2YiLCJyZXBvcnQiLCJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwidXJsIiwic2NoZW1hIiwiY3JlYXRlIiwiSW1wb3J0RGVjbGFyYXRpb24iLCJoYW5kbGVJbXBvcnRzIiwic291cmNlIiwidmFsdWUiLCJDYWxsRXhwcmVzc2lvbiIsImhhbmRsZVJlcXVpcmVzIiwiYXJndW1lbnRzIl0sIm1hcHBpbmdzIjoiOztBQUFBOzs7O0FBQ0E7Ozs7OztBQUVBLFNBQVNBLG1CQUFULENBQTZCQyxPQUE3QixFQUFzQ0MsSUFBdEMsRUFBNENDLElBQTVDLEVBQWtEO0FBQ2hELE1BQUlBLEtBQUtDLE9BQUwsQ0FBYSxHQUFiLE1BQXNCLENBQUMsQ0FBM0IsRUFBOEI7QUFDNUJILFlBQVFJLE1BQVIsQ0FBZUgsSUFBZixFQUFzQixzQkFBcUJDLElBQUssS0FBM0IsR0FDbkIsd0RBREY7QUFHRDtBQUNGOztBQUVERyxPQUFPQyxPQUFQLEdBQWlCO0FBQ2ZDLFFBQU07QUFDSkMsVUFBTSxTQURGO0FBRUpDLFVBQU07QUFDSkMsV0FBSyx1QkFBUSwwQkFBUjtBQURELEtBRkY7QUFLSkMsWUFBUTtBQUxKLEdBRFM7O0FBU2ZDLFVBQVEsVUFBVVosT0FBVixFQUFtQjtBQUN6QixXQUFPO0FBQ0xhLHlCQUFtQixTQUFTQyxhQUFULENBQXVCYixJQUF2QixFQUE2QjtBQUM5Q0YsNEJBQW9CQyxPQUFwQixFQUE2QkMsSUFBN0IsRUFBbUNBLEtBQUtjLE1BQUwsQ0FBWUMsS0FBL0M7QUFDRCxPQUhJO0FBSUxDLHNCQUFnQixTQUFTQyxjQUFULENBQXdCakIsSUFBeEIsRUFBOEI7QUFDNUMsWUFBSSw2QkFBZ0JBLElBQWhCLENBQUosRUFBMkI7QUFDekJGLDhCQUFvQkMsT0FBcEIsRUFBNkJDLElBQTdCLEVBQW1DQSxLQUFLa0IsU0FBTCxDQUFlLENBQWYsRUFBa0JILEtBQXJEO0FBQ0Q7QUFDRjtBQVJJLEtBQVA7QUFVRDtBQXBCYyxDQUFqQiIsImZpbGUiOiJuby13ZWJwYWNrLWxvYWRlci1zeW50YXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNTdGF0aWNSZXF1aXJlIGZyb20gJy4uL2NvcmUvc3RhdGljUmVxdWlyZSdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbmZ1bmN0aW9uIHJlcG9ydElmTm9uU3RhbmRhcmQoY29udGV4dCwgbm9kZSwgbmFtZSkge1xuICBpZiAobmFtZS5pbmRleE9mKCchJykgIT09IC0xKSB7XG4gICAgY29udGV4dC5yZXBvcnQobm9kZSwgYFVuZXhwZWN0ZWQgJyEnIGluICcke25hbWV9Jy4gYCArXG4gICAgICAnRG8gbm90IHVzZSBpbXBvcnQgc3ludGF4IHRvIGNvbmZpZ3VyZSB3ZWJwYWNrIGxvYWRlcnMuJ1xuICAgIClcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdwcm9ibGVtJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ25vLXdlYnBhY2stbG9hZGVyLXN5bnRheCcpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEltcG9ydERlY2xhcmF0aW9uOiBmdW5jdGlvbiBoYW5kbGVJbXBvcnRzKG5vZGUpIHtcbiAgICAgICAgcmVwb3J0SWZOb25TdGFuZGFyZChjb250ZXh0LCBub2RlLCBub2RlLnNvdXJjZS52YWx1ZSlcbiAgICAgIH0sXG4gICAgICBDYWxsRXhwcmVzc2lvbjogZnVuY3Rpb24gaGFuZGxlUmVxdWlyZXMobm9kZSkge1xuICAgICAgICBpZiAoaXNTdGF0aWNSZXF1aXJlKG5vZGUpKSB7XG4gICAgICAgICAgcmVwb3J0SWZOb25TdGFuZGFyZChjb250ZXh0LCBub2RlLCBub2RlLmFyZ3VtZW50c1swXS52YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/order.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/order.js new file mode 100644 index 0000000..a891ea0 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/order.js @@ -0,0 +1,626 @@ +'use strict'; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _minimatch = require('minimatch'); + +var _minimatch2 = _interopRequireDefault(_minimatch); + +var _importType = require('../core/importType'); + +var _importType2 = _interopRequireDefault(_importType); + +var _staticRequire = require('../core/staticRequire'); + +var _staticRequire2 = _interopRequireDefault(_staticRequire); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +const defaultGroups = ['builtin', 'external', 'parent', 'sibling', 'index']; + +// REPORTING AND FIXING + +function reverse(array) { + return array.map(function (v) { + return { + name: v.name, + rank: -v.rank, + node: v.node + }; + }).reverse(); +} + +function getTokensOrCommentsAfter(sourceCode, node, count) { + let currentNodeOrToken = node; + const result = []; + for (let i = 0; i < count; i++) { + currentNodeOrToken = sourceCode.getTokenOrCommentAfter(currentNodeOrToken); + if (currentNodeOrToken == null) { + break; + } + result.push(currentNodeOrToken); + } + return result; +} + +function getTokensOrCommentsBefore(sourceCode, node, count) { + let currentNodeOrToken = node; + const result = []; + for (let i = 0; i < count; i++) { + currentNodeOrToken = sourceCode.getTokenOrCommentBefore(currentNodeOrToken); + if (currentNodeOrToken == null) { + break; + } + result.push(currentNodeOrToken); + } + return result.reverse(); +} + +function takeTokensAfterWhile(sourceCode, node, condition) { + const tokens = getTokensOrCommentsAfter(sourceCode, node, 100); + const result = []; + for (let i = 0; i < tokens.length; i++) { + if (condition(tokens[i])) { + result.push(tokens[i]); + } else { + break; + } + } + return result; +} + +function takeTokensBeforeWhile(sourceCode, node, condition) { + const tokens = getTokensOrCommentsBefore(sourceCode, node, 100); + const result = []; + for (let i = tokens.length - 1; i >= 0; i--) { + if (condition(tokens[i])) { + result.push(tokens[i]); + } else { + break; + } + } + return result.reverse(); +} + +function findOutOfOrder(imported) { + if (imported.length === 0) { + return []; + } + let maxSeenRankNode = imported[0]; + return imported.filter(function (importedModule) { + const res = importedModule.rank < maxSeenRankNode.rank; + if (maxSeenRankNode.rank < importedModule.rank) { + maxSeenRankNode = importedModule; + } + return res; + }); +} + +function findRootNode(node) { + let parent = node; + while (parent.parent != null && parent.parent.body == null) { + parent = parent.parent; + } + return parent; +} + +function findEndOfLineWithComments(sourceCode, node) { + const tokensToEndOfLine = takeTokensAfterWhile(sourceCode, node, commentOnSameLineAs(node)); + let endOfTokens = tokensToEndOfLine.length > 0 ? tokensToEndOfLine[tokensToEndOfLine.length - 1].range[1] : node.range[1]; + let result = endOfTokens; + for (let i = endOfTokens; i < sourceCode.text.length; i++) { + if (sourceCode.text[i] === '\n') { + result = i + 1; + break; + } + if (sourceCode.text[i] !== ' ' && sourceCode.text[i] !== '\t' && sourceCode.text[i] !== '\r') { + break; + } + result = i + 1; + } + return result; +} + +function commentOnSameLineAs(node) { + return token => (token.type === 'Block' || token.type === 'Line') && token.loc.start.line === token.loc.end.line && token.loc.end.line === node.loc.end.line; +} + +function findStartOfLineWithComments(sourceCode, node) { + const tokensToEndOfLine = takeTokensBeforeWhile(sourceCode, node, commentOnSameLineAs(node)); + let startOfTokens = tokensToEndOfLine.length > 0 ? tokensToEndOfLine[0].range[0] : node.range[0]; + let result = startOfTokens; + for (let i = startOfTokens - 1; i > 0; i--) { + if (sourceCode.text[i] !== ' ' && sourceCode.text[i] !== '\t') { + break; + } + result = i; + } + return result; +} + +function isPlainRequireModule(node) { + if (node.type !== 'VariableDeclaration') { + return false; + } + if (node.declarations.length !== 1) { + return false; + } + const decl = node.declarations[0]; + const result = decl.id && (decl.id.type === 'Identifier' || decl.id.type === 'ObjectPattern') && decl.init != null && decl.init.type === 'CallExpression' && decl.init.callee != null && decl.init.callee.name === 'require' && decl.init.arguments != null && decl.init.arguments.length === 1 && decl.init.arguments[0].type === 'Literal'; + return result; +} + +function isPlainImportModule(node) { + return node.type === 'ImportDeclaration' && node.specifiers != null && node.specifiers.length > 0; +} + +function canCrossNodeWhileReorder(node) { + return isPlainRequireModule(node) || isPlainImportModule(node); +} + +function canReorderItems(firstNode, secondNode) { + const parent = firstNode.parent; + + var _sort = [parent.body.indexOf(firstNode), parent.body.indexOf(secondNode)].sort(), + _sort2 = _slicedToArray(_sort, 2); + + const firstIndex = _sort2[0], + secondIndex = _sort2[1]; + + const nodesBetween = parent.body.slice(firstIndex, secondIndex + 1); + for (var nodeBetween of nodesBetween) { + if (!canCrossNodeWhileReorder(nodeBetween)) { + return false; + } + } + return true; +} + +function fixOutOfOrder(context, firstNode, secondNode, order) { + const sourceCode = context.getSourceCode(); + + const firstRoot = findRootNode(firstNode.node); + const firstRootStart = findStartOfLineWithComments(sourceCode, firstRoot); + const firstRootEnd = findEndOfLineWithComments(sourceCode, firstRoot); + + const secondRoot = findRootNode(secondNode.node); + const secondRootStart = findStartOfLineWithComments(sourceCode, secondRoot); + const secondRootEnd = findEndOfLineWithComments(sourceCode, secondRoot); + const canFix = canReorderItems(firstRoot, secondRoot); + + let newCode = sourceCode.text.substring(secondRootStart, secondRootEnd); + if (newCode[newCode.length - 1] !== '\n') { + newCode = newCode + '\n'; + } + + const message = '`' + secondNode.name + '` import should occur ' + order + ' import of `' + firstNode.name + '`'; + + if (order === 'before') { + context.report({ + node: secondNode.node, + message: message, + fix: canFix && (fixer => fixer.replaceTextRange([firstRootStart, secondRootEnd], newCode + sourceCode.text.substring(firstRootStart, secondRootStart))) + }); + } else if (order === 'after') { + context.report({ + node: secondNode.node, + message: message, + fix: canFix && (fixer => fixer.replaceTextRange([secondRootStart, firstRootEnd], sourceCode.text.substring(secondRootEnd, firstRootEnd) + newCode)) + }); + } +} + +function reportOutOfOrder(context, imported, outOfOrder, order) { + outOfOrder.forEach(function (imp) { + const found = imported.find(function hasHigherRank(importedItem) { + return importedItem.rank > imp.rank; + }); + fixOutOfOrder(context, found, imp, order); + }); +} + +function makeOutOfOrderReport(context, imported) { + const outOfOrder = findOutOfOrder(imported); + if (!outOfOrder.length) { + return; + } + // There are things to report. Try to minimize the number of reported errors. + const reversedImported = reverse(imported); + const reversedOrder = findOutOfOrder(reversedImported); + if (reversedOrder.length < outOfOrder.length) { + reportOutOfOrder(context, reversedImported, reversedOrder, 'after'); + return; + } + reportOutOfOrder(context, imported, outOfOrder, 'before'); +} + +function importsSorterAsc(importA, importB) { + if (importA < importB) { + return -1; + } + + if (importA > importB) { + return 1; + } + + return 0; +} + +function importsSorterDesc(importA, importB) { + if (importA < importB) { + return 1; + } + + if (importA > importB) { + return -1; + } + + return 0; +} + +function mutateRanksToAlphabetize(imported, alphabetizeOptions) { + const groupedByRanks = imported.reduce(function (acc, importedItem) { + if (!Array.isArray(acc[importedItem.rank])) { + acc[importedItem.rank] = []; + } + acc[importedItem.rank].push(importedItem.name); + return acc; + }, {}); + + const groupRanks = Object.keys(groupedByRanks); + + const sorterFn = alphabetizeOptions.order === 'asc' ? importsSorterAsc : importsSorterDesc; + const comparator = alphabetizeOptions.caseInsensitive ? (a, b) => sorterFn(String(a).toLowerCase(), String(b).toLowerCase()) : (a, b) => sorterFn(a, b); + // sort imports locally within their group + groupRanks.forEach(function (groupRank) { + groupedByRanks[groupRank].sort(comparator); + }); + + // assign globally unique rank to each import + let newRank = 0; + const alphabetizedRanks = groupRanks.sort().reduce(function (acc, groupRank) { + groupedByRanks[groupRank].forEach(function (importedItemName) { + acc[importedItemName] = parseInt(groupRank, 10) + newRank; + newRank += 1; + }); + return acc; + }, {}); + + // mutate the original group-rank with alphabetized-rank + imported.forEach(function (importedItem) { + importedItem.rank = alphabetizedRanks[importedItem.name]; + }); +} + +// DETECTING + +function computePathRank(ranks, pathGroups, path, maxPosition) { + for (let i = 0, l = pathGroups.length; i < l; i++) { + var _pathGroups$i = pathGroups[i]; + const pattern = _pathGroups$i.pattern, + patternOptions = _pathGroups$i.patternOptions, + group = _pathGroups$i.group; + var _pathGroups$i$positio = _pathGroups$i.position; + const position = _pathGroups$i$positio === undefined ? 1 : _pathGroups$i$positio; + + if ((0, _minimatch2.default)(path, pattern, patternOptions || { nocomment: true })) { + return ranks[group] + position / maxPosition; + } + } +} + +function computeRank(context, ranks, name, type, excludedImportTypes) { + const impType = (0, _importType2.default)(name, context); + let rank; + if (!excludedImportTypes.has(impType)) { + rank = computePathRank(ranks.groups, ranks.pathGroups, name, ranks.maxPosition); + } + if (!rank) { + rank = ranks.groups[impType]; + } + if (type !== 'import') { + rank += 100; + } + + return rank; +} + +function registerNode(context, node, name, type, ranks, imported, excludedImportTypes) { + const rank = computeRank(context, ranks, name, type, excludedImportTypes); + if (rank !== -1) { + imported.push({ name, rank, node }); + } +} + +function isInVariableDeclarator(node) { + return node && (node.type === 'VariableDeclarator' || isInVariableDeclarator(node.parent)); +} + +const types = ['builtin', 'external', 'internal', 'unknown', 'parent', 'sibling', 'index']; + +// Creates an object with type-rank pairs. +// Example: { index: 0, sibling: 1, parent: 1, external: 1, builtin: 2, internal: 2 } +// Will throw an error if it contains a type that does not exist, or has a duplicate +function convertGroupsToRanks(groups) { + const rankObject = groups.reduce(function (res, group, index) { + if (typeof group === 'string') { + group = [group]; + } + group.forEach(function (groupItem) { + if (types.indexOf(groupItem) === -1) { + throw new Error('Incorrect configuration of the rule: Unknown type `' + JSON.stringify(groupItem) + '`'); + } + if (res[groupItem] !== undefined) { + throw new Error('Incorrect configuration of the rule: `' + groupItem + '` is duplicated'); + } + res[groupItem] = index; + }); + return res; + }, {}); + + const omittedTypes = types.filter(function (type) { + return rankObject[type] === undefined; + }); + + return omittedTypes.reduce(function (res, type) { + res[type] = groups.length; + return res; + }, rankObject); +} + +function convertPathGroupsForRanks(pathGroups) { + const after = {}; + const before = {}; + + const transformed = pathGroups.map((pathGroup, index) => { + const group = pathGroup.group, + positionString = pathGroup.position; + + let position = 0; + if (positionString === 'after') { + if (!after[group]) { + after[group] = 1; + } + position = after[group]++; + } else if (positionString === 'before') { + if (!before[group]) { + before[group] = []; + } + before[group].push(index); + } + + return Object.assign({}, pathGroup, { position }); + }); + + let maxPosition = 1; + + Object.keys(before).forEach(group => { + const groupLength = before[group].length; + before[group].forEach((groupIndex, index) => { + transformed[groupIndex].position = -1 * (groupLength - index); + }); + maxPosition = Math.max(maxPosition, groupLength); + }); + + Object.keys(after).forEach(key => { + const groupNextPosition = after[key]; + maxPosition = Math.max(maxPosition, groupNextPosition - 1); + }); + + return { + pathGroups: transformed, + maxPosition: maxPosition > 10 ? Math.pow(10, Math.ceil(Math.log10(maxPosition))) : 10 + }; +} + +function fixNewLineAfterImport(context, previousImport) { + const prevRoot = findRootNode(previousImport.node); + const tokensToEndOfLine = takeTokensAfterWhile(context.getSourceCode(), prevRoot, commentOnSameLineAs(prevRoot)); + + let endOfLine = prevRoot.range[1]; + if (tokensToEndOfLine.length > 0) { + endOfLine = tokensToEndOfLine[tokensToEndOfLine.length - 1].range[1]; + } + return fixer => fixer.insertTextAfterRange([prevRoot.range[0], endOfLine], '\n'); +} + +function removeNewLineAfterImport(context, currentImport, previousImport) { + const sourceCode = context.getSourceCode(); + const prevRoot = findRootNode(previousImport.node); + const currRoot = findRootNode(currentImport.node); + const rangeToRemove = [findEndOfLineWithComments(sourceCode, prevRoot), findStartOfLineWithComments(sourceCode, currRoot)]; + if (/^\s*$/.test(sourceCode.text.substring(rangeToRemove[0], rangeToRemove[1]))) { + return fixer => fixer.removeRange(rangeToRemove); + } + return undefined; +} + +function makeNewlinesBetweenReport(context, imported, newlinesBetweenImports) { + const getNumberOfEmptyLinesBetween = (currentImport, previousImport) => { + const linesBetweenImports = context.getSourceCode().lines.slice(previousImport.node.loc.end.line, currentImport.node.loc.start.line - 1); + + return linesBetweenImports.filter(line => !line.trim().length).length; + }; + let previousImport = imported[0]; + + imported.slice(1).forEach(function (currentImport) { + const emptyLinesBetween = getNumberOfEmptyLinesBetween(currentImport, previousImport); + + if (newlinesBetweenImports === 'always' || newlinesBetweenImports === 'always-and-inside-groups') { + if (currentImport.rank !== previousImport.rank && emptyLinesBetween === 0) { + context.report({ + node: previousImport.node, + message: 'There should be at least one empty line between import groups', + fix: fixNewLineAfterImport(context, previousImport) + }); + } else if (currentImport.rank === previousImport.rank && emptyLinesBetween > 0 && newlinesBetweenImports !== 'always-and-inside-groups') { + context.report({ + node: previousImport.node, + message: 'There should be no empty line within import group', + fix: removeNewLineAfterImport(context, currentImport, previousImport) + }); + } + } else if (emptyLinesBetween > 0) { + context.report({ + node: previousImport.node, + message: 'There should be no empty line between import groups', + fix: removeNewLineAfterImport(context, currentImport, previousImport) + }); + } + + previousImport = currentImport; + }); +} + +function getAlphabetizeConfig(options) { + const alphabetize = options.alphabetize || {}; + const order = alphabetize.order || 'ignore'; + const caseInsensitive = alphabetize.caseInsensitive || false; + + return { order, caseInsensitive }; +} + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('order') + }, + + fixable: 'code', + schema: [{ + type: 'object', + properties: { + groups: { + type: 'array' + }, + pathGroupsExcludedImportTypes: { + type: 'array' + }, + pathGroups: { + type: 'array', + items: { + type: 'object', + properties: { + pattern: { + type: 'string' + }, + patternOptions: { + type: 'object' + }, + group: { + type: 'string', + enum: types + }, + position: { + type: 'string', + enum: ['after', 'before'] + } + }, + required: ['pattern', 'group'] + } + }, + 'newlines-between': { + enum: ['ignore', 'always', 'always-and-inside-groups', 'never'] + }, + alphabetize: { + type: 'object', + properties: { + caseInsensitive: { + type: 'boolean', + default: false + }, + order: { + enum: ['ignore', 'asc', 'desc'], + default: 'ignore' + } + }, + additionalProperties: false + } + }, + additionalProperties: false + }] + }, + + create: function importOrderRule(context) { + const options = context.options[0] || {}; + const newlinesBetweenImports = options['newlines-between'] || 'ignore'; + const pathGroupsExcludedImportTypes = new Set(options['pathGroupsExcludedImportTypes'] || ['builtin', 'external']); + const alphabetize = getAlphabetizeConfig(options); + let ranks; + + try { + var _convertPathGroupsFor = convertPathGroupsForRanks(options.pathGroups || []); + + const pathGroups = _convertPathGroupsFor.pathGroups, + maxPosition = _convertPathGroupsFor.maxPosition; + + ranks = { + groups: convertGroupsToRanks(options.groups || defaultGroups), + pathGroups, + maxPosition + }; + } catch (error) { + // Malformed configuration + return { + Program: function (node) { + context.report(node, error.message); + } + }; + } + let imported = []; + let level = 0; + + function incrementLevel() { + level++; + } + function decrementLevel() { + level--; + } + + return { + ImportDeclaration: function handleImports(node) { + if (node.specifiers.length) { + // Ignoring unassigned imports + const name = node.source.value; + registerNode(context, node, name, 'import', ranks, imported, pathGroupsExcludedImportTypes); + } + }, + CallExpression: function handleRequires(node) { + if (level !== 0 || !(0, _staticRequire2.default)(node) || !isInVariableDeclarator(node.parent)) { + return; + } + const name = node.arguments[0].value; + registerNode(context, node, name, 'require', ranks, imported, pathGroupsExcludedImportTypes); + }, + 'Program:exit': function reportAndReset() { + if (newlinesBetweenImports !== 'ignore') { + makeNewlinesBetweenReport(context, imported, newlinesBetweenImports); + } + + if (alphabetize.order !== 'ignore') { + mutateRanksToAlphabetize(imported, alphabetize); + } + + makeOutOfOrderReport(context, imported); + + imported = []; + }, + FunctionDeclaration: incrementLevel, + FunctionExpression: incrementLevel, + ArrowFunctionExpression: incrementLevel, + BlockStatement: incrementLevel, + ObjectExpression: incrementLevel, + 'FunctionDeclaration:exit': decrementLevel, + 'FunctionExpression:exit': decrementLevel, + 'ArrowFunctionExpression:exit': decrementLevel, + 'BlockStatement:exit': decrementLevel, + 'ObjectExpression:exit': decrementLevel + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9vcmRlci5qcyJdLCJuYW1lcyI6WyJkZWZhdWx0R3JvdXBzIiwicmV2ZXJzZSIsImFycmF5IiwibWFwIiwidiIsIm5hbWUiLCJyYW5rIiwibm9kZSIsImdldFRva2Vuc09yQ29tbWVudHNBZnRlciIsInNvdXJjZUNvZGUiLCJjb3VudCIsImN1cnJlbnROb2RlT3JUb2tlbiIsInJlc3VsdCIsImkiLCJnZXRUb2tlbk9yQ29tbWVudEFmdGVyIiwicHVzaCIsImdldFRva2Vuc09yQ29tbWVudHNCZWZvcmUiLCJnZXRUb2tlbk9yQ29tbWVudEJlZm9yZSIsInRha2VUb2tlbnNBZnRlcldoaWxlIiwiY29uZGl0aW9uIiwidG9rZW5zIiwibGVuZ3RoIiwidGFrZVRva2Vuc0JlZm9yZVdoaWxlIiwiZmluZE91dE9mT3JkZXIiLCJpbXBvcnRlZCIsIm1heFNlZW5SYW5rTm9kZSIsImZpbHRlciIsImltcG9ydGVkTW9kdWxlIiwicmVzIiwiZmluZFJvb3ROb2RlIiwicGFyZW50IiwiYm9keSIsImZpbmRFbmRPZkxpbmVXaXRoQ29tbWVudHMiLCJ0b2tlbnNUb0VuZE9mTGluZSIsImNvbW1lbnRPblNhbWVMaW5lQXMiLCJlbmRPZlRva2VucyIsInJhbmdlIiwidGV4dCIsInRva2VuIiwidHlwZSIsImxvYyIsInN0YXJ0IiwibGluZSIsImVuZCIsImZpbmRTdGFydE9mTGluZVdpdGhDb21tZW50cyIsInN0YXJ0T2ZUb2tlbnMiLCJpc1BsYWluUmVxdWlyZU1vZHVsZSIsImRlY2xhcmF0aW9ucyIsImRlY2wiLCJpZCIsImluaXQiLCJjYWxsZWUiLCJhcmd1bWVudHMiLCJpc1BsYWluSW1wb3J0TW9kdWxlIiwic3BlY2lmaWVycyIsImNhbkNyb3NzTm9kZVdoaWxlUmVvcmRlciIsImNhblJlb3JkZXJJdGVtcyIsImZpcnN0Tm9kZSIsInNlY29uZE5vZGUiLCJpbmRleE9mIiwic29ydCIsImZpcnN0SW5kZXgiLCJzZWNvbmRJbmRleCIsIm5vZGVzQmV0d2VlbiIsInNsaWNlIiwibm9kZUJldHdlZW4iLCJmaXhPdXRPZk9yZGVyIiwiY29udGV4dCIsIm9yZGVyIiwiZ2V0U291cmNlQ29kZSIsImZpcnN0Um9vdCIsImZpcnN0Um9vdFN0YXJ0IiwiZmlyc3RSb290RW5kIiwic2Vjb25kUm9vdCIsInNlY29uZFJvb3RTdGFydCIsInNlY29uZFJvb3RFbmQiLCJjYW5GaXgiLCJuZXdDb2RlIiwic3Vic3RyaW5nIiwibWVzc2FnZSIsInJlcG9ydCIsImZpeCIsImZpeGVyIiwicmVwbGFjZVRleHRSYW5nZSIsInJlcG9ydE91dE9mT3JkZXIiLCJvdXRPZk9yZGVyIiwiZm9yRWFjaCIsImltcCIsImZvdW5kIiwiZmluZCIsImhhc0hpZ2hlclJhbmsiLCJpbXBvcnRlZEl0ZW0iLCJtYWtlT3V0T2ZPcmRlclJlcG9ydCIsInJldmVyc2VkSW1wb3J0ZWQiLCJyZXZlcnNlZE9yZGVyIiwiaW1wb3J0c1NvcnRlckFzYyIsImltcG9ydEEiLCJpbXBvcnRCIiwiaW1wb3J0c1NvcnRlckRlc2MiLCJtdXRhdGVSYW5rc1RvQWxwaGFiZXRpemUiLCJhbHBoYWJldGl6ZU9wdGlvbnMiLCJncm91cGVkQnlSYW5rcyIsInJlZHVjZSIsImFjYyIsIkFycmF5IiwiaXNBcnJheSIsImdyb3VwUmFua3MiLCJPYmplY3QiLCJrZXlzIiwic29ydGVyRm4iLCJjb21wYXJhdG9yIiwiY2FzZUluc2Vuc2l0aXZlIiwiYSIsImIiLCJTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImdyb3VwUmFuayIsIm5ld1JhbmsiLCJhbHBoYWJldGl6ZWRSYW5rcyIsImltcG9ydGVkSXRlbU5hbWUiLCJwYXJzZUludCIsImNvbXB1dGVQYXRoUmFuayIsInJhbmtzIiwicGF0aEdyb3VwcyIsInBhdGgiLCJtYXhQb3NpdGlvbiIsImwiLCJwYXR0ZXJuIiwicGF0dGVybk9wdGlvbnMiLCJncm91cCIsInBvc2l0aW9uIiwibm9jb21tZW50IiwiY29tcHV0ZVJhbmsiLCJleGNsdWRlZEltcG9ydFR5cGVzIiwiaW1wVHlwZSIsImhhcyIsImdyb3VwcyIsInJlZ2lzdGVyTm9kZSIsImlzSW5WYXJpYWJsZURlY2xhcmF0b3IiLCJ0eXBlcyIsImNvbnZlcnRHcm91cHNUb1JhbmtzIiwicmFua09iamVjdCIsImluZGV4IiwiZ3JvdXBJdGVtIiwiRXJyb3IiLCJKU09OIiwic3RyaW5naWZ5IiwidW5kZWZpbmVkIiwib21pdHRlZFR5cGVzIiwiY29udmVydFBhdGhHcm91cHNGb3JSYW5rcyIsImFmdGVyIiwiYmVmb3JlIiwidHJhbnNmb3JtZWQiLCJwYXRoR3JvdXAiLCJwb3NpdGlvblN0cmluZyIsImFzc2lnbiIsImdyb3VwTGVuZ3RoIiwiZ3JvdXBJbmRleCIsIk1hdGgiLCJtYXgiLCJrZXkiLCJncm91cE5leHRQb3NpdGlvbiIsInBvdyIsImNlaWwiLCJsb2cxMCIsImZpeE5ld0xpbmVBZnRlckltcG9ydCIsInByZXZpb3VzSW1wb3J0IiwicHJldlJvb3QiLCJlbmRPZkxpbmUiLCJpbnNlcnRUZXh0QWZ0ZXJSYW5nZSIsInJlbW92ZU5ld0xpbmVBZnRlckltcG9ydCIsImN1cnJlbnRJbXBvcnQiLCJjdXJyUm9vdCIsInJhbmdlVG9SZW1vdmUiLCJ0ZXN0IiwicmVtb3ZlUmFuZ2UiLCJtYWtlTmV3bGluZXNCZXR3ZWVuUmVwb3J0IiwibmV3bGluZXNCZXR3ZWVuSW1wb3J0cyIsImdldE51bWJlck9mRW1wdHlMaW5lc0JldHdlZW4iLCJsaW5lc0JldHdlZW5JbXBvcnRzIiwibGluZXMiLCJ0cmltIiwiZW1wdHlMaW5lc0JldHdlZW4iLCJnZXRBbHBoYWJldGl6ZUNvbmZpZyIsIm9wdGlvbnMiLCJhbHBoYWJldGl6ZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXRhIiwiZG9jcyIsInVybCIsImZpeGFibGUiLCJzY2hlbWEiLCJwcm9wZXJ0aWVzIiwicGF0aEdyb3Vwc0V4Y2x1ZGVkSW1wb3J0VHlwZXMiLCJpdGVtcyIsImVudW0iLCJyZXF1aXJlZCIsImRlZmF1bHQiLCJhZGRpdGlvbmFsUHJvcGVydGllcyIsImNyZWF0ZSIsImltcG9ydE9yZGVyUnVsZSIsIlNldCIsImVycm9yIiwiUHJvZ3JhbSIsImxldmVsIiwiaW5jcmVtZW50TGV2ZWwiLCJkZWNyZW1lbnRMZXZlbCIsIkltcG9ydERlY2xhcmF0aW9uIiwiaGFuZGxlSW1wb3J0cyIsInNvdXJjZSIsInZhbHVlIiwiQ2FsbEV4cHJlc3Npb24iLCJoYW5kbGVSZXF1aXJlcyIsInJlcG9ydEFuZFJlc2V0IiwiRnVuY3Rpb25EZWNsYXJhdGlvbiIsIkZ1bmN0aW9uRXhwcmVzc2lvbiIsIkFycm93RnVuY3Rpb25FeHByZXNzaW9uIiwiQmxvY2tTdGF0ZW1lbnQiLCJPYmplY3RFeHByZXNzaW9uIl0sIm1hcHBpbmdzIjoiQUFBQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7QUFFQSxNQUFNQSxnQkFBZ0IsQ0FBQyxTQUFELEVBQVksVUFBWixFQUF3QixRQUF4QixFQUFrQyxTQUFsQyxFQUE2QyxPQUE3QyxDQUF0Qjs7QUFFQTs7QUFFQSxTQUFTQyxPQUFULENBQWlCQyxLQUFqQixFQUF3QjtBQUN0QixTQUFPQSxNQUFNQyxHQUFOLENBQVUsVUFBVUMsQ0FBVixFQUFhO0FBQzVCLFdBQU87QUFDTEMsWUFBTUQsRUFBRUMsSUFESDtBQUVMQyxZQUFNLENBQUNGLEVBQUVFLElBRko7QUFHTEMsWUFBTUgsRUFBRUc7QUFISCxLQUFQO0FBS0QsR0FOTSxFQU1KTixPQU5JLEVBQVA7QUFPRDs7QUFFRCxTQUFTTyx3QkFBVCxDQUFrQ0MsVUFBbEMsRUFBOENGLElBQTlDLEVBQW9ERyxLQUFwRCxFQUEyRDtBQUN6RCxNQUFJQyxxQkFBcUJKLElBQXpCO0FBQ0EsUUFBTUssU0FBUyxFQUFmO0FBQ0EsT0FBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlILEtBQXBCLEVBQTJCRyxHQUEzQixFQUFnQztBQUM5QkYseUJBQXFCRixXQUFXSyxzQkFBWCxDQUFrQ0gsa0JBQWxDLENBQXJCO0FBQ0EsUUFBSUEsc0JBQXNCLElBQTFCLEVBQWdDO0FBQzlCO0FBQ0Q7QUFD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LElBQWUsQ0FBQyw2QkFBZ0J0TSxJQUFoQixDQUFoQixJQUF5QyxDQUFDbUksdUJBQXVCbkksS0FBS3VCLE1BQTVCLENBQTlDLEVBQW1GO0FBQ2pGO0FBQ0Q7QUFDRCxjQUFNekIsT0FBT0UsS0FBSzZDLFNBQUwsQ0FBZSxDQUFmLEVBQWtCK0osS0FBL0I7QUFDQTFFLHFCQUNFdEUsT0FERixFQUVFNUQsSUFGRixFQUdFRixJQUhGLEVBSUUsU0FKRixFQUtFcUgsS0FMRixFQU1FbEcsUUFORixFQU9FMEssNkJBUEY7QUFTRCxPQTdCSTtBQThCTCxzQkFBZ0IsU0FBU29CLGNBQVQsR0FBMEI7QUFDeEMsWUFBSXJDLDJCQUEyQixRQUEvQixFQUF5QztBQUN2Q0Qsb0NBQTBCN0csT0FBMUIsRUFBbUMzQyxRQUFuQyxFQUE2Q3lKLHNCQUE3QztBQUNEOztBQUVELFlBQUlRLFlBQVlySCxLQUFaLEtBQXNCLFFBQTFCLEVBQW9DO0FBQ2xDK0IsbUNBQXlCM0UsUUFBekIsRUFBbUNpSyxXQUFuQztBQUNEOztBQUVEN0YsNkJBQXFCekIsT0FBckIsRUFBOEIzQyxRQUE5Qjs7QUFFQUEsbUJBQVcsRUFBWDtBQUNELE9BMUNJO0FBMkNMK0wsMkJBQXFCVCxjQTNDaEI7QUE0Q0xVLDBCQUFvQlYsY0E1Q2Y7QUE2Q0xXLCtCQUF5QlgsY0E3Q3BCO0FBOENMWSxzQkFBZ0JaLGNBOUNYO0FBK0NMYSx3QkFBa0JiLGNBL0NiO0FBZ0RMLGtDQUE0QkMsY0FoRHZCO0FBaURMLGlDQUEyQkEsY0FqRHRCO0FBa0RMLHNDQUFnQ0EsY0FsRDNCO0FBbURMLDZCQUF1QkEsY0FuRGxCO0FBb0RMLCtCQUF5QkE7QUFwRHBCLEtBQVA7QUFzREQ7QUEzSmMsQ0FBakIiLCJmaWxlIjoib3JkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCdcblxuaW1wb3J0IG1pbmltYXRjaCBmcm9tICdtaW5pbWF0Y2gnXG5pbXBvcnQgaW1wb3J0VHlwZSBmcm9tICcuLi9jb3JlL2ltcG9ydFR5cGUnXG5pbXBvcnQgaXNTdGF0aWNSZXF1aXJlIGZyb20gJy4uL2NvcmUvc3RhdGljUmVxdWlyZSdcbmltcG9ydCBkb2NzVXJsIGZyb20gJy4uL2RvY3NVcmwnXG5cbmNvbnN0IGRlZmF1bHRHcm91cHMgPSBbJ2J1aWx0aW4nLCAnZXh0ZXJuYWwnLCAncGFyZW50JywgJ3NpYmxpbmcnLCAnaW5kZXgnXVxuXG4vLyBSRVBPUlRJTkcgQU5EIEZJWElOR1xuXG5mdW5jdGlvbiByZXZlcnNlKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5tYXAoZnVuY3Rpb24gKHYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdi5uYW1lLFxuICAgICAgcmFuazogLXYucmFuayxcbiAgICAgIG5vZGU6IHYubm9kZSxcbiAgICB9XG4gIH0pLnJldmVyc2UoKVxufVxuXG5mdW5jdGlvbiBnZXRUb2tlbnNPckNvbW1lbnRzQWZ0ZXIoc291cmNlQ29kZSwgbm9kZSwgY291bnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlT3JUb2tlbiA9IG5vZGVcbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgY3VycmVudE5vZGVPclRva2VuID0gc291cmNlQ29kZS5nZXRUb2tlbk9yQ29tbWVudEFmdGVyKGN1cnJlbnROb2RlT3JUb2tlbilcbiAgICBpZiAoY3VycmVudE5vZGVPclRva2VuID09IG51bGwpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJlc3VsdC5wdXNoKGN1cnJlbnROb2RlT3JUb2tlbilcbiAgfVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGdldFRva2Vuc09yQ29tbWVudHNCZWZvcmUoc291cmNlQ29kZSwgbm9kZSwgY291bnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlT3JUb2tlbiA9IG5vZGVcbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgY3VycmVudE5vZGVPclRva2VuID0gc291cmNlQ29kZS5nZXRUb2tlbk9yQ29tbWVudEJlZm9yZShjdXJyZW50Tm9kZU9yVG9rZW4pXG4gICAgaWYgKGN1cnJlbnROb2RlT3JUb2tlbiA9PSBudWxsKSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgICByZXN1bHQucHVzaChjdXJyZW50Tm9kZU9yVG9rZW4pXG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5yZXZlcnNlKClcbn1cblxuZnVuY3Rpb24gdGFrZVRva2Vuc0FmdGVyV2hpbGUoc291cmNlQ29kZSwgbm9kZSwgY29uZGl0aW9uKSB7XG4gIGNvbnN0IHRva2VucyA9IGdldFRva2Vuc09yQ29tbWVudHNBZnRlcihzb3VyY2VDb2RlLCBub2RlLCAxMDApXG4gIGNvbnN0IHJlc3VsdCA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGNvbmRpdGlvbih0b2tlbnNbaV0pKSB7XG4gICAgICByZXN1bHQucHVzaCh0b2tlbnNbaV0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB0YWtlVG9rZW5zQmVmb3JlV2hpbGUoc291cmNlQ29kZSwgbm9kZSwgY29uZGl0aW9uKSB7XG4gIGNvbnN0IHRva2VucyA9IGdldFRva2Vuc09yQ29tbWVudHNCZWZvcmUoc291cmNlQ29kZSwgbm9kZSwgMTAwKVxuICBjb25zdCByZXN1bHQgPSBbXVxuICBmb3IgKGxldCBpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGNvbmRpdGlvbih0b2tlbnNbaV0pKSB7XG4gICAgICByZXN1bHQucHVzaCh0b2tlbnNbaV0pXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5yZXZlcnNlKClcbn1cblxuZnVuY3Rpb24gZmluZE91dE9mT3JkZXIoaW1wb3J0ZWQpIHtcbiAgaWYgKGltcG9ydGVkLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXVxuICB9XG4gIGxldCBtYXhTZWVuUmFua05vZGUgPSBpbXBvcnRlZFswXVxuICByZXR1cm4gaW1wb3J0ZWQuZmlsdGVyKGZ1bmN0aW9uIChpbXBvcnRlZE1vZHVsZSkge1xuICAgIGNvbnN0IHJlcyA9IGltcG9ydGVkTW9kdWxlLnJhbmsgPCBtYXhTZWVuUmFua05vZGUucmFua1xuICAgIGlmIChtYXhTZWVuUmFua05vZGUucmFuayA8IGltcG9ydGVkTW9kdWxlLnJhbmspIHtcbiAgICAgIG1heFNlZW5SYW5rTm9kZSA9IGltcG9ydGVkTW9kdWxlXG4gICAgfVxuICAgIHJldHVybiByZXNcbiAgfSlcbn1cblxuZnVuY3Rpb24gZmluZFJvb3ROb2RlKG5vZGUpIHtcbiAgbGV0IHBhcmVudCA9IG5vZGVcbiAgd2hpbGUgKHBhcmVudC5wYXJlbnQgIT0gbnVsbCAmJiBwYXJlbnQucGFyZW50LmJvZHkgPT0gbnVsbCkge1xuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRcbiAgfVxuICByZXR1cm4gcGFyZW50XG59XG5cbmZ1bmN0aW9uIGZpbmRFbmRPZkxpbmVXaXRoQ29tbWVudHMoc291cmNlQ29kZSwgbm9kZSkge1xuICBjb25zdCB0b2tlbnNUb0VuZE9mTGluZSA9IHRha2VUb2tlbnNBZnRlcldoaWxlKHNvdXJjZUNvZGUsIG5vZGUsIGNvbW1lbnRPblNhbWVMaW5lQXMobm9kZSkpXG4gIGxldCBlbmRPZlRva2VucyA9IHRva2Vuc1RvRW5kT2ZMaW5lLmxlbmd0aCA+IDBcbiAgICA/IHRva2Vuc1RvRW5kT2ZMaW5lW3Rva2Vuc1RvRW5kT2ZMaW5lLmxlbmd0aCAtIDFdLnJhbmdlWzFdXG4gICAgOiBub2RlLnJhbmdlWzFdXG4gIGxldCByZXN1bHQgPSBlbmRPZlRva2Vuc1xuICBmb3IgKGxldCBpID0gZW5kT2ZUb2tlbnM7IGkgPCBzb3VyY2VDb2RlLnRleHQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc291cmNlQ29kZS50ZXh0W2ldID09PSAnXFxuJykge1xuICAgICAgcmVzdWx0ID0gaSArIDFcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIGlmIChzb3VyY2VDb2RlLnRleHRbaV0gIT09ICcgJyAmJiBzb3VyY2VDb2RlLnRleHRbaV0gIT09ICdcXHQnICYmIHNvdXJjZUNvZGUudGV4dFtpXSAhPT0gJ1xccicpIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJlc3VsdCA9IGkgKyAxXG4gIH1cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiBjb21tZW50T25TYW1lTGluZUFzKG5vZGUpIHtcbiAgcmV0dXJuIHRva2VuID0+ICh0b2tlbi50eXBlID09PSAnQmxvY2snIHx8ICB0b2tlbi50eXBlID09PSAnTGluZScpICYmXG4gICAgICB0b2tlbi5sb2Muc3RhcnQubGluZSA9PT0gdG9rZW4ubG9jLmVuZC5saW5lICYmXG4gICAgICB0b2tlbi5sb2MuZW5kLmxpbmUgPT09IG5vZGUubG9jLmVuZC5saW5lXG59XG5cbmZ1bmN0aW9uIGZpbmRTdGFydE9mTGluZVdpdGhDb21tZW50cyhzb3VyY2VDb2RlLCBub2RlKSB7XG4gIGNvbnN0IHRva2Vuc1RvRW5kT2ZMaW5lID0gdGFrZVRva2Vuc0JlZm9yZVdoaWxlKHNvdXJjZUNvZGUsIG5vZGUsIGNvbW1lbnRPblNhbWVMaW5lQXMobm9kZSkpXG4gIGxldCBzdGFydE9mVG9rZW5zID0gdG9rZW5zVG9FbmRPZkxpbmUubGVuZ3RoID4gMCA/IHRva2Vuc1RvRW5kT2ZMaW5lWzBdLnJhbmdlWzBdIDogbm9kZS5yYW5nZVswXVxuICBsZXQgcmVzdWx0ID0gc3RhcnRPZlRva2Vuc1xuICBmb3IgKGxldCBpID0gc3RhcnRPZlRva2VucyAtIDE7IGkgPiAwOyBpLS0pIHtcbiAgICBpZiAoc291cmNlQ29kZS50ZXh0W2ldICE9PSAnICcgJiYgc291cmNlQ29kZS50ZXh0W2ldICE9PSAnXFx0Jykge1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgcmVzdWx0ID0gaVxuICB9XG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gaXNQbGFpblJlcXVpcmVNb2R1bGUobm9kZSkge1xuICBpZiAobm9kZS50eXBlICE9PSAnVmFyaWFibGVEZWNsYXJhdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAobm9kZS5kZWNsYXJhdGlvbnMubGVuZ3RoICE9PSAxKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgY29uc3QgZGVjbCA9IG5vZGUuZGVjbGFyYXRpb25zWzBdXG4gIGNvbnN0IHJlc3VsdCA9IGRlY2wuaWQgJiZcbiAgICAoZGVjbC5pZC50eXBlID09PSAnSWRlbnRpZmllcicgfHwgZGVjbC5pZC50eXBlID09PSAnT2JqZWN0UGF0dGVybicpICYmXG4gICAgZGVjbC5pbml0ICE9IG51bGwgJiZcbiAgICBkZWNsLmluaXQudHlwZSA9PT0gJ0NhbGxFeHByZXNzaW9uJyAmJlxuICAgIGRlY2wuaW5pdC5jYWxsZWUgIT0gbnVsbCAmJlxuICAgIGRlY2wuaW5pdC5jYWxsZWUubmFtZSA9PT0gJ3JlcXVpcmUnICYmXG4gICAgZGVjbC5pbml0LmFyZ3VtZW50cyAhPSBudWxsICYmXG4gICAgZGVjbC5pbml0LmFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiZcbiAgICBkZWNsLmluaXQuYXJndW1lbnRzWzBdLnR5cGUgPT09ICdMaXRlcmFsJ1xuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGlzUGxhaW5JbXBvcnRNb2R1bGUobm9kZSkge1xuICByZXR1cm4gbm9kZS50eXBlID09PSAnSW1wb3J0RGVjbGFyYXRpb24nICYmIG5vZGUuc3BlY2lmaWVycyAhPSBudWxsICYmIG5vZGUuc3BlY2lmaWVycy5sZW5ndGggPiAwXG59XG5cbmZ1bmN0aW9uIGNhbkNyb3NzTm9kZVdoaWxlUmVvcmRlcihub2RlKSB7XG4gIHJldHVybiBpc1BsYWluUmVxdWlyZU1vZHVsZShub2RlKSB8fCBpc1BsYWluSW1wb3J0TW9kdWxlKG5vZGUpXG59XG5cbmZ1bmN0aW9uIGNhblJlb3JkZXJJdGVtcyhmaXJzdE5vZGUsIHNlY29uZE5vZGUpIHtcbiAgY29uc3QgcGFyZW50ID0gZmlyc3ROb2RlLnBhcmVudFxuICBjb25zdCBbZmlyc3RJbmRleCwgc2Vjb25kSW5kZXhdID0gW1xuICAgIHBhcmVudC5ib2R5LmluZGV4T2YoZmlyc3ROb2RlKSxcbiAgICBwYXJlbnQuYm9keS5pbmRleE9mKHNlY29uZE5vZGUpLFxuICBdLnNvcnQoKVxuICBjb25zdCBub2Rlc0JldHdlZW4gPSBwYXJlbnQuYm9keS5zbGljZShmaXJzdEluZGV4LCBzZWNvbmRJbmRleCArIDEpXG4gIGZvciAodmFyIG5vZGVCZXR3ZWVuIG9mIG5vZGVzQmV0d2Vlbikge1xuICAgIGlmICghY2FuQ3Jvc3NOb2RlV2hpbGVSZW9yZGVyKG5vZGVCZXR3ZWVuKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpeE91dE9mT3JkZXIoY29udGV4dCwgZmlyc3ROb2RlLCBzZWNvbmROb2RlLCBvcmRlcikge1xuICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKClcblxuICBjb25zdCBmaXJzdFJvb3QgPSBmaW5kUm9vdE5vZGUoZmlyc3ROb2RlLm5vZGUpXG4gIGNvbnN0IGZpcnN0Um9vdFN0YXJ0ID0gZmluZFN0YXJ0T2ZMaW5lV2l0aENvbW1lbnRzKHNvdXJjZUNvZGUsIGZpcnN0Um9vdClcbiAgY29uc3QgZmlyc3RSb290RW5kID0gZmluZEVuZE9mTGluZVdpdGhDb21tZW50cyhzb3VyY2VDb2RlLCBmaXJzdFJvb3QpXG5cbiAgY29uc3Qgc2Vjb25kUm9vdCA9IGZpbmRSb290Tm9kZShzZWNvbmROb2RlLm5vZGUpXG4gIGNvbnN0IHNlY29uZFJvb3RTdGFydCA9IGZpbmRTdGFydE9mTGluZVdpdGhDb21tZW50cyhzb3VyY2VDb2RlLCBzZWNvbmRSb290KVxuICBjb25zdCBzZWNvbmRSb290RW5kID0gZmluZEVuZE9mTGluZVdpdGhDb21tZW50cyhzb3VyY2VDb2RlLCBzZWNvbmRSb290KVxuICBjb25zdCBjYW5GaXggPSBjYW5SZW9yZGVySXRlbXMoZmlyc3RSb290LCBzZWNvbmRSb290KVxuXG4gIGxldCBuZXdDb2RlID0gc291cmNlQ29kZS50ZXh0LnN1YnN0cmluZyhzZWNvbmRSb290U3RhcnQsIHNlY29uZFJvb3RFbmQpXG4gIGlmIChuZXdDb2RlW25ld0NvZGUubGVuZ3RoIC0gMV0gIT09ICdcXG4nKSB7XG4gICAgbmV3Q29kZSA9IG5ld0NvZGUgKyAnXFxuJ1xuICB9XG5cbiAgY29uc3QgbWVzc2FnZSA9ICdgJyArIHNlY29uZE5vZGUubmFtZSArICdgIGltcG9ydCBzaG91bGQgb2NjdXIgJyArIG9yZGVyICtcbiAgICAgICcgaW1wb3J0IG9mIGAnICsgZmlyc3ROb2RlLm5hbWUgKyAnYCdcblxuICBpZiAob3JkZXIgPT09ICdiZWZvcmUnKSB7XG4gICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgbm9kZTogc2Vjb25kTm9kZS5ub2RlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIGZpeDogY2FuRml4ICYmIChmaXhlciA9PlxuICAgICAgICBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKFxuICAgICAgICAgIFtmaXJzdFJvb3RTdGFydCwgc2Vjb25kUm9vdEVuZF0sXG4gICAgICAgICAgbmV3Q29kZSArIHNvdXJjZUNvZGUudGV4dC5zdWJzdHJpbmcoZmlyc3RSb290U3RhcnQsIHNlY29uZFJvb3RTdGFydClcbiAgICAgICAgKSksXG4gICAgfSlcbiAgfSBlbHNlIGlmIChvcmRlciA9PT0gJ2FmdGVyJykge1xuICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgIG5vZGU6IHNlY29uZE5vZGUubm9kZSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBmaXg6IGNhbkZpeCAmJiAoZml4ZXIgPT5cbiAgICAgICAgZml4ZXIucmVwbGFjZVRleHRSYW5nZShcbiAgICAgICAgICBbc2Vjb25kUm9vdFN0YXJ0LCBmaXJzdFJvb3RFbmRdLFxuICAgICAgICAgIHNvdXJjZUNvZGUudGV4dC5zdWJzdHJpbmcoc2Vjb25kUm9vdEVuZCwgZmlyc3RSb290RW5kKSArIG5ld0NvZGVcbiAgICAgICAgKSksXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiByZXBvcnRPdXRPZk9yZGVyKGNvbnRleHQsIGltcG9ydGVkLCBvdXRPZk9yZGVyLCBvcmRlcikge1xuICBvdXRPZk9yZGVyLmZvckVhY2goZnVuY3Rpb24gKGltcCkge1xuICAgIGNvbnN0IGZvdW5kID0gaW1wb3J0ZWQuZmluZChmdW5jdGlvbiBoYXNIaWdoZXJSYW5rKGltcG9ydGVkSXRlbSkge1xuICAgICAgcmV0dXJuIGltcG9ydGVkSXRlbS5yYW5rID4gaW1wLnJhbmtcbiAgICB9KVxuICAgIGZpeE91dE9mT3JkZXIoY29udGV4dCwgZm91bmQsIGltcCwgb3JkZXIpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIG1ha2VPdXRPZk9yZGVyUmVwb3J0KGNvbnRleHQsIGltcG9ydGVkKSB7XG4gIGNvbnN0IG91dE9mT3JkZXIgPSBmaW5kT3V0T2ZPcmRlcihpbXBvcnRlZClcbiAgaWYgKCFvdXRPZk9yZGVyLmxlbmd0aCkge1xuICAgIHJldHVyblxuICB9XG4gIC8vIFRoZXJlIGFyZSB0aGluZ3MgdG8gcmVwb3J0LiBUcnkgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiByZXBvcnRlZCBlcnJvcnMuXG4gIGNvbnN0IHJldmVyc2VkSW1wb3J0ZWQgPSByZXZlcnNlKGltcG9ydGVkKVxuICBjb25zdCByZXZlcnNlZE9yZGVyID0gZmluZE91dE9mT3JkZXIocmV2ZXJzZWRJbXBvcnRlZClcbiAgaWYgKHJldmVyc2VkT3JkZXIubGVuZ3RoIDwgb3V0T2ZPcmRlci5sZW5ndGgpIHtcbiAgICByZXBvcnRPdXRPZk9yZGVyKGNvbnRleHQsIHJldmVyc2VkSW1wb3J0ZWQsIHJldmVyc2VkT3JkZXIsICdhZnRlcicpXG4gICAgcmV0dXJuXG4gIH1cbiAgcmVwb3J0T3V0T2ZPcmRlcihjb250ZXh0LCBpbXBvcnRlZCwgb3V0T2ZPcmRlciwgJ2JlZm9yZScpXG59XG5cbmZ1bmN0aW9uIGltcG9ydHNTb3J0ZXJBc2MoaW1wb3J0QSwgaW1wb3J0Qikge1xuICBpZiAoaW1wb3J0QSA8IGltcG9ydEIpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIGlmIChpbXBvcnRBID4gaW1wb3J0Qikge1xuICAgIHJldHVybiAxXG4gIH1cblxuICByZXR1cm4gMFxufVxuXG5mdW5jdGlvbiBpbXBvcnRzU29ydGVyRGVzYyhpbXBvcnRBLCBpbXBvcnRCKSB7XG4gIGlmIChpbXBvcnRBIDwgaW1wb3J0Qikge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBpZiAoaW1wb3J0QSA+IGltcG9ydEIpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIHJldHVybiAwXG59XG5cbmZ1bmN0aW9uIG11dGF0ZVJhbmtzVG9BbHBoYWJldGl6ZShpbXBvcnRlZCwgYWxwaGFiZXRpemVPcHRpb25zKSB7XG4gIGNvbnN0IGdyb3VwZWRCeVJhbmtzID0gaW1wb3J0ZWQucmVkdWNlKGZ1bmN0aW9uKGFjYywgaW1wb3J0ZWRJdGVtKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFjY1tpbXBvcnRlZEl0ZW0ucmFua10pKSB7XG4gICAgICBhY2NbaW1wb3J0ZWRJdGVtLnJhbmtdID0gW11cbiAgICB9XG4gICAgYWNjW2ltcG9ydGVkSXRlbS5yYW5rXS5wdXNoKGltcG9ydGVkSXRlbS5uYW1lKVxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG5cbiAgY29uc3QgZ3JvdXBSYW5rcyA9IE9iamVjdC5rZXlzKGdyb3VwZWRCeVJhbmtzKVxuXG4gIGNvbnN0IHNvcnRlckZuID0gYWxwaGFiZXRpemVPcHRpb25zLm9yZGVyID09PSAnYXNjJyA/IGltcG9ydHNTb3J0ZXJBc2MgOiBpbXBvcnRzU29ydGVyRGVzY1xuICBjb25zdCBjb21wYXJhdG9yID0gYWxwaGFiZXRpemVPcHRpb25zLmNhc2VJbnNlbnNpdGl2ZSA/IChhLCBiKSA9PiBzb3J0ZXJGbihTdHJpbmcoYSkudG9Mb3dlckNhc2UoKSwgU3RyaW5nKGIpLnRvTG93ZXJDYXNlKCkpIDogKGEsIGIpID0+IHNvcnRlckZuKGEsIGIpXG4gIC8vIHNvcnQgaW1wb3J0cyBsb2NhbGx5IHdpdGhpbiB0aGVpciBncm91cFxuICBncm91cFJhbmtzLmZvckVhY2goZnVuY3Rpb24oZ3JvdXBSYW5rKSB7XG4gICAgZ3JvdXBlZEJ5UmFua3NbZ3JvdXBSYW5rXS5zb3J0KGNvbXBhcmF0b3IpXG4gIH0pXG5cbiAgLy8gYXNzaWduIGdsb2JhbGx5IHVuaXF1ZSByYW5rIHRvIGVhY2ggaW1wb3J0XG4gIGxldCBuZXdSYW5rID0gMFxuICBjb25zdCBhbHBoYWJldGl6ZWRSYW5rcyA9IGdyb3VwUmFua3Muc29ydCgpLnJlZHVjZShmdW5jdGlvbihhY2MsIGdyb3VwUmFuaykge1xuICAgIGdyb3VwZWRCeVJhbmtzW2dyb3VwUmFua10uZm9yRWFjaChmdW5jdGlvbihpbXBvcnRlZEl0ZW1OYW1lKSB7XG4gICAgICBhY2NbaW1wb3J0ZWRJdGVtTmFtZV0gPSBwYXJzZUludChncm91cFJhbmssIDEwKSArIG5ld1JhbmtcbiAgICAgIG5ld1JhbmsgKz0gMVxuICAgIH0pXG4gICAgcmV0dXJuIGFjY1xuICB9LCB7fSlcblxuICAvLyBtdXRhdGUgdGhlIG9yaWdpbmFsIGdyb3VwLXJhbmsgd2l0aCBhbHBoYWJldGl6ZWQtcmFua1xuICBpbXBvcnRlZC5mb3JFYWNoKGZ1bmN0aW9uKGltcG9ydGVkSXRlbSkge1xuICAgIGltcG9ydGVkSXRlbS5yYW5rID0gYWxwaGFiZXRpemVkUmFua3NbaW1wb3J0ZWRJdGVtLm5hbWVdXG4gIH0pXG59XG5cbi8vIERFVEVDVElOR1xuXG5mdW5jdGlvbiBjb21wdXRlUGF0aFJhbmsocmFua3MsIHBhdGhHcm91cHMsIHBhdGgsIG1heFBvc2l0aW9uKSB7XG4gIGZvciAobGV0IGkgPSAwLCBsID0gcGF0aEdyb3Vwcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBjb25zdCB7IHBhdHRlcm4sIHBhdHRlcm5PcHRpb25zLCBncm91cCwgcG9zaXRpb24gPSAxIH0gPSBwYXRoR3JvdXBzW2ldXG4gICAgaWYgKG1pbmltYXRjaChwYXRoLCBwYXR0ZXJuLCBwYXR0ZXJuT3B0aW9ucyB8fCB7IG5vY29tbWVudDogdHJ1ZSB9KSkge1xuICAgICAgcmV0dXJuIHJhbmtzW2dyb3VwXSArIChwb3NpdGlvbiAvIG1heFBvc2l0aW9uKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wdXRlUmFuayhjb250ZXh0LCByYW5rcywgbmFtZSwgdHlwZSwgZXhjbHVkZWRJbXBvcnRUeXBlcykge1xuICBjb25zdCBpbXBUeXBlID0gaW1wb3J0VHlwZShuYW1lLCBjb250ZXh0KVxuICBsZXQgcmFua1xuICBpZiAoIWV4Y2x1ZGVkSW1wb3J0VHlwZXMuaGFzKGltcFR5cGUpKSB7XG4gICAgcmFuayA9IGNvbXB1dGVQYXRoUmFuayhyYW5rcy5ncm91cHMsIHJhbmtzLnBhdGhHcm91cHMsIG5hbWUsIHJhbmtzLm1heFBvc2l0aW9uKVxuICB9XG4gIGlmICghcmFuaykge1xuICAgIHJhbmsgPSByYW5rcy5ncm91cHNbaW1wVHlwZV1cbiAgfVxuICBpZiAodHlwZSAhPT0gJ2ltcG9ydCcpIHtcbiAgICByYW5rICs9IDEwMFxuICB9XG5cbiAgcmV0dXJuIHJhbmtcbn1cblxuZnVuY3Rpb24gcmVnaXN0ZXJOb2RlKGNvbnRleHQsIG5vZGUsIG5hbWUsIHR5cGUsIHJhbmtzLCBpbXBvcnRlZCwgZXhjbHVkZWRJbXBvcnRUeXBlcykge1xuICBjb25zdCByYW5rID0gY29tcHV0ZVJhbmsoY29udGV4dCwgcmFua3MsIG5hbWUsIHR5cGUsIGV4Y2x1ZGVkSW1wb3J0VHlwZXMpXG4gIGlmIChyYW5rICE9PSAtMSkge1xuICAgIGltcG9ydGVkLnB1c2goe25hbWUsIHJhbmssIG5vZGV9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzSW5WYXJpYWJsZURlY2xhcmF0b3Iobm9kZSkge1xuICByZXR1cm4gbm9kZSAmJlxuICAgIChub2RlLnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InIHx8IGlzSW5WYXJpYWJsZURlY2xhcmF0b3Iobm9kZS5wYXJlbnQpKVxufVxuXG5jb25zdCB0eXBlcyA9IFsnYnVpbHRpbicsICdleHRlcm5hbCcsICdpbnRlcm5hbCcsICd1bmtub3duJywgJ3BhcmVudCcsICdzaWJsaW5nJywgJ2luZGV4J11cblxuLy8gQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0eXBlLXJhbmsgcGFpcnMuXG4vLyBFeGFtcGxlOiB7IGluZGV4OiAwLCBzaWJsaW5nOiAxLCBwYXJlbnQ6IDEsIGV4dGVybmFsOiAxLCBidWlsdGluOiAyLCBpbnRlcm5hbDogMiB9XG4vLyBXaWxsIHRocm93IGFuIGVycm9yIGlmIGl0IGNvbnRhaW5zIGEgdHlwZSB0aGF0IGRvZXMgbm90IGV4aXN0LCBvciBoYXMgYSBkdXBsaWNhdGVcbmZ1bmN0aW9uIGNvbnZlcnRHcm91cHNUb1JhbmtzKGdyb3Vwcykge1xuICBjb25zdCByYW5rT2JqZWN0ID0gZ3JvdXBzLnJlZHVjZShmdW5jdGlvbihyZXMsIGdyb3VwLCBpbmRleCkge1xuICAgIGlmICh0eXBlb2YgZ3JvdXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICBncm91cCA9IFtncm91cF1cbiAgICB9XG4gICAgZ3JvdXAuZm9yRWFjaChmdW5jdGlvbihncm91cEl0ZW0pIHtcbiAgICAgIGlmICh0eXBlcy5pbmRleE9mKGdyb3VwSXRlbSkgPT09IC0xKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHJ1bGU6IFVua25vd24gdHlwZSBgJyArXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZ3JvdXBJdGVtKSArICdgJylcbiAgICAgIH1cbiAgICAgIGlmIChyZXNbZ3JvdXBJdGVtXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IGNvbmZpZ3VyYXRpb24gb2YgdGhlIHJ1bGU6IGAnICsgZ3JvdXBJdGVtICsgJ2AgaXMgZHVwbGljYXRlZCcpXG4gICAgICB9XG4gICAgICByZXNbZ3JvdXBJdGVtXSA9IGluZGV4XG4gICAgfSlcbiAgICByZXR1cm4gcmVzXG4gIH0sIHt9KVxuXG4gIGNvbnN0IG9taXR0ZWRUeXBlcyA9IHR5cGVzLmZpbHRlcihmdW5jdGlvbih0eXBlKSB7XG4gICAgcmV0dXJuIHJhbmtPYmplY3RbdHlwZV0gPT09IHVuZGVmaW5lZFxuICB9KVxuXG4gIHJldHVybiBvbWl0dGVkVHlwZXMucmVkdWNlKGZ1bmN0aW9uKHJlcywgdHlwZSkge1xuICAgIHJlc1t0eXBlXSA9IGdyb3Vwcy5sZW5ndGhcbiAgICByZXR1cm4gcmVzXG4gIH0sIHJhbmtPYmplY3QpXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXRoR3JvdXBzRm9yUmFua3MocGF0aEdyb3Vwcykge1xuICBjb25zdCBhZnRlciA9IHt9XG4gIGNvbnN0IGJlZm9yZSA9IHt9XG5cbiAgY29uc3QgdHJhbnNmb3JtZWQgPSBwYXRoR3JvdXBzLm1hcCgocGF0aEdyb3VwLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IHsgZ3JvdXAsIHBvc2l0aW9uOiBwb3NpdGlvblN0cmluZyB9ID0gcGF0aEdyb3VwXG4gICAgbGV0IHBvc2l0aW9uID0gMFxuICAgIGlmIChwb3NpdGlvblN0cmluZyA9PT0gJ2FmdGVyJykge1xuICAgICAgaWYgKCFhZnRlcltncm91cF0pIHtcbiAgICAgICAgYWZ0ZXJbZ3JvdXBdID0gMVxuICAgICAgfVxuICAgICAgcG9zaXRpb24gPSBhZnRlcltncm91cF0rK1xuICAgIH0gZWxzZSBpZiAocG9zaXRpb25TdHJpbmcgPT09ICdiZWZvcmUnKSB7XG4gICAgICBpZiAoIWJlZm9yZVtncm91cF0pIHtcbiAgICAgICAgYmVmb3JlW2dyb3VwXSA9IFtdXG4gICAgICB9XG4gICAgICBiZWZvcmVbZ3JvdXBdLnB1c2goaW5kZXgpXG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHBhdGhHcm91cCwgeyBwb3NpdGlvbiB9KVxuICB9KVxuXG4gIGxldCBtYXhQb3NpdGlvbiA9IDFcblxuICBPYmplY3Qua2V5cyhiZWZvcmUpLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBMZW5ndGggPSBiZWZvcmVbZ3JvdXBdLmxlbmd0aFxuICAgIGJlZm9yZVtncm91cF0uZm9yRWFjaCgoZ3JvdXBJbmRleCwgaW5kZXgpID0+IHtcbiAgICAgIHRyYW5zZm9ybWVkW2dyb3VwSW5kZXhdLnBvc2l0aW9uID0gLTEgKiAoZ3JvdXBMZW5ndGggLSBpbmRleClcbiAgICB9KVxuICAgIG1heFBvc2l0aW9uID0gTWF0aC5tYXgobWF4UG9zaXRpb24sIGdyb3VwTGVuZ3RoKVxuICB9KVxuXG4gIE9iamVjdC5rZXlzKGFmdGVyKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBjb25zdCBncm91cE5leHRQb3NpdGlvbiA9IGFmdGVyW2tleV1cbiAgICBtYXhQb3NpdGlvbiA9IE1hdGgubWF4KG1heFBvc2l0aW9uLCBncm91cE5leHRQb3NpdGlvbiAtIDEpXG4gIH0pXG5cbiAgcmV0dXJuIHtcbiAgICBwYXRoR3JvdXBzOiB0cmFuc2Zvcm1lZCxcbiAgICBtYXhQb3NpdGlvbjogbWF4UG9zaXRpb24gPiAxMCA/IE1hdGgucG93KDEwLCBNYXRoLmNlaWwoTWF0aC5sb2cxMChtYXhQb3NpdGlvbikpKSA6IDEwLFxuICB9XG59XG5cbmZ1bmN0aW9uIGZpeE5ld0xpbmVBZnRlckltcG9ydChjb250ZXh0LCBwcmV2aW91c0ltcG9ydCkge1xuICBjb25zdCBwcmV2Um9vdCA9IGZpbmRSb290Tm9kZShwcmV2aW91c0ltcG9ydC5ub2RlKVxuICBjb25zdCB0b2tlbnNUb0VuZE9mTGluZSA9IHRha2VUb2tlbnNBZnRlcldoaWxlKFxuICAgIGNvbnRleHQuZ2V0U291cmNlQ29kZSgpLCBwcmV2Um9vdCwgY29tbWVudE9uU2FtZUxpbmVBcyhwcmV2Um9vdCkpXG5cbiAgbGV0IGVuZE9mTGluZSA9IHByZXZSb290LnJhbmdlWzFdXG4gIGlmICh0b2tlbnNUb0VuZE9mTGluZS5sZW5ndGggPiAwKSB7XG4gICAgZW5kT2ZMaW5lID0gdG9rZW5zVG9FbmRPZkxpbmVbdG9rZW5zVG9FbmRPZkxpbmUubGVuZ3RoIC0gMV0ucmFuZ2VbMV1cbiAgfVxuICByZXR1cm4gKGZpeGVyKSA9PiBmaXhlci5pbnNlcnRUZXh0QWZ0ZXJSYW5nZShbcHJldlJvb3QucmFuZ2VbMF0sIGVuZE9mTGluZV0sICdcXG4nKVxufVxuXG5mdW5jdGlvbiByZW1vdmVOZXdMaW5lQWZ0ZXJJbXBvcnQoY29udGV4dCwgY3VycmVudEltcG9ydCwgcHJldmlvdXNJbXBvcnQpIHtcbiAgY29uc3Qgc291cmNlQ29kZSA9IGNvbnRleHQuZ2V0U291cmNlQ29kZSgpXG4gIGNvbnN0IHByZXZSb290ID0gZmluZFJvb3ROb2RlKHByZXZpb3VzSW1wb3J0Lm5vZGUpXG4gIGNvbnN0IGN1cnJSb290ID0gZmluZFJvb3ROb2RlKGN1cnJlbnRJbXBvcnQubm9kZSlcbiAgY29uc3QgcmFuZ2VUb1JlbW92ZSA9IFtcbiAgICBmaW5kRW5kT2ZMaW5lV2l0aENvbW1lbnRzKHNvdXJjZUNvZGUsIHByZXZSb290KSxcbiAgICBmaW5kU3RhcnRPZkxpbmVXaXRoQ29tbWVudHMoc291cmNlQ29kZSwgY3VyclJvb3QpLFxuICBdXG4gIGlmICgvXlxccyokLy50ZXN0KHNvdXJjZUNvZGUudGV4dC5zdWJzdHJpbmcocmFuZ2VUb1JlbW92ZVswXSwgcmFuZ2VUb1JlbW92ZVsxXSkpKSB7XG4gICAgcmV0dXJuIChmaXhlcikgPT4gZml4ZXIucmVtb3ZlUmFuZ2UocmFuZ2VUb1JlbW92ZSlcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmZ1bmN0aW9uIG1ha2VOZXdsaW5lc0JldHdlZW5SZXBvcnQgKGNvbnRleHQsIGltcG9ydGVkLCBuZXdsaW5lc0JldHdlZW5JbXBvcnRzKSB7XG4gIGNvbnN0IGdldE51bWJlck9mRW1wdHlMaW5lc0JldHdlZW4gPSAoY3VycmVudEltcG9ydCwgcHJldmlvdXNJbXBvcnQpID0+IHtcbiAgICBjb25zdCBsaW5lc0JldHdlZW5JbXBvcnRzID0gY29udGV4dC5nZXRTb3VyY2VDb2RlKCkubGluZXMuc2xpY2UoXG4gICAgICBwcmV2aW91c0ltcG9ydC5ub2RlLmxvYy5lbmQubGluZSxcbiAgICAgIGN1cnJlbnRJbXBvcnQubm9kZS5sb2Muc3RhcnQubGluZSAtIDFcbiAgICApXG5cbiAgICByZXR1cm4gbGluZXNCZXR3ZWVuSW1wb3J0cy5maWx0ZXIoKGxpbmUpID0+ICFsaW5lLnRyaW0oKS5sZW5ndGgpLmxlbmd0aFxuICB9XG4gIGxldCBwcmV2aW91c0ltcG9ydCA9IGltcG9ydGVkWzBdXG5cbiAgaW1wb3J0ZWQuc2xpY2UoMSkuZm9yRWFjaChmdW5jdGlvbihjdXJyZW50SW1wb3J0KSB7XG4gICAgY29uc3QgZW1wdHlMaW5lc0JldHdlZW4gPSBnZXROdW1iZXJPZkVtcHR5TGluZXNCZXR3ZWVuKGN1cnJlbnRJbXBvcnQsIHByZXZpb3VzSW1wb3J0KVxuXG4gICAgaWYgKG5ld2xpbmVzQmV0d2VlbkltcG9ydHMgPT09ICdhbHdheXMnXG4gICAgICAgIHx8IG5ld2xpbmVzQmV0d2VlbkltcG9ydHMgPT09ICdhbHdheXMtYW5kLWluc2lkZS1ncm91cHMnKSB7XG4gICAgICBpZiAoY3VycmVudEltcG9ydC5yYW5rICE9PSBwcmV2aW91c0ltcG9ydC5yYW5rICYmIGVtcHR5TGluZXNCZXR3ZWVuID09PSAwKSB7XG4gICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICBub2RlOiBwcmV2aW91c0ltcG9ydC5ub2RlLFxuICAgICAgICAgIG1lc3NhZ2U6ICdUaGVyZSBzaG91bGQgYmUgYXQgbGVhc3Qgb25lIGVtcHR5IGxpbmUgYmV0d2VlbiBpbXBvcnQgZ3JvdXBzJyxcbiAgICAgICAgICBmaXg6IGZpeE5ld0xpbmVBZnRlckltcG9ydChjb250ZXh0LCBwcmV2aW91c0ltcG9ydCksXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGN1cnJlbnRJbXBvcnQucmFuayA9PT0gcHJldmlvdXNJbXBvcnQucmFua1xuICAgICAgICAmJiBlbXB0eUxpbmVzQmV0d2VlbiA+IDBcbiAgICAgICAgJiYgbmV3bGluZXNCZXR3ZWVuSW1wb3J0cyAhPT0gJ2Fsd2F5cy1hbmQtaW5zaWRlLWdyb3VwcycpIHtcbiAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgIG5vZGU6IHByZXZpb3VzSW1wb3J0Lm5vZGUsXG4gICAgICAgICAgbWVzc2FnZTogJ1RoZXJlIHNob3VsZCBiZSBubyBlbXB0eSBsaW5lIHdpdGhpbiBpbXBvcnQgZ3JvdXAnLFxuICAgICAgICAgIGZpeDogcmVtb3ZlTmV3TGluZUFmdGVySW1wb3J0KGNvbnRleHQsIGN1cnJlbnRJbXBvcnQsIHByZXZpb3VzSW1wb3J0KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVtcHR5TGluZXNCZXR3ZWVuID4gMCkge1xuICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICBub2RlOiBwcmV2aW91c0ltcG9ydC5ub2RlLFxuICAgICAgICBtZXNzYWdlOiAnVGhlcmUgc2hvdWxkIGJlIG5vIGVtcHR5IGxpbmUgYmV0d2VlbiBpbXBvcnQgZ3JvdXBzJyxcbiAgICAgICAgZml4OiByZW1vdmVOZXdMaW5lQWZ0ZXJJbXBvcnQoY29udGV4dCwgY3VycmVudEltcG9ydCwgcHJldmlvdXNJbXBvcnQpLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBwcmV2aW91c0ltcG9ydCA9IGN1cnJlbnRJbXBvcnRcbiAgfSlcbn1cblxuZnVuY3Rpb24gZ2V0QWxwaGFiZXRpemVDb25maWcob3B0aW9ucykge1xuICBjb25zdCBhbHBoYWJldGl6ZSA9IG9wdGlvbnMuYWxwaGFiZXRpemUgfHwge31cbiAgY29uc3Qgb3JkZXIgPSBhbHBoYWJldGl6ZS5vcmRlciB8fCAnaWdub3JlJ1xuICBjb25zdCBjYXNlSW5zZW5zaXRpdmUgPSBhbHBoYWJldGl6ZS5jYXNlSW5zZW5zaXRpdmUgfHwgZmFsc2VcblxuICByZXR1cm4ge29yZGVyLCBjYXNlSW5zZW5zaXRpdmV9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBtZXRhOiB7XG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nLFxuICAgIGRvY3M6IHtcbiAgICAgIHVybDogZG9jc1VybCgnb3JkZXInKSxcbiAgICB9LFxuXG4gICAgZml4YWJsZTogJ2NvZGUnLFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGdyb3Vwczoge1xuICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhdGhHcm91cHNFeGNsdWRlZEltcG9ydFR5cGVzOiB7XG4gICAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGF0aEdyb3Vwczoge1xuICAgICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgcGF0dGVybjoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwYXR0ZXJuT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBncm91cDoge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICAgICAgICBlbnVtOiB0eXBlcyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiB7XG4gICAgICAgICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgICAgICAgIGVudW06IFsnYWZ0ZXInLCAnYmVmb3JlJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IFsncGF0dGVybicsICdncm91cCddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgICduZXdsaW5lcy1iZXR3ZWVuJzoge1xuICAgICAgICAgICAgZW51bTogW1xuICAgICAgICAgICAgICAnaWdub3JlJyxcbiAgICAgICAgICAgICAgJ2Fsd2F5cycsXG4gICAgICAgICAgICAgICdhbHdheXMtYW5kLWluc2lkZS1ncm91cHMnLFxuICAgICAgICAgICAgICAnbmV2ZXInLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFscGhhYmV0aXplOiB7XG4gICAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgY2FzZUluc2Vuc2l0aXZlOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcmRlcjoge1xuICAgICAgICAgICAgICAgIGVudW06IFsnaWdub3JlJywgJ2FzYycsICdkZXNjJ10sXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogJ2lnbm9yZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uIGltcG9ydE9yZGVyUnVsZSAoY29udGV4dCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb250ZXh0Lm9wdGlvbnNbMF0gfHwge31cbiAgICBjb25zdCBuZXdsaW5lc0JldHdlZW5JbXBvcnRzID0gb3B0aW9uc1snbmV3bGluZXMtYmV0d2VlbiddIHx8ICdpZ25vcmUnXG4gICAgY29uc3QgcGF0aEdyb3Vwc0V4Y2x1ZGVkSW1wb3J0VHlwZXMgPSBuZXcgU2V0KG9wdGlvbnNbJ3BhdGhHcm91cHNFeGNsdWRlZEltcG9ydFR5cGVzJ10gfHwgWydidWlsdGluJywgJ2V4dGVybmFsJ10pXG4gICAgY29uc3QgYWxwaGFiZXRpemUgPSBnZXRBbHBoYWJldGl6ZUNvbmZpZyhvcHRpb25zKVxuICAgIGxldCByYW5rc1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgcGF0aEdyb3VwcywgbWF4UG9zaXRpb24gfSA9IGNvbnZlcnRQYXRoR3JvdXBzRm9yUmFua3Mob3B0aW9ucy5wYXRoR3JvdXBzIHx8IFtdKVxuICAgICAgcmFua3MgPSB7XG4gICAgICAgIGdyb3VwczogY29udmVydEdyb3Vwc1RvUmFua3Mob3B0aW9ucy5ncm91cHMgfHwgZGVmYXVsdEdyb3VwcyksXG4gICAgICAgIHBhdGhHcm91cHMsXG4gICAgICAgIG1heFBvc2l0aW9uLFxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBNYWxmb3JtZWQgY29uZmlndXJhdGlvblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUHJvZ3JhbTogZnVuY3Rpb24obm9kZSkge1xuICAgICAgICAgIGNvbnRleHQucmVwb3J0KG5vZGUsIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuICAgIGxldCBpbXBvcnRlZCA9IFtdXG4gICAgbGV0IGxldmVsID0gMFxuXG4gICAgZnVuY3Rpb24gaW5jcmVtZW50TGV2ZWwoKSB7XG4gICAgICBsZXZlbCsrXG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlY3JlbWVudExldmVsKCkge1xuICAgICAgbGV2ZWwtLVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBJbXBvcnREZWNsYXJhdGlvbjogZnVuY3Rpb24gaGFuZGxlSW1wb3J0cyhub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnNwZWNpZmllcnMubGVuZ3RoKSB7IC8vIElnbm9yaW5nIHVuYXNzaWduZWQgaW1wb3J0c1xuICAgICAgICAgIGNvbnN0IG5hbWUgPSBub2RlLnNvdXJjZS52YWx1ZVxuICAgICAgICAgIHJlZ2lzdGVyTm9kZShcbiAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICdpbXBvcnQnLFxuICAgICAgICAgICAgcmFua3MsXG4gICAgICAgICAgICBpbXBvcnRlZCxcbiAgICAgICAgICAgIHBhdGhHcm91cHNFeGNsdWRlZEltcG9ydFR5cGVzXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgQ2FsbEV4cHJlc3Npb246IGZ1bmN0aW9uIGhhbmRsZVJlcXVpcmVzKG5vZGUpIHtcbiAgICAgICAgaWYgKGxldmVsICE9PSAwIHx8ICFpc1N0YXRpY1JlcXVpcmUobm9kZSkgfHwgIWlzSW5WYXJpYWJsZURlY2xhcmF0b3Iobm9kZS5wYXJlbnQpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZSA9IG5vZGUuYXJndW1lbnRzWzBdLnZhbHVlXG4gICAgICAgIHJlZ2lzdGVyTm9kZShcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICAncmVxdWlyZScsXG4gICAgICAgICAgcmFua3MsXG4gICAgICAgICAgaW1wb3J0ZWQsXG4gICAgICAgICAgcGF0aEdyb3Vwc0V4Y2x1ZGVkSW1wb3J0VHlwZXNcbiAgICAgICAgKVxuICAgICAgfSxcbiAgICAgICdQcm9ncmFtOmV4aXQnOiBmdW5jdGlvbiByZXBvcnRBbmRSZXNldCgpIHtcbiAgICAgICAgaWYgKG5ld2xpbmVzQmV0d2VlbkltcG9ydHMgIT09ICdpZ25vcmUnKSB7XG4gICAgICAgICAgbWFrZU5ld2xpbmVzQmV0d2VlblJlcG9ydChjb250ZXh0LCBpbXBvcnRlZCwgbmV3bGluZXNCZXR3ZWVuSW1wb3J0cylcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhbHBoYWJldGl6ZS5vcmRlciAhPT0gJ2lnbm9yZScpIHtcbiAgICAgICAgICBtdXRhdGVSYW5rc1RvQWxwaGFiZXRpemUoaW1wb3J0ZWQsIGFscGhhYmV0aXplKVxuICAgICAgICB9XG5cbiAgICAgICAgbWFrZU91dE9mT3JkZXJSZXBvcnQoY29udGV4dCwgaW1wb3J0ZWQpXG5cbiAgICAgICAgaW1wb3J0ZWQgPSBbXVxuICAgICAgfSxcbiAgICAgIEZ1bmN0aW9uRGVjbGFyYXRpb246IGluY3JlbWVudExldmVsLFxuICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiBpbmNyZW1lbnRMZXZlbCxcbiAgICAgIEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBpbmNyZW1lbnRMZXZlbCxcbiAgICAgIEJsb2NrU3RhdGVtZW50OiBpbmNyZW1lbnRMZXZlbCxcbiAgICAgIE9iamVjdEV4cHJlc3Npb246IGluY3JlbWVudExldmVsLFxuICAgICAgJ0Z1bmN0aW9uRGVjbGFyYXRpb246ZXhpdCc6IGRlY3JlbWVudExldmVsLFxuICAgICAgJ0Z1bmN0aW9uRXhwcmVzc2lvbjpleGl0JzogZGVjcmVtZW50TGV2ZWwsXG4gICAgICAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246ZXhpdCc6IGRlY3JlbWVudExldmVsLFxuICAgICAgJ0Jsb2NrU3RhdGVtZW50OmV4aXQnOiBkZWNyZW1lbnRMZXZlbCxcbiAgICAgICdPYmplY3RFeHByZXNzaW9uOmV4aXQnOiBkZWNyZW1lbnRMZXZlbCxcbiAgICB9XG4gIH0sXG59XG4iXX0= \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/prefer-default-export.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/prefer-default-export.js new file mode 100644 index 0000000..7d42ea1 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/prefer-default-export.js @@ -0,0 +1,94 @@ +'use strict'; + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('prefer-default-export') + }, + schema: [] + }, + + create: function (context) { + let specifierExportCount = 0; + let hasDefaultExport = false; + let hasStarExport = false; + let hasTypeExport = false; + let namedExportNode = null; + + function captureDeclaration(identifierOrPattern) { + if (identifierOrPattern.type === 'ObjectPattern') { + // recursively capture + identifierOrPattern.properties.forEach(function (property) { + captureDeclaration(property.value); + }); + } else if (identifierOrPattern.type === 'ArrayPattern') { + identifierOrPattern.elements.forEach(captureDeclaration); + } else { + // assume it's a single standard identifier + specifierExportCount++; + } + } + + return { + 'ExportDefaultSpecifier': function () { + hasDefaultExport = true; + }, + + 'ExportSpecifier': function (node) { + if (node.exported.name === 'default') { + hasDefaultExport = true; + } else { + specifierExportCount++; + namedExportNode = node; + } + }, + + 'ExportNamedDeclaration': function (node) { + // if there are specifiers, node.declaration should be null + if (!node.declaration) return; + + const type = node.declaration.type; + + + if (type === 'TSTypeAliasDeclaration' || type === 'TypeAlias' || type === 'TSInterfaceDeclaration' || type === 'InterfaceDeclaration') { + specifierExportCount++; + hasTypeExport = true; + return; + } + + if (node.declaration.declarations) { + node.declaration.declarations.forEach(function (declaration) { + captureDeclaration(declaration.id); + }); + } else { + // captures 'export function foo() {}' syntax + specifierExportCount++; + } + + namedExportNode = node; + }, + + 'ExportDefaultDeclaration': function () { + hasDefaultExport = true; + }, + + 'ExportAllDeclaration': function () { + hasStarExport = true; + }, + + 'Program:exit': function () { + if (specifierExportCount === 1 && !hasDefaultExport && !hasStarExport && !hasTypeExport) { + context.report(namedExportNode, 'Prefer default export.'); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy9wcmVmZXItZGVmYXVsdC1leHBvcnQuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIm1ldGEiLCJ0eXBlIiwiZG9jcyIsInVybCIsInNjaGVtYSIsImNyZWF0ZSIsImNvbnRleHQiLCJzcGVjaWZpZXJFeHBvcnRDb3VudCIsImhhc0RlZmF1bHRFeHBvcnQiLCJoYXNTdGFyRXhwb3J0IiwiaGFzVHlwZUV4cG9ydCIsIm5hbWVkRXhwb3J0Tm9kZSIsImNhcHR1cmVEZWNsYXJhdGlvbiIsImlkZW50aWZpZXJPclBhdHRlcm4iLCJwcm9wZXJ0aWVzIiwiZm9yRWFjaCIsInByb3BlcnR5IiwidmFsdWUiLCJlbGVtZW50cyIsIm5vZGUiLCJleHBvcnRlZCIsIm5hbWUiLCJkZWNsYXJhdGlvbiIsImRlY2xhcmF0aW9ucyIsImlkIiwicmVwb3J0Il0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQTs7Ozs7O0FBRUFBLE9BQU9DLE9BQVAsR0FBaUI7QUFDZkMsUUFBTTtBQUNKQyxVQUFNLFlBREY7QUFFSkMsVUFBTTtBQUNKQyxXQUFLLHVCQUFRLHVCQUFSO0FBREQsS0FGRjtBQUtKQyxZQUFRO0FBTEosR0FEUzs7QUFTZkMsVUFBUSxVQUFTQyxPQUFULEVBQWtCO0FBQ3hCLFFBQUlDLHVCQUF1QixDQUEzQjtBQUNBLFFBQUlDLG1CQUFtQixLQUF2QjtBQUNBLFFBQUlDLGdCQUFnQixLQUFwQjtBQUNBLFFBQUlDLGdCQUFnQixLQUFwQjtBQUNBLFFBQUlDLGtCQUFrQixJQUF0Qjs7QUFFQSxhQUFTQyxrQkFBVCxDQUE0QkMsbUJBQTVCLEVBQWlEO0FBQy9DLFVBQUlBLG9CQUFvQlosSUFBcEIsS0FBNkIsZUFBakMsRUFBa0Q7QUFDaEQ7QUFDQVksNEJBQW9CQyxVQUFwQixDQUNHQyxPQURILENBQ1csVUFBU0MsUUFBVCxFQUFtQjtBQUMxQkosNkJBQW1CSSxTQUFTQyxLQUE1QjtBQUNELFNBSEg7QUFJRCxPQU5ELE1BTU8sSUFBSUosb0JBQW9CWixJQUFwQixLQUE2QixjQUFqQyxFQUFpRDtBQUN0RFksNEJBQW9CSyxRQUFwQixDQUNHSCxPQURILENBQ1dILGtCQURYO0FBRUQsT0FITSxNQUdDO0FBQ1I7QUFDRUw7QUFDRDtBQUNGOztBQUVELFdBQU87QUFDTCxnQ0FBMEIsWUFBVztBQUNuQ0MsMkJBQW1CLElBQW5CO0FBQ0QsT0FISTs7QUFLTCx5QkFBbUIsVUFBU1csSUFBVCxFQUFlO0FBQ2hDLFlBQUlBLEtBQUtDLFFBQUwsQ0FBY0MsSUFBZCxLQUF1QixTQUEzQixFQUFzQztBQUNwQ2IsNkJBQW1CLElBQW5CO0FBQ0QsU0FGRCxNQUVPO0FBQ0xEO0FBQ0FJLDRCQUFrQlEsSUFBbEI7QUFDRDtBQUNGLE9BWkk7O0FBY0wsZ0NBQTBCLFVBQVNBLElBQVQsRUFBZTtBQUN2QztBQUNBLFlBQUksQ0FBQ0EsS0FBS0csV0FBVixFQUF1Qjs7QUFGZ0IsY0FJL0JyQixJQUorQixHQUl0QmtCLEtBQUtHLFdBSmlCLENBSS9CckIsSUFKK0I7OztBQU12QyxZQUNFQSxTQUFTLHdCQUFULElBQ0FBLFNBQVMsV0FEVCxJQUVBQSxTQUFTLHdCQUZULElBR0FBLFNBQVMsc0JBSlgsRUFLRTtBQUNBTTtBQUNBRywwQkFBZ0IsSUFBaEI7QUFDQTtBQUNEOztBQUVELFlBQUlTLEtBQUtHLFdBQUwsQ0FBaUJDLFlBQXJCLEVBQW1DO0FBQ2pDSixlQUFLRyxXQUFMLENBQWlCQyxZQUFqQixDQUE4QlIsT0FBOUIsQ0FBc0MsVUFBU08sV0FBVCxFQUFzQjtBQUMxRFYsK0JBQW1CVSxZQUFZRSxFQUEvQjtBQUNELFdBRkQ7QUFHRCxTQUpELE1BS0s7QUFDSDtBQUNBakI7QUFDRDs7QUFFREksMEJBQWtCUSxJQUFsQjtBQUNELE9BMUNJOztBQTRDTCxrQ0FBNEIsWUFBVztBQUNyQ1gsMkJBQW1CLElBQW5CO0FBQ0QsT0E5Q0k7O0FBZ0RMLDhCQUF3QixZQUFXO0FBQ2pDQyx3QkFBZ0IsSUFBaEI7QUFDRCxPQWxESTs7QUFvREwsc0JBQWdCLFlBQVc7QUFDekIsWUFBSUYseUJBQXlCLENBQXpCLElBQThCLENBQUNDLGdCQUEvQixJQUFtRCxDQUFDQyxhQUFwRCxJQUFxRSxDQUFDQyxhQUExRSxFQUF5RjtBQUN2Rkosa0JBQVFtQixNQUFSLENBQWVkLGVBQWYsRUFBZ0Msd0JBQWhDO0FBQ0Q7QUFDRjtBQXhESSxLQUFQO0FBMEREO0FBMUZjLENBQWpCIiwiZmlsZSI6InByZWZlci1kZWZhdWx0LWV4cG9ydC5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ3ByZWZlci1kZWZhdWx0LWV4cG9ydCcpLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgfSxcblxuICBjcmVhdGU6IGZ1bmN0aW9uKGNvbnRleHQpIHtcbiAgICBsZXQgc3BlY2lmaWVyRXhwb3J0Q291bnQgPSAwXG4gICAgbGV0IGhhc0RlZmF1bHRFeHBvcnQgPSBmYWxzZVxuICAgIGxldCBoYXNTdGFyRXhwb3J0ID0gZmFsc2VcbiAgICBsZXQgaGFzVHlwZUV4cG9ydCA9IGZhbHNlXG4gICAgbGV0IG5hbWVkRXhwb3J0Tm9kZSA9IG51bGxcblxuICAgIGZ1bmN0aW9uIGNhcHR1cmVEZWNsYXJhdGlvbihpZGVudGlmaWVyT3JQYXR0ZXJuKSB7XG4gICAgICBpZiAoaWRlbnRpZmllck9yUGF0dGVybi50eXBlID09PSAnT2JqZWN0UGF0dGVybicpIHtcbiAgICAgICAgLy8gcmVjdXJzaXZlbHkgY2FwdHVyZVxuICAgICAgICBpZGVudGlmaWVyT3JQYXR0ZXJuLnByb3BlcnRpZXNcbiAgICAgICAgICAuZm9yRWFjaChmdW5jdGlvbihwcm9wZXJ0eSkge1xuICAgICAgICAgICAgY2FwdHVyZURlY2xhcmF0aW9uKHByb3BlcnR5LnZhbHVlKVxuICAgICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKGlkZW50aWZpZXJPclBhdHRlcm4udHlwZSA9PT0gJ0FycmF5UGF0dGVybicpIHtcbiAgICAgICAgaWRlbnRpZmllck9yUGF0dGVybi5lbGVtZW50c1xuICAgICAgICAgIC5mb3JFYWNoKGNhcHR1cmVEZWNsYXJhdGlvbilcbiAgICAgIH0gZWxzZSAge1xuICAgICAgLy8gYXNzdW1lIGl0J3MgYSBzaW5nbGUgc3RhbmRhcmQgaWRlbnRpZmllclxuICAgICAgICBzcGVjaWZpZXJFeHBvcnRDb3VudCsrXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICdFeHBvcnREZWZhdWx0U3BlY2lmaWVyJzogZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhc0RlZmF1bHRFeHBvcnQgPSB0cnVlXG4gICAgICB9LFxuXG4gICAgICAnRXhwb3J0U3BlY2lmaWVyJzogZnVuY3Rpb24obm9kZSkge1xuICAgICAgICBpZiAobm9kZS5leHBvcnRlZC5uYW1lID09PSAnZGVmYXVsdCcpIHtcbiAgICAgICAgICBoYXNEZWZhdWx0RXhwb3J0ID0gdHJ1ZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNwZWNpZmllckV4cG9ydENvdW50KytcbiAgICAgICAgICBuYW1lZEV4cG9ydE5vZGUgPSBub2RlXG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgICdFeHBvcnROYW1lZERlY2xhcmF0aW9uJzogZnVuY3Rpb24obm9kZSkge1xuICAgICAgICAvLyBpZiB0aGVyZSBhcmUgc3BlY2lmaWVycywgbm9kZS5kZWNsYXJhdGlvbiBzaG91bGQgYmUgbnVsbFxuICAgICAgICBpZiAoIW5vZGUuZGVjbGFyYXRpb24pIHJldHVyblxuXG4gICAgICAgIGNvbnN0IHsgdHlwZSB9ID0gbm9kZS5kZWNsYXJhdGlvblxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlID09PSAnVFNUeXBlQWxpYXNEZWNsYXJhdGlvbicgfHxcbiAgICAgICAgICB0eXBlID09PSAnVHlwZUFsaWFzJyB8fFxuICAgICAgICAgIHR5cGUgPT09ICdUU0ludGVyZmFjZURlY2xhcmF0aW9uJyB8fFxuICAgICAgICAgIHR5cGUgPT09ICdJbnRlcmZhY2VEZWNsYXJhdGlvbidcbiAgICAgICAgKSB7XG4gICAgICAgICAgc3BlY2lmaWVyRXhwb3J0Q291bnQrK1xuICAgICAgICAgIGhhc1R5cGVFeHBvcnQgPSB0cnVlXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5kZWNsYXJhdGlvbi5kZWNsYXJhdGlvbnMpIHtcbiAgICAgICAgICBub2RlLmRlY2xhcmF0aW9uLmRlY2xhcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGRlY2xhcmF0aW9uKSB7XG4gICAgICAgICAgICBjYXB0dXJlRGVjbGFyYXRpb24oZGVjbGFyYXRpb24uaWQpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAvLyBjYXB0dXJlcyAnZXhwb3J0IGZ1bmN0aW9uIGZvbygpIHt9JyBzeW50YXhcbiAgICAgICAgICBzcGVjaWZpZXJFeHBvcnRDb3VudCsrXG4gICAgICAgIH1cblxuICAgICAgICBuYW1lZEV4cG9ydE5vZGUgPSBub2RlXG4gICAgICB9LFxuXG4gICAgICAnRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uJzogZnVuY3Rpb24oKSB7XG4gICAgICAgIGhhc0RlZmF1bHRFeHBvcnQgPSB0cnVlXG4gICAgICB9LFxuXG4gICAgICAnRXhwb3J0QWxsRGVjbGFyYXRpb24nOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaGFzU3RhckV4cG9ydCA9IHRydWVcbiAgICAgIH0sXG5cbiAgICAgICdQcm9ncmFtOmV4aXQnOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHNwZWNpZmllckV4cG9ydENvdW50ID09PSAxICYmICFoYXNEZWZhdWx0RXhwb3J0ICYmICFoYXNTdGFyRXhwb3J0ICYmICFoYXNUeXBlRXhwb3J0KSB7XG4gICAgICAgICAgY29udGV4dC5yZXBvcnQobmFtZWRFeHBvcnROb2RlLCAnUHJlZmVyIGRlZmF1bHQgZXhwb3J0LicpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9LFxufVxuIl19 \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/unambiguous.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/unambiguous.js new file mode 100644 index 0000000..00b518b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/lib/rules/unambiguous.js @@ -0,0 +1,43 @@ +'use strict'; + +var _unambiguous = require('eslint-module-utils/unambiguous'); + +var _docsUrl = require('../docsUrl'); + +var _docsUrl2 = _interopRequireDefault(_docsUrl); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/** + * @fileOverview Report modules that could parse incorrectly as scripts. + * @author Ben Mosher + */ + +module.exports = { + meta: { + type: 'suggestion', + docs: { + url: (0, _docsUrl2.default)('unambiguous') + }, + schema: [] + }, + + create: function (context) { + // ignore non-modules + if (context.parserOptions.sourceType !== 'module') { + return {}; + } + + return { + Program: function (ast) { + if (!(0, _unambiguous.isModule)(ast)) { + context.report({ + node: ast, + message: 'This module could be parsed as a valid script.' + }); + } + } + }; + } +}; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlcy91bmFtYmlndW91cy5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwibWV0YSIsInR5cGUiLCJkb2NzIiwidXJsIiwic2NoZW1hIiwiY3JlYXRlIiwiY29udGV4dCIsInBhcnNlck9wdGlvbnMiLCJzb3VyY2VUeXBlIiwiUHJvZ3JhbSIsImFzdCIsInJlcG9ydCIsIm5vZGUiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOztBQUtBOztBQUNBOzs7Ozs7QUFOQTs7Ozs7QUFRQUEsT0FBT0MsT0FBUCxHQUFpQjtBQUNmQyxRQUFNO0FBQ0pDLFVBQU0sWUFERjtBQUVKQyxVQUFNO0FBQ0pDLFdBQUssdUJBQVEsYUFBUjtBQURELEtBRkY7QUFLSkMsWUFBUTtBQUxKLEdBRFM7O0FBU2ZDLFVBQVEsVUFBVUMsT0FBVixFQUFtQjtBQUN6QjtBQUNBLFFBQUlBLFFBQVFDLGFBQVIsQ0FBc0JDLFVBQXRCLEtBQXFDLFFBQXpDLEVBQW1EO0FBQ2pELGFBQU8sRUFBUDtBQUNEOztBQUVELFdBQU87QUFDTEMsZUFBUyxVQUFVQyxHQUFWLEVBQWU7QUFDdEIsWUFBSSxDQUFDLDJCQUFTQSxHQUFULENBQUwsRUFBb0I7QUFDbEJKLGtCQUFRSyxNQUFSLENBQWU7QUFDYkMsa0JBQU1GLEdBRE87QUFFYkcscUJBQVM7QUFGSSxXQUFmO0FBSUQ7QUFDRjtBQVJJLEtBQVA7QUFXRDtBQTFCYyxDQUFqQiIsImZpbGUiOiJ1bmFtYmlndW91cy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVPdmVydmlldyBSZXBvcnQgbW9kdWxlcyB0aGF0IGNvdWxkIHBhcnNlIGluY29ycmVjdGx5IGFzIHNjcmlwdHMuXG4gKiBAYXV0aG9yIEJlbiBNb3NoZXJcbiAqL1xuXG5pbXBvcnQgeyBpc01vZHVsZSB9IGZyb20gJ2VzbGludC1tb2R1bGUtdXRpbHMvdW5hbWJpZ3VvdXMnXG5pbXBvcnQgZG9jc1VybCBmcm9tICcuLi9kb2NzVXJsJ1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbWV0YToge1xuICAgIHR5cGU6ICdzdWdnZXN0aW9uJyxcbiAgICBkb2NzOiB7XG4gICAgICB1cmw6IGRvY3NVcmwoJ3VuYW1iaWd1b3VzJyksXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICB9LFxuXG4gIGNyZWF0ZTogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAvLyBpZ25vcmUgbm9uLW1vZHVsZXNcbiAgICBpZiAoY29udGV4dC5wYXJzZXJPcHRpb25zLnNvdXJjZVR5cGUgIT09ICdtb2R1bGUnKSB7XG4gICAgICByZXR1cm4ge31cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgUHJvZ3JhbTogZnVuY3Rpb24gKGFzdCkge1xuICAgICAgICBpZiAoIWlzTW9kdWxlKGFzdCkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBub2RlOiBhc3QsXG4gICAgICAgICAgICBtZXNzYWdlOiAnVGhpcyBtb2R1bGUgY291bGQgYmUgcGFyc2VkIGFzIGEgdmFsaWQgc2NyaXB0LicsXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9XG5cbiAgfSxcbn1cbiJdfQ== \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/LICENSE b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/LICENSE new file mode 100644 index 0000000..c6ade2a --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2015 Ben Mosher + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/README.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/README.md new file mode 100644 index 0000000..8a2a3cb --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/README.md @@ -0,0 +1,23 @@ +# eslint-plugin-import/memo-parser + + +## NOTE! + +This used to improve performance, but as of ESLint 5 and v2 of this plugin, it seems to just consume a bunch of memory and slightly increase lint times. + +**Not recommended for use at this time!** + + +This parser is just a memoizing wrapper around some actual parser. + +To configure, just add your _actual_ parser to the `parserOptions`, like so: + +```yaml +parser: eslint-plugin-import/memo-parser +# parser: babel-eslint + +parserOptions: + parser: babel-eslint + sourceType: module + ecmaVersion: 6 +``` diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/index.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/index.js new file mode 100644 index 0000000..b64f854 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/index.js @@ -0,0 +1,41 @@ +'use strict' + +const crypto = require('crypto') + , moduleRequire = require('eslint-module-utils/module-require').default + , hashObject = require('eslint-module-utils/hash').hashObject + +const cache = new Map() + +// must match ESLint default options or we'll miss the cache every time +const parserOptions = { + loc: true, + range: true, + raw: true, + tokens: true, + comment: true, + attachComment: true, +} + +exports.parse = function parse(content, options) { + options = Object.assign({}, options, parserOptions) + + if (!options.filePath) { + throw new Error('no file path provided!') + } + + const keyHash = crypto.createHash('sha256') + keyHash.update(content) + hashObject(options, keyHash) + + const key = keyHash.digest('hex') + + let ast = cache.get(key) + if (ast != null) return ast + + const realParser = moduleRequire(options.parser) + + ast = realParser.parse(content, options) + cache.set(key, ast) + + return ast +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/package.json b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/package.json new file mode 100644 index 0000000..69996d3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/memo-parser/package.json @@ -0,0 +1,34 @@ +{ + "name": "memo-parser", + "version": "0.2.1", + "engines": { + "node": ">=4" + }, + "description": "Memoizing wrapper for any ESLint-compatible parser module.", + "main": "index.js", + "scripts": { + "prepublishOnly": "cp ../{LICENSE,.npmrc} ./", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/benmosher/eslint-plugin-import.git" + }, + "keywords": [ + "eslint", + "eslint-plugin-import", + "parser" + ], + "author": "Ben Mosher (me@benmosher.com)", + "license": "MIT", + "bugs": { + "url": "https://github.com/benmosher/eslint-plugin-import/issues" + }, + "homepage": "https://github.com/benmosher/eslint-plugin-import#readme", + "peerDependencies": { + "eslint": ">=3.5.0" + }, + "dependencies": { + "eslint-module-utils": "^2.5.0" + } +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/CHANGELOG.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/CHANGELOG.md new file mode 100644 index 0000000..63fa77c --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/CHANGELOG.md @@ -0,0 +1,70 @@ +v1.5.0 - October 13, 2016 + +* e33c6bb Update: Add support for BooleanLiteralType (#173) (Erik Arvidsson) + +v1.4.0 - September 13, 2016 + +* d7426e5 Update: add ability to parse optional properties in typedefs (refs #5) (#174) (ikokostya) + +v1.3.0 - August 22, 2016 + +* 12c7ad9 Update: Add support for numeric and string literal types (fixes #156) (#172) (Andrew Walter) + +v1.2.3 - August 16, 2016 + +* b96a884 Build: Add CI release script (Nicholas C. Zakas) +* 8d9b3c7 Upgrade: Upgrade esutils to v2.0.2 (fixes #170) (#171) (Emeegeemee) + +v1.2.2 - May 19, 2016 + +* ebe0b08 Fix: Support case insensitive tags (fixes #163) (#164) (alberto) +* 8e6d81e Chore: Remove copyright and license from headers (Nicholas C. Zakas) +* 79035c6 Chore: Include jQuery Foundation copyright (Nicholas C. Zakas) +* 06910a7 Fix: Preserve whitespace in default param string values (fixes #157) (Kai Cataldo) + +v1.2.1 - March 29, 2016 + +* 1f54014 Fix: allow hyphens in names (fixes #116) (Kai Cataldo) +* bbee469 Docs: Add issue template (Nicholas C. Zakas) + +v1.2.0 - February 19, 2016 + +* 18136c5 Build: Cleanup build system (Nicholas C. Zakas) +* b082f85 Update: Add support for slash in namepaths (fixes #100) (Ryan Duffy) +* def53a2 Docs: Fix typo in option lineNumbers (Daniel Tschinder) +* e2cbbc5 Update: Bump isarray to v1.0.0 (Shinnosuke Watanabe) +* ae07aa8 Fix: Allow whitespace in optional param with default value (fixes #141) (chris) + +v1.1.0 - January 6, 2016 + +* Build: Switch to Makefile.js (Nicholas C. Zakas) +* New: support name expression for @this tag (fixes #143) (Tim Schaub) +* Build: Update ESLint settings (Nicholas C. Zakas) + +v1.0.0 - December 21, 2015 + +* New: parse caption tags in examples into separate property. (fixes #131) (Tom MacWright) + +v0.7.2 - November 27, 2015 + +* Fix: Line numbers for some tags (fixes #138) Fixing issue where input was not consumed via advance() but was skipped when parsing tags resulting in sometimes incorrect reported lineNumber. (TEHEK) +* Build: Add missing linefix package (Nicholas C. Zakas) + +v0.7.1 - November 13, 2015 + +* Update: Begin switch to Makefile.js (Nicholas C. Zakas) +* Fix: permit return tag without type (fixes #136) (Tom MacWright) +* Fix: package.json homepage field (Bogdan Chadkin) +* Fix: Parse array default syntax. Fixes #133 (Tom MacWright) +* Fix: Last tag always has \n in the description (fixes #87) (Burak Yigit Kaya) +* Docs: Add changelog (Nicholas C. Zakas) + +v0.7.0 - September 21, 2015 + +* Docs: Update README with new info (fixes #127) (Nicholas C. Zakas) +* Fix: Parsing fix for param with arrays and properties (fixes #111) (Gyandeep Singh) +* Build: Add travis build (fixes #123) (Gyandeep Singh) +* Fix: Parsing of parameter name without a type (fixes #120) (Gyandeep Singh) +* New: added preserveWhitespace option (Aleks Totic) +* New: Add "files" entry to only deploy select files (Rob Loach) +* New: Add support and tests for typedefs. Refs #5 (Tom MacWright) diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.BSD b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.BSD new file mode 100644 index 0000000..1e03b5d --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.BSD @@ -0,0 +1,22 @@ +Doctrine +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.closure-compiler b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.closure-compiler new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.closure-compiler @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.esprima b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.esprima new file mode 100644 index 0000000..3e580c3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/LICENSE.esprima @@ -0,0 +1,19 @@ +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/README.md b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/README.md new file mode 100644 index 0000000..bc6dcf9 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/README.md @@ -0,0 +1,174 @@ +[![NPM version][npm-image]][npm-url] +[![build status][travis-image]][travis-url] +[![Test coverage][coveralls-image]][coveralls-url] +[![Downloads][downloads-image]][downloads-url] +[![Join the chat at https://gitter.im/eslint/doctrine](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/eslint/doctrine?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +# Doctrine + +Doctrine is a [JSDoc](http://usejsdoc.org) parser that parses documentation comments from JavaScript (you need to pass in the comment, not a whole JavaScript file). + +## Installation + +You can install Doctrine using [npm](https://npmjs.com): + +``` +$ npm install doctrine --save-dev +``` + +Doctrine can also be used in web browsers using [Browserify](http://browserify.org). + +## Usage + +Require doctrine inside of your JavaScript: + +```js +var doctrine = require("doctrine"); +``` + +### parse() + +The primary method is `parse()`, which accepts two arguments: the JSDoc comment to parse and an optional options object. The available options are: + +* `unwrap` - set to `true` to delete the leading `/**`, any `*` that begins a line, and the trailing `*/` from the source text. Default: `false`. +* `tags` - an array of tags to return. When specified, Doctrine returns only tags in this array. For example, if `tags` is `["param"]`, then only `@param` tags will be returned. Default: `null`. +* `recoverable` - set to `true` to keep parsing even when syntax errors occur. Default: `false`. +* `sloppy` - set to `true` to allow optional parameters to be specified in brackets (`@param {string} [foo]`). Default: `false`. +* `lineNumbers` - set to `true` to add `lineNumber` to each node, specifying the line on which the node is found in the source. Default: `false`. + +Here's a simple example: + +```js +var ast = doctrine.parse( + [ + "/**", + " * This function comment is parsed by doctrine", + " * @param {{ok:String}} userName", + "*/" + ].join('\n'), { unwrap: true }); +``` + +This example returns the following AST: + + { + "description": "This function comment is parsed by doctrine", + "tags": [ + { + "title": "param", + "description": null, + "type": { + "type": "RecordType", + "fields": [ + { + "type": "FieldType", + "key": "ok", + "value": { + "type": "NameExpression", + "name": "String" + } + } + ] + }, + "name": "userName" + } + ] + } + +See the [demo page](http://eslint.org/doctrine/demo/) more detail. + +## Team + +These folks keep the project moving and are resources for help: + +* Nicholas C. Zakas ([@nzakas](https://github.com/nzakas)) - project lead +* Yusuke Suzuki ([@constellation](https://github.com/constellation)) - reviewer + +## Contributing + +Issues and pull requests will be triaged and responded to as quickly as possible. We operate under the [ESLint Contributor Guidelines](http://eslint.org/docs/developer-guide/contributing), so please be sure to read them before contributing. If you're not sure where to dig in, check out the [issues](https://github.com/eslint/doctrine/issues). + +## Frequently Asked Questions + +### Can I pass a whole JavaScript file to Doctrine? + +No. Doctrine can only parse JSDoc comments, so you'll need to pass just the JSDoc comment to Doctrine in order to work. + + +### License + +#### doctrine + +Copyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation) + (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#### esprima + +some of functions is derived from esprima + +Copyright (C) 2012, 2011 [Ariya Hidayat](http://ariya.ofilabs.com/about) + (twitter: [@ariyahidayat](http://twitter.com/ariyahidayat)) and other contributors. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +#### closure-compiler + +some of extensions is derived from closure-compiler + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + + +### Where to ask for help? + +Join our [Chatroom](https://gitter.im/eslint/doctrine) + +[npm-image]: https://img.shields.io/npm/v/doctrine.svg?style=flat-square +[npm-url]: https://www.npmjs.com/package/doctrine +[travis-image]: https://img.shields.io/travis/eslint/doctrine/master.svg?style=flat-square +[travis-url]: https://travis-ci.org/eslint/doctrine +[coveralls-image]: https://img.shields.io/coveralls/eslint/doctrine/master.svg?style=flat-square +[coveralls-url]: https://coveralls.io/r/eslint/doctrine?branch=master +[downloads-image]: http://img.shields.io/npm/dm/doctrine.svg?style=flat-square +[downloads-url]: https://www.npmjs.com/package/doctrine diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/doctrine.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/doctrine.js new file mode 100644 index 0000000..095eeeb --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/doctrine.js @@ -0,0 +1,897 @@ +/* + * @fileoverview Main Doctrine object + * @author Yusuke Suzuki + * @author Dan Tao + * @author Andrew Eisenberg + */ + +(function () { + 'use strict'; + + var typed, + utility, + isArray, + jsdoc, + esutils, + hasOwnProperty; + + esutils = require('esutils'); + isArray = require('isarray'); + typed = require('./typed'); + utility = require('./utility'); + + function sliceSource(source, index, last) { + return source.slice(index, last); + } + + hasOwnProperty = (function () { + var func = Object.prototype.hasOwnProperty; + return function hasOwnProperty(obj, name) { + return func.call(obj, name); + }; + }()); + + function shallowCopy(obj) { + var ret = {}, key; + for (key in obj) { + if (obj.hasOwnProperty(key)) { + ret[key] = obj[key]; + } + } + return ret; + } + + function isASCIIAlphanumeric(ch) { + return (ch >= 0x61 /* 'a' */ && ch <= 0x7A /* 'z' */) || + (ch >= 0x41 /* 'A' */ && ch <= 0x5A /* 'Z' */) || + (ch >= 0x30 /* '0' */ && ch <= 0x39 /* '9' */); + } + + function isParamTitle(title) { + return title === 'param' || title === 'argument' || title === 'arg'; + } + + function isReturnTitle(title) { + return title === 'return' || title === 'returns'; + } + + function isProperty(title) { + return title === 'property' || title === 'prop'; + } + + function isNameParameterRequired(title) { + return isParamTitle(title) || isProperty(title) || + title === 'alias' || title === 'this' || title === 'mixes' || title === 'requires'; + } + + function isAllowedName(title) { + return isNameParameterRequired(title) || title === 'const' || title === 'constant'; + } + + function isAllowedNested(title) { + return isProperty(title) || isParamTitle(title); + } + + function isAllowedOptional(title) { + return isProperty(title) || isParamTitle(title); + } + + function isTypeParameterRequired(title) { + return isParamTitle(title) || isReturnTitle(title) || + title === 'define' || title === 'enum' || + title === 'implements' || title === 'this' || + title === 'type' || title === 'typedef' || isProperty(title); + } + + // Consider deprecation instead using 'isTypeParameterRequired' and 'Rules' declaration to pick when a type is optional/required + // This would require changes to 'parseType' + function isAllowedType(title) { + return isTypeParameterRequired(title) || title === 'throws' || title === 'const' || title === 'constant' || + title === 'namespace' || title === 'member' || title === 'var' || title === 'module' || + title === 'constructor' || title === 'class' || title === 'extends' || title === 'augments' || + title === 'public' || title === 'private' || title === 'protected'; + } + + function trim(str) { + return str.replace(/^\s+/, '').replace(/\s+$/, ''); + } + + function unwrapComment(doc) { + // JSDoc comment is following form + // /** + // * ....... + // */ + // remove /**, */ and * + var BEFORE_STAR = 0, + STAR = 1, + AFTER_STAR = 2, + index, + len, + mode, + result, + ch; + + doc = doc.replace(/^\/\*\*?/, '').replace(/\*\/$/, ''); + index = 0; + len = doc.length; + mode = BEFORE_STAR; + result = ''; + + while (index < len) { + ch = doc.charCodeAt(index); + switch (mode) { + case BEFORE_STAR: + if (esutils.code.isLineTerminator(ch)) { + result += String.fromCharCode(ch); + } else if (ch === 0x2A /* '*' */) { + mode = STAR; + } else if (!esutils.code.isWhiteSpace(ch)) { + result += String.fromCharCode(ch); + mode = AFTER_STAR; + } + break; + + case STAR: + if (!esutils.code.isWhiteSpace(ch)) { + result += String.fromCharCode(ch); + } + mode = esutils.code.isLineTerminator(ch) ? BEFORE_STAR : AFTER_STAR; + break; + + case AFTER_STAR: + result += String.fromCharCode(ch); + if (esutils.code.isLineTerminator(ch)) { + mode = BEFORE_STAR; + } + break; + } + index += 1; + } + + return result.replace(/\s+$/, ''); + } + + // JSDoc Tag Parser + + (function (exports) { + var Rules, + index, + lineNumber, + length, + source, + recoverable, + sloppy, + strict; + + function advance() { + var ch = source.charCodeAt(index); + index += 1; + if (esutils.code.isLineTerminator(ch) && !(ch === 0x0D /* '\r' */ && source.charCodeAt(index) === 0x0A /* '\n' */)) { + lineNumber += 1; + } + return String.fromCharCode(ch); + } + + function scanTitle() { + var title = ''; + // waste '@' + advance(); + + while (index < length && isASCIIAlphanumeric(source.charCodeAt(index))) { + title += advance(); + } + + return title; + } + + function seekContent() { + var ch, waiting, last = index; + + waiting = false; + while (last < length) { + ch = source.charCodeAt(last); + if (esutils.code.isLineTerminator(ch) && !(ch === 0x0D /* '\r' */ && source.charCodeAt(last + 1) === 0x0A /* '\n' */)) { + waiting = true; + } else if (waiting) { + if (ch === 0x40 /* '@' */) { + break; + } + if (!esutils.code.isWhiteSpace(ch)) { + waiting = false; + } + } + last += 1; + } + return last; + } + + // type expression may have nest brace, such as, + // { { ok: string } } + // + // therefore, scanning type expression with balancing braces. + function parseType(title, last) { + var ch, brace, type, direct = false; + + + // search '{' + while (index < last) { + ch = source.charCodeAt(index); + if (esutils.code.isWhiteSpace(ch)) { + advance(); + } else if (ch === 0x7B /* '{' */) { + advance(); + break; + } else { + // this is direct pattern + direct = true; + break; + } + } + + + if (direct) { + return null; + } + + // type expression { is found + brace = 1; + type = ''; + while (index < last) { + ch = source.charCodeAt(index); + if (esutils.code.isLineTerminator(ch)) { + advance(); + } else { + if (ch === 0x7D /* '}' */) { + brace -= 1; + if (brace === 0) { + advance(); + break; + } + } else if (ch === 0x7B /* '{' */) { + brace += 1; + } + type += advance(); + } + } + + if (brace !== 0) { + // braces is not balanced + return utility.throwError('Braces are not balanced'); + } + + if (isAllowedOptional(title)) { + return typed.parseParamType(type); + } + + return typed.parseType(type); + } + + function scanIdentifier(last) { + var identifier; + if (!esutils.code.isIdentifierStartES5(source.charCodeAt(index))) { + return null; + } + identifier = advance(); + while (index < last && esutils.code.isIdentifierPartES5(source.charCodeAt(index))) { + identifier += advance(); + } + return identifier; + } + + function skipWhiteSpace(last) { + while (index < last && (esutils.code.isWhiteSpace(source.charCodeAt(index)) || esutils.code.isLineTerminator(source.charCodeAt(index)))) { + advance(); + } + } + + function parseName(last, allowBrackets, allowNestedParams) { + var name = '', + useBrackets, + insideString; + + + skipWhiteSpace(last); + + if (index >= last) { + return null; + } + + if (allowBrackets && source.charCodeAt(index) === 0x5B /* '[' */) { + useBrackets = true; + name = advance(); + } + + if (!esutils.code.isIdentifierStartES5(source.charCodeAt(index))) { + return null; + } + + name += scanIdentifier(last); + + if (allowNestedParams) { + if (source.charCodeAt(index) === 0x3A /* ':' */ && ( + name === 'module' || + name === 'external' || + name === 'event')) { + name += advance(); + name += scanIdentifier(last); + + } + if(source.charCodeAt(index) === 0x5B /* '[' */ && source.charCodeAt(index + 1) === 0x5D /* ']' */){ + name += advance(); + name += advance(); + } + while (source.charCodeAt(index) === 0x2E /* '.' */ || + source.charCodeAt(index) === 0x2F /* '/' */ || + source.charCodeAt(index) === 0x23 /* '#' */ || + source.charCodeAt(index) === 0x2D /* '-' */ || + source.charCodeAt(index) === 0x7E /* '~' */) { + name += advance(); + name += scanIdentifier(last); + } + } + + if (useBrackets) { + skipWhiteSpace(last); + // do we have a default value for this? + if (source.charCodeAt(index) === 0x3D /* '=' */) { + // consume the '='' symbol + name += advance(); + skipWhiteSpace(last); + + var ch; + var bracketDepth = 1; + + // scan in the default value + while (index < last) { + ch = source.charCodeAt(index); + + if (esutils.code.isWhiteSpace(ch)) { + if (!insideString) { + skipWhiteSpace(last); + ch = source.charCodeAt(index); + } + } + + if (ch === 0x27 /* ''' */) { + if (!insideString) { + insideString = '\''; + } else { + if (insideString === '\'') { + insideString = ''; + } + } + } + + if (ch === 0x22 /* '"' */) { + if (!insideString) { + insideString = '"'; + } else { + if (insideString === '"') { + insideString = ''; + } + } + } + + if (ch === 0x5B /* '[' */) { + bracketDepth++; + } else if (ch === 0x5D /* ']' */ && + --bracketDepth === 0) { + break; + } + + name += advance(); + } + } + + skipWhiteSpace(last); + + if (index >= last || source.charCodeAt(index) !== 0x5D /* ']' */) { + // we never found a closing ']' + return null; + } + + // collect the last ']' + name += advance(); + } + + return name; + } + + function skipToTag() { + while (index < length && source.charCodeAt(index) !== 0x40 /* '@' */) { + advance(); + } + if (index >= length) { + return false; + } + utility.assert(source.charCodeAt(index) === 0x40 /* '@' */); + return true; + } + + function TagParser(options, title) { + this._options = options; + this._title = title.toLowerCase(); + this._tag = { + title: title, + description: null + }; + if (this._options.lineNumbers) { + this._tag.lineNumber = lineNumber; + } + this._last = 0; + // space to save special information for title parsers. + this._extra = { }; + } + + // addError(err, ...) + TagParser.prototype.addError = function addError(errorText) { + var args = Array.prototype.slice.call(arguments, 1), + msg = errorText.replace( + /%(\d)/g, + function (whole, index) { + utility.assert(index < args.length, 'Message reference must be in range'); + return args[index]; + } + ); + + if (!this._tag.errors) { + this._tag.errors = []; + } + if (strict) { + utility.throwError(msg); + } + this._tag.errors.push(msg); + return recoverable; + }; + + TagParser.prototype.parseType = function () { + // type required titles + if (isTypeParameterRequired(this._title)) { + try { + this._tag.type = parseType(this._title, this._last); + if (!this._tag.type) { + if (!isParamTitle(this._title) && !isReturnTitle(this._title)) { + if (!this.addError('Missing or invalid tag type')) { + return false; + } + } + } + } catch (error) { + this._tag.type = null; + if (!this.addError(error.message)) { + return false; + } + } + } else if (isAllowedType(this._title)) { + // optional types + try { + this._tag.type = parseType(this._title, this._last); + } catch (e) { + //For optional types, lets drop the thrown error when we hit the end of the file + } + } + return true; + }; + + TagParser.prototype._parseNamePath = function (optional) { + var name; + name = parseName(this._last, sloppy && isAllowedOptional(this._title), true); + if (!name) { + if (!optional) { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } + this._tag.name = name; + return true; + }; + + TagParser.prototype.parseNamePath = function () { + return this._parseNamePath(false); + }; + + TagParser.prototype.parseNamePathOptional = function () { + return this._parseNamePath(true); + }; + + + TagParser.prototype.parseName = function () { + var assign, name; + + // param, property requires name + if (isAllowedName(this._title)) { + this._tag.name = parseName(this._last, sloppy && isAllowedOptional(this._title), isAllowedNested(this._title)); + if (!this._tag.name) { + if (!isNameParameterRequired(this._title)) { + return true; + } + + // it's possible the name has already been parsed but interpreted as a type + // it's also possible this is a sloppy declaration, in which case it will be + // fixed at the end + if (isParamTitle(this._title) && this._tag.type && this._tag.type.name) { + this._extra.name = this._tag.type; + this._tag.name = this._tag.type.name; + this._tag.type = null; + } else { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } else { + name = this._tag.name; + if (name.charAt(0) === '[' && name.charAt(name.length - 1) === ']') { + // extract the default value if there is one + // example: @param {string} [somebody=John Doe] description + assign = name.substring(1, name.length - 1).split('='); + if (assign[1]) { + this._tag['default'] = assign[1]; + } + this._tag.name = assign[0]; + + // convert to an optional type + if (this._tag.type && this._tag.type.type !== 'OptionalType') { + this._tag.type = { + type: 'OptionalType', + expression: this._tag.type + }; + } + } + } + } + + + return true; + }; + + TagParser.prototype.parseDescription = function parseDescription() { + var description = trim(sliceSource(source, index, this._last)); + if (description) { + if ((/^-\s+/).test(description)) { + description = description.substring(2); + } + this._tag.description = description; + } + return true; + }; + + TagParser.prototype.parseCaption = function parseDescription() { + var description = trim(sliceSource(source, index, this._last)); + var captionStartTag = ''; + var captionEndTag = ''; + var captionStart = description.indexOf(captionStartTag); + var captionEnd = description.indexOf(captionEndTag); + if (captionStart >= 0 && captionEnd >= 0) { + this._tag.caption = trim(description.substring( + captionStart + captionStartTag.length, captionEnd)); + this._tag.description = trim(description.substring(captionEnd + captionEndTag.length)); + } else { + this._tag.description = description; + } + return true; + }; + + TagParser.prototype.parseKind = function parseKind() { + var kind, kinds; + kinds = { + 'class': true, + 'constant': true, + 'event': true, + 'external': true, + 'file': true, + 'function': true, + 'member': true, + 'mixin': true, + 'module': true, + 'namespace': true, + 'typedef': true + }; + kind = trim(sliceSource(source, index, this._last)); + this._tag.kind = kind; + if (!hasOwnProperty(kinds, kind)) { + if (!this.addError('Invalid kind name \'%0\'', kind)) { + return false; + } + } + return true; + }; + + TagParser.prototype.parseAccess = function parseAccess() { + var access; + access = trim(sliceSource(source, index, this._last)); + this._tag.access = access; + if (access !== 'private' && access !== 'protected' && access !== 'public') { + if (!this.addError('Invalid access name \'%0\'', access)) { + return false; + } + } + return true; + }; + + TagParser.prototype.parseThis = function parseAccess() { + // this name may be a name expression (e.g. {foo.bar}) + // or a name path (e.g. foo.bar) + var value = trim(sliceSource(source, index, this._last)); + if (value && value.charAt(0) === '{') { + var gotType = this.parseType(); + if (gotType && this._tag.type.type === 'NameExpression') { + this._tag.name = this._tag.type.name; + return true; + } else { + return this.addError('Invalid name for this'); + } + } else { + return this.parseNamePath(); + } + }; + + TagParser.prototype.parseVariation = function parseVariation() { + var variation, text; + text = trim(sliceSource(source, index, this._last)); + variation = parseFloat(text, 10); + this._tag.variation = variation; + if (isNaN(variation)) { + if (!this.addError('Invalid variation \'%0\'', text)) { + return false; + } + } + return true; + }; + + TagParser.prototype.ensureEnd = function () { + var shouldBeEmpty = trim(sliceSource(source, index, this._last)); + if (shouldBeEmpty) { + if (!this.addError('Unknown content \'%0\'', shouldBeEmpty)) { + return false; + } + } + return true; + }; + + TagParser.prototype.epilogue = function epilogue() { + var description; + + description = this._tag.description; + // un-fix potentially sloppy declaration + if (isAllowedOptional(this._title) && !this._tag.type && description && description.charAt(0) === '[') { + this._tag.type = this._extra.name; + if (!this._tag.name) { + this._tag.name = undefined; + } + + if (!sloppy) { + if (!this.addError('Missing or invalid tag name')) { + return false; + } + } + } + + return true; + }; + + Rules = { + // http://usejsdoc.org/tags-access.html + 'access': ['parseAccess'], + // http://usejsdoc.org/tags-alias.html + 'alias': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-augments.html + 'augments': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-constructor.html + 'constructor': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-constructor.html + 'class': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-extends.html + 'extends': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-example.html + 'example': ['parseCaption'], + // http://usejsdoc.org/tags-deprecated.html + 'deprecated': ['parseDescription'], + // http://usejsdoc.org/tags-global.html + 'global': ['ensureEnd'], + // http://usejsdoc.org/tags-inner.html + 'inner': ['ensureEnd'], + // http://usejsdoc.org/tags-instance.html + 'instance': ['ensureEnd'], + // http://usejsdoc.org/tags-kind.html + 'kind': ['parseKind'], + // http://usejsdoc.org/tags-mixes.html + 'mixes': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-mixin.html + 'mixin': ['parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-member.html + 'member': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-method.html + 'method': ['parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-module.html + 'module': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-method.html + 'func': ['parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-method.html + 'function': ['parseNamePathOptional', 'ensureEnd'], + // Synonym: http://usejsdoc.org/tags-member.html + 'var': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-name.html + 'name': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-namespace.html + 'namespace': ['parseType', 'parseNamePathOptional', 'ensureEnd'], + // http://usejsdoc.org/tags-private.html + 'private': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-protected.html + 'protected': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-public.html + 'public': ['parseType', 'parseDescription'], + // http://usejsdoc.org/tags-readonly.html + 'readonly': ['ensureEnd'], + // http://usejsdoc.org/tags-requires.html + 'requires': ['parseNamePath', 'ensureEnd'], + // http://usejsdoc.org/tags-since.html + 'since': ['parseDescription'], + // http://usejsdoc.org/tags-static.html + 'static': ['ensureEnd'], + // http://usejsdoc.org/tags-summary.html + 'summary': ['parseDescription'], + // http://usejsdoc.org/tags-this.html + 'this': ['parseThis', 'ensureEnd'], + // http://usejsdoc.org/tags-todo.html + 'todo': ['parseDescription'], + // http://usejsdoc.org/tags-typedef.html + 'typedef': ['parseType', 'parseNamePathOptional'], + // http://usejsdoc.org/tags-variation.html + 'variation': ['parseVariation'], + // http://usejsdoc.org/tags-version.html + 'version': ['parseDescription'] + }; + + TagParser.prototype.parse = function parse() { + var i, iz, sequences, method; + + + // empty title + if (!this._title) { + if (!this.addError('Missing or invalid title')) { + return null; + } + } + + // Seek to content last index. + this._last = seekContent(this._title); + + if (hasOwnProperty(Rules, this._title)) { + sequences = Rules[this._title]; + } else { + // default sequences + sequences = ['parseType', 'parseName', 'parseDescription', 'epilogue']; + } + + for (i = 0, iz = sequences.length; i < iz; ++i) { + method = sequences[i]; + if (!this[method]()) { + return null; + } + } + + return this._tag; + }; + + function parseTag(options) { + var title, parser, tag; + + // skip to tag + if (!skipToTag()) { + return null; + } + + // scan title + title = scanTitle(); + + // construct tag parser + parser = new TagParser(options, title); + tag = parser.parse(); + + // Seek global index to end of this tag. + while (index < parser._last) { + advance(); + } + + return tag; + } + + // + // Parse JSDoc + // + + function scanJSDocDescription(preserveWhitespace) { + var description = '', ch, atAllowed; + + atAllowed = true; + while (index < length) { + ch = source.charCodeAt(index); + + if (atAllowed && ch === 0x40 /* '@' */) { + break; + } + + if (esutils.code.isLineTerminator(ch)) { + atAllowed = true; + } else if (atAllowed && !esutils.code.isWhiteSpace(ch)) { + atAllowed = false; + } + + description += advance(); + } + + return preserveWhitespace ? description : trim(description); + } + + function parse(comment, options) { + var tags = [], tag, description, interestingTags, i, iz; + + if (options === undefined) { + options = {}; + } + + if (typeof options.unwrap === 'boolean' && options.unwrap) { + source = unwrapComment(comment); + } else { + source = comment; + } + + // array of relevant tags + if (options.tags) { + if (isArray(options.tags)) { + interestingTags = { }; + for (i = 0, iz = options.tags.length; i < iz; i++) { + if (typeof options.tags[i] === 'string') { + interestingTags[options.tags[i]] = true; + } else { + utility.throwError('Invalid "tags" parameter: ' + options.tags); + } + } + } else { + utility.throwError('Invalid "tags" parameter: ' + options.tags); + } + } + + length = source.length; + index = 0; + lineNumber = 0; + recoverable = options.recoverable; + sloppy = options.sloppy; + strict = options.strict; + + description = scanJSDocDescription(options.preserveWhitespace); + + while (true) { + tag = parseTag(options); + if (!tag) { + break; + } + if (!interestingTags || interestingTags.hasOwnProperty(tag.title)) { + tags.push(tag); + } + } + + return { + description: description, + tags: tags + }; + } + exports.parse = parse; + }(jsdoc = {})); + + exports.version = utility.VERSION; + exports.parse = jsdoc.parse; + exports.parseType = typed.parseType; + exports.parseParamType = typed.parseParamType; + exports.unwrapComment = unwrapComment; + exports.Syntax = shallowCopy(typed.Syntax); + exports.Error = utility.DoctrineError; + exports.type = { + Syntax: exports.Syntax, + parseType: typed.parseType, + parseParamType: typed.parseParamType, + stringify: typed.stringify + }; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/typed.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/typed.js new file mode 100644 index 0000000..f0d759b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/typed.js @@ -0,0 +1,1283 @@ +/* + * @fileoverview Type expression parser. + * @author Yusuke Suzuki + * @author Dan Tao + * @author Andrew Eisenberg + */ + +// "typed", the Type Expression Parser for doctrine. + +(function () { + 'use strict'; + + var Syntax, + Token, + source, + length, + index, + previous, + token, + value, + esutils, + utility; + + esutils = require('esutils'); + utility = require('./utility'); + + Syntax = { + NullableLiteral: 'NullableLiteral', + AllLiteral: 'AllLiteral', + NullLiteral: 'NullLiteral', + UndefinedLiteral: 'UndefinedLiteral', + VoidLiteral: 'VoidLiteral', + UnionType: 'UnionType', + ArrayType: 'ArrayType', + RecordType: 'RecordType', + FieldType: 'FieldType', + FunctionType: 'FunctionType', + ParameterType: 'ParameterType', + RestType: 'RestType', + NonNullableType: 'NonNullableType', + OptionalType: 'OptionalType', + NullableType: 'NullableType', + NameExpression: 'NameExpression', + TypeApplication: 'TypeApplication', + StringLiteralType: 'StringLiteralType', + NumericLiteralType: 'NumericLiteralType', + BooleanLiteralType: 'BooleanLiteralType' + }; + + Token = { + ILLEGAL: 0, // ILLEGAL + DOT_LT: 1, // .< + REST: 2, // ... + LT: 3, // < + GT: 4, // > + LPAREN: 5, // ( + RPAREN: 6, // ) + LBRACE: 7, // { + RBRACE: 8, // } + LBRACK: 9, // [ + RBRACK: 10, // ] + COMMA: 11, // , + COLON: 12, // : + STAR: 13, // * + PIPE: 14, // | + QUESTION: 15, // ? + BANG: 16, // ! + EQUAL: 17, // = + NAME: 18, // name token + STRING: 19, // string + NUMBER: 20, // number + EOF: 21 + }; + + function isTypeName(ch) { + return '><(){}[],:*|?!='.indexOf(String.fromCharCode(ch)) === -1 && !esutils.code.isWhiteSpace(ch) && !esutils.code.isLineTerminator(ch); + } + + function Context(previous, index, token, value) { + this._previous = previous; + this._index = index; + this._token = token; + this._value = value; + } + + Context.prototype.restore = function () { + previous = this._previous; + index = this._index; + token = this._token; + value = this._value; + }; + + Context.save = function () { + return new Context(previous, index, token, value); + }; + + function advance() { + var ch = source.charAt(index); + index += 1; + return ch; + } + + function scanHexEscape(prefix) { + var i, len, ch, code = 0; + + len = (prefix === 'u') ? 4 : 2; + for (i = 0; i < len; ++i) { + if (index < length && esutils.code.isHexDigit(source.charCodeAt(index))) { + ch = advance(); + code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase()); + } else { + return ''; + } + } + return String.fromCharCode(code); + } + + function scanString() { + var str = '', quote, ch, code, unescaped, restore; //TODO review removal octal = false + quote = source.charAt(index); + ++index; + + while (index < length) { + ch = advance(); + + if (ch === quote) { + quote = ''; + break; + } else if (ch === '\\') { + ch = advance(); + if (!esutils.code.isLineTerminator(ch.charCodeAt(0))) { + switch (ch) { + case 'n': + str += '\n'; + break; + case 'r': + str += '\r'; + break; + case 't': + str += '\t'; + break; + case 'u': + case 'x': + restore = index; + unescaped = scanHexEscape(ch); + if (unescaped) { + str += unescaped; + } else { + index = restore; + str += ch; + } + break; + case 'b': + str += '\b'; + break; + case 'f': + str += '\f'; + break; + case 'v': + str += '\v'; + break; + + default: + if (esutils.code.isOctalDigit(ch.charCodeAt(0))) { + code = '01234567'.indexOf(ch); + + // \0 is not octal escape sequence + // Deprecating unused code. TODO review removal + //if (code !== 0) { + // octal = true; + //} + + if (index < length && esutils.code.isOctalDigit(source.charCodeAt(index))) { + //TODO Review Removal octal = true; + code = code * 8 + '01234567'.indexOf(advance()); + + // 3 digits are only allowed when string starts + // with 0, 1, 2, 3 + if ('0123'.indexOf(ch) >= 0 && + index < length && + esutils.code.isOctalDigit(source.charCodeAt(index))) { + code = code * 8 + '01234567'.indexOf(advance()); + } + } + str += String.fromCharCode(code); + } else { + str += ch; + } + break; + } + } else { + if (ch === '\r' && source.charCodeAt(index) === 0x0A /* '\n' */) { + ++index; + } + } + } else if (esutils.code.isLineTerminator(ch.charCodeAt(0))) { + break; + } else { + str += ch; + } + } + + if (quote !== '') { + utility.throwError('unexpected quote'); + } + + value = str; + return Token.STRING; + } + + function scanNumber() { + var number, ch; + + number = ''; + ch = source.charCodeAt(index); + + if (ch !== 0x2E /* '.' */) { + number = advance(); + ch = source.charCodeAt(index); + + if (number === '0') { + if (ch === 0x78 /* 'x' */ || ch === 0x58 /* 'X' */) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isHexDigit(ch)) { + break; + } + number += advance(); + } + + if (number.length <= 2) { + // only 0x + utility.throwError('unexpected token'); + } + + if (index < length) { + ch = source.charCodeAt(index); + if (esutils.code.isIdentifierStartES5(ch)) { + utility.throwError('unexpected token'); + } + } + value = parseInt(number, 16); + return Token.NUMBER; + } + + if (esutils.code.isOctalDigit(ch)) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isOctalDigit(ch)) { + break; + } + number += advance(); + } + + if (index < length) { + ch = source.charCodeAt(index); + if (esutils.code.isIdentifierStartES5(ch) || esutils.code.isDecimalDigit(ch)) { + utility.throwError('unexpected token'); + } + } + value = parseInt(number, 8); + return Token.NUMBER; + } + + if (esutils.code.isDecimalDigit(ch)) { + utility.throwError('unexpected token'); + } + } + + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } + + if (ch === 0x2E /* '.' */) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } + + if (ch === 0x65 /* 'e' */ || ch === 0x45 /* 'E' */) { + number += advance(); + + ch = source.charCodeAt(index); + if (ch === 0x2B /* '+' */ || ch === 0x2D /* '-' */) { + number += advance(); + } + + ch = source.charCodeAt(index); + if (esutils.code.isDecimalDigit(ch)) { + number += advance(); + while (index < length) { + ch = source.charCodeAt(index); + if (!esutils.code.isDecimalDigit(ch)) { + break; + } + number += advance(); + } + } else { + utility.throwError('unexpected token'); + } + } + + if (index < length) { + ch = source.charCodeAt(index); + if (esutils.code.isIdentifierStartES5(ch)) { + utility.throwError('unexpected token'); + } + } + + value = parseFloat(number); + return Token.NUMBER; + } + + + function scanTypeName() { + var ch, ch2; + + value = advance(); + while (index < length && isTypeName(source.charCodeAt(index))) { + ch = source.charCodeAt(index); + if (ch === 0x2E /* '.' */) { + if ((index + 1) >= length) { + return Token.ILLEGAL; + } + ch2 = source.charCodeAt(index + 1); + if (ch2 === 0x3C /* '<' */) { + break; + } + } + value += advance(); + } + return Token.NAME; + } + + function next() { + var ch; + + previous = index; + + while (index < length && esutils.code.isWhiteSpace(source.charCodeAt(index))) { + advance(); + } + if (index >= length) { + token = Token.EOF; + return token; + } + + ch = source.charCodeAt(index); + switch (ch) { + case 0x27: /* ''' */ + case 0x22: /* '"' */ + token = scanString(); + return token; + + case 0x3A: /* ':' */ + advance(); + token = Token.COLON; + return token; + + case 0x2C: /* ',' */ + advance(); + token = Token.COMMA; + return token; + + case 0x28: /* '(' */ + advance(); + token = Token.LPAREN; + return token; + + case 0x29: /* ')' */ + advance(); + token = Token.RPAREN; + return token; + + case 0x5B: /* '[' */ + advance(); + token = Token.LBRACK; + return token; + + case 0x5D: /* ']' */ + advance(); + token = Token.RBRACK; + return token; + + case 0x7B: /* '{' */ + advance(); + token = Token.LBRACE; + return token; + + case 0x7D: /* '}' */ + advance(); + token = Token.RBRACE; + return token; + + case 0x2E: /* '.' */ + if (index + 1 < length) { + ch = source.charCodeAt(index + 1); + if (ch === 0x3C /* '<' */) { + advance(); // '.' + advance(); // '<' + token = Token.DOT_LT; + return token; + } + + if (ch === 0x2E /* '.' */ && index + 2 < length && source.charCodeAt(index + 2) === 0x2E /* '.' */) { + advance(); // '.' + advance(); // '.' + advance(); // '.' + token = Token.REST; + return token; + } + + if (esutils.code.isDecimalDigit(ch)) { + token = scanNumber(); + return token; + } + } + token = Token.ILLEGAL; + return token; + + case 0x3C: /* '<' */ + advance(); + token = Token.LT; + return token; + + case 0x3E: /* '>' */ + advance(); + token = Token.GT; + return token; + + case 0x2A: /* '*' */ + advance(); + token = Token.STAR; + return token; + + case 0x7C: /* '|' */ + advance(); + token = Token.PIPE; + return token; + + case 0x3F: /* '?' */ + advance(); + token = Token.QUESTION; + return token; + + case 0x21: /* '!' */ + advance(); + token = Token.BANG; + return token; + + case 0x3D: /* '=' */ + advance(); + token = Token.EQUAL; + return token; + + case 0x2D: /* '-' */ + token = scanNumber(); + return token; + + default: + if (esutils.code.isDecimalDigit(ch)) { + token = scanNumber(); + return token; + } + + // type string permits following case, + // + // namespace.module.MyClass + // + // this reduced 1 token TK_NAME + utility.assert(isTypeName(ch)); + token = scanTypeName(); + return token; + } + } + + function consume(target, text) { + utility.assert(token === target, text || 'consumed token not matched'); + next(); + } + + function expect(target, message) { + if (token !== target) { + utility.throwError(message || 'unexpected token'); + } + next(); + } + + // UnionType := '(' TypeUnionList ')' + // + // TypeUnionList := + // <> + // | NonemptyTypeUnionList + // + // NonemptyTypeUnionList := + // TypeExpression + // | TypeExpression '|' NonemptyTypeUnionList + function parseUnionType() { + var elements; + consume(Token.LPAREN, 'UnionType should start with ('); + elements = []; + if (token !== Token.RPAREN) { + while (true) { + elements.push(parseTypeExpression()); + if (token === Token.RPAREN) { + break; + } + expect(Token.PIPE); + } + } + consume(Token.RPAREN, 'UnionType should end with )'); + return { + type: Syntax.UnionType, + elements: elements + }; + } + + // ArrayType := '[' ElementTypeList ']' + // + // ElementTypeList := + // <> + // | TypeExpression + // | '...' TypeExpression + // | TypeExpression ',' ElementTypeList + function parseArrayType() { + var elements; + consume(Token.LBRACK, 'ArrayType should start with ['); + elements = []; + while (token !== Token.RBRACK) { + if (token === Token.REST) { + consume(Token.REST); + elements.push({ + type: Syntax.RestType, + expression: parseTypeExpression() + }); + break; + } else { + elements.push(parseTypeExpression()); + } + if (token !== Token.RBRACK) { + expect(Token.COMMA); + } + } + expect(Token.RBRACK); + return { + type: Syntax.ArrayType, + elements: elements + }; + } + + function parseFieldName() { + var v = value; + if (token === Token.NAME || token === Token.STRING) { + next(); + return v; + } + + if (token === Token.NUMBER) { + consume(Token.NUMBER); + return String(v); + } + + utility.throwError('unexpected token'); + } + + // FieldType := + // FieldName + // | FieldName ':' TypeExpression + // + // FieldName := + // NameExpression + // | StringLiteral + // | NumberLiteral + // | ReservedIdentifier + function parseFieldType() { + var key; + + key = parseFieldName(); + if (token === Token.COLON) { + consume(Token.COLON); + return { + type: Syntax.FieldType, + key: key, + value: parseTypeExpression() + }; + } + return { + type: Syntax.FieldType, + key: key, + value: null + }; + } + + // RecordType := '{' FieldTypeList '}' + // + // FieldTypeList := + // <> + // | FieldType + // | FieldType ',' FieldTypeList + function parseRecordType() { + var fields; + + consume(Token.LBRACE, 'RecordType should start with {'); + fields = []; + if (token === Token.COMMA) { + consume(Token.COMMA); + } else { + while (token !== Token.RBRACE) { + fields.push(parseFieldType()); + if (token !== Token.RBRACE) { + expect(Token.COMMA); + } + } + } + expect(Token.RBRACE); + return { + type: Syntax.RecordType, + fields: fields + }; + } + + // NameExpression := + // Identifier + // | TagIdentifier ':' Identifier + // + // Tag identifier is one of "module", "external" or "event" + // Identifier is the same as Token.NAME, including any dots, something like + // namespace.module.MyClass + function parseNameExpression() { + var name = value; + expect(Token.NAME); + + if (token === Token.COLON && ( + name === 'module' || + name === 'external' || + name === 'event')) { + consume(Token.COLON); + name += ':' + value; + expect(Token.NAME); + } + + return { + type: Syntax.NameExpression, + name: name + }; + } + + // TypeExpressionList := + // TopLevelTypeExpression + // | TopLevelTypeExpression ',' TypeExpressionList + function parseTypeExpressionList() { + var elements = []; + + elements.push(parseTop()); + while (token === Token.COMMA) { + consume(Token.COMMA); + elements.push(parseTop()); + } + return elements; + } + + // TypeName := + // NameExpression + // | NameExpression TypeApplication + // + // TypeApplication := + // '.<' TypeExpressionList '>' + // | '<' TypeExpressionList '>' // this is extension of doctrine + function parseTypeName() { + var expr, applications; + + expr = parseNameExpression(); + if (token === Token.DOT_LT || token === Token.LT) { + next(); + applications = parseTypeExpressionList(); + expect(Token.GT); + return { + type: Syntax.TypeApplication, + expression: expr, + applications: applications + }; + } + return expr; + } + + // ResultType := + // <> + // | ':' void + // | ':' TypeExpression + // + // BNF is above + // but, we remove <> pattern, so token is always TypeToken::COLON + function parseResultType() { + consume(Token.COLON, 'ResultType should start with :'); + if (token === Token.NAME && value === 'void') { + consume(Token.NAME); + return { + type: Syntax.VoidLiteral + }; + } + return parseTypeExpression(); + } + + // ParametersType := + // RestParameterType + // | NonRestParametersType + // | NonRestParametersType ',' RestParameterType + // + // RestParameterType := + // '...' + // '...' Identifier + // + // NonRestParametersType := + // ParameterType ',' NonRestParametersType + // | ParameterType + // | OptionalParametersType + // + // OptionalParametersType := + // OptionalParameterType + // | OptionalParameterType, OptionalParametersType + // + // OptionalParameterType := ParameterType= + // + // ParameterType := TypeExpression | Identifier ':' TypeExpression + // + // Identifier is "new" or "this" + function parseParametersType() { + var params = [], optionalSequence = false, expr, rest = false; + + while (token !== Token.RPAREN) { + if (token === Token.REST) { + // RestParameterType + consume(Token.REST); + rest = true; + } + + expr = parseTypeExpression(); + if (expr.type === Syntax.NameExpression && token === Token.COLON) { + // Identifier ':' TypeExpression + consume(Token.COLON); + expr = { + type: Syntax.ParameterType, + name: expr.name, + expression: parseTypeExpression() + }; + } + if (token === Token.EQUAL) { + consume(Token.EQUAL); + expr = { + type: Syntax.OptionalType, + expression: expr + }; + optionalSequence = true; + } else { + if (optionalSequence) { + utility.throwError('unexpected token'); + } + } + if (rest) { + expr = { + type: Syntax.RestType, + expression: expr + }; + } + params.push(expr); + if (token !== Token.RPAREN) { + expect(Token.COMMA); + } + } + return params; + } + + // FunctionType := 'function' FunctionSignatureType + // + // FunctionSignatureType := + // | TypeParameters '(' ')' ResultType + // | TypeParameters '(' ParametersType ')' ResultType + // | TypeParameters '(' 'this' ':' TypeName ')' ResultType + // | TypeParameters '(' 'this' ':' TypeName ',' ParametersType ')' ResultType + function parseFunctionType() { + var isNew, thisBinding, params, result, fnType; + utility.assert(token === Token.NAME && value === 'function', 'FunctionType should start with \'function\''); + consume(Token.NAME); + + // Google Closure Compiler is not implementing TypeParameters. + // So we do not. if we don't get '(', we see it as error. + expect(Token.LPAREN); + + isNew = false; + params = []; + thisBinding = null; + if (token !== Token.RPAREN) { + // ParametersType or 'this' + if (token === Token.NAME && + (value === 'this' || value === 'new')) { + // 'this' or 'new' + // 'new' is Closure Compiler extension + isNew = value === 'new'; + consume(Token.NAME); + expect(Token.COLON); + thisBinding = parseTypeName(); + if (token === Token.COMMA) { + consume(Token.COMMA); + params = parseParametersType(); + } + } else { + params = parseParametersType(); + } + } + + expect(Token.RPAREN); + + result = null; + if (token === Token.COLON) { + result = parseResultType(); + } + + fnType = { + type: Syntax.FunctionType, + params: params, + result: result + }; + if (thisBinding) { + // avoid adding null 'new' and 'this' properties + fnType['this'] = thisBinding; + if (isNew) { + fnType['new'] = true; + } + } + return fnType; + } + + // BasicTypeExpression := + // '*' + // | 'null' + // | 'undefined' + // | TypeName + // | FunctionType + // | UnionType + // | RecordType + // | ArrayType + function parseBasicTypeExpression() { + var context; + switch (token) { + case Token.STAR: + consume(Token.STAR); + return { + type: Syntax.AllLiteral + }; + + case Token.LPAREN: + return parseUnionType(); + + case Token.LBRACK: + return parseArrayType(); + + case Token.LBRACE: + return parseRecordType(); + + case Token.NAME: + if (value === 'null') { + consume(Token.NAME); + return { + type: Syntax.NullLiteral + }; + } + + if (value === 'undefined') { + consume(Token.NAME); + return { + type: Syntax.UndefinedLiteral + }; + } + + if (value === 'true' || value === 'false') { + consume(Token.NAME); + return { + type: Syntax.BooleanLiteralType, + value: value === 'true' + }; + } + + context = Context.save(); + if (value === 'function') { + try { + return parseFunctionType(); + } catch (e) { + context.restore(); + } + } + + return parseTypeName(); + + case Token.STRING: + next(); + return { + type: Syntax.StringLiteralType, + value: value + }; + + case Token.NUMBER: + next(); + return { + type: Syntax.NumericLiteralType, + value: value + }; + + default: + utility.throwError('unexpected token'); + } + } + + // TypeExpression := + // BasicTypeExpression + // | '?' BasicTypeExpression + // | '!' BasicTypeExpression + // | BasicTypeExpression '?' + // | BasicTypeExpression '!' + // | '?' + // | BasicTypeExpression '[]' + function parseTypeExpression() { + var expr; + + if (token === Token.QUESTION) { + consume(Token.QUESTION); + if (token === Token.COMMA || token === Token.EQUAL || token === Token.RBRACE || + token === Token.RPAREN || token === Token.PIPE || token === Token.EOF || + token === Token.RBRACK || token === Token.GT) { + return { + type: Syntax.NullableLiteral + }; + } + return { + type: Syntax.NullableType, + expression: parseBasicTypeExpression(), + prefix: true + }; + } + + if (token === Token.BANG) { + consume(Token.BANG); + return { + type: Syntax.NonNullableType, + expression: parseBasicTypeExpression(), + prefix: true + }; + } + + expr = parseBasicTypeExpression(); + if (token === Token.BANG) { + consume(Token.BANG); + return { + type: Syntax.NonNullableType, + expression: expr, + prefix: false + }; + } + + if (token === Token.QUESTION) { + consume(Token.QUESTION); + return { + type: Syntax.NullableType, + expression: expr, + prefix: false + }; + } + + if (token === Token.LBRACK) { + consume(Token.LBRACK); + expect(Token.RBRACK, 'expected an array-style type declaration (' + value + '[])'); + return { + type: Syntax.TypeApplication, + expression: { + type: Syntax.NameExpression, + name: 'Array' + }, + applications: [expr] + }; + } + + return expr; + } + + // TopLevelTypeExpression := + // TypeExpression + // | TypeUnionList + // + // This rule is Google Closure Compiler extension, not ES4 + // like, + // { number | string } + // If strict to ES4, we should write it as + // { (number|string) } + function parseTop() { + var expr, elements; + + expr = parseTypeExpression(); + if (token !== Token.PIPE) { + return expr; + } + + elements = [expr]; + consume(Token.PIPE); + while (true) { + elements.push(parseTypeExpression()); + if (token !== Token.PIPE) { + break; + } + consume(Token.PIPE); + } + + return { + type: Syntax.UnionType, + elements: elements + }; + } + + function parseTopParamType() { + var expr; + + if (token === Token.REST) { + consume(Token.REST); + return { + type: Syntax.RestType, + expression: parseTop() + }; + } + + expr = parseTop(); + if (token === Token.EQUAL) { + consume(Token.EQUAL); + return { + type: Syntax.OptionalType, + expression: expr + }; + } + + return expr; + } + + function parseType(src, opt) { + var expr; + + source = src; + length = source.length; + index = 0; + previous = 0; + + next(); + expr = parseTop(); + + if (opt && opt.midstream) { + return { + expression: expr, + index: previous + }; + } + + if (token !== Token.EOF) { + utility.throwError('not reach to EOF'); + } + + return expr; + } + + function parseParamType(src, opt) { + var expr; + + source = src; + length = source.length; + index = 0; + previous = 0; + + next(); + expr = parseTopParamType(); + + if (opt && opt.midstream) { + return { + expression: expr, + index: previous + }; + } + + if (token !== Token.EOF) { + utility.throwError('not reach to EOF'); + } + + return expr; + } + + function stringifyImpl(node, compact, topLevel) { + var result, i, iz; + + switch (node.type) { + case Syntax.NullableLiteral: + result = '?'; + break; + + case Syntax.AllLiteral: + result = '*'; + break; + + case Syntax.NullLiteral: + result = 'null'; + break; + + case Syntax.UndefinedLiteral: + result = 'undefined'; + break; + + case Syntax.VoidLiteral: + result = 'void'; + break; + + case Syntax.UnionType: + if (!topLevel) { + result = '('; + } else { + result = ''; + } + + for (i = 0, iz = node.elements.length; i < iz; ++i) { + result += stringifyImpl(node.elements[i], compact); + if ((i + 1) !== iz) { + result += '|'; + } + } + + if (!topLevel) { + result += ')'; + } + break; + + case Syntax.ArrayType: + result = '['; + for (i = 0, iz = node.elements.length; i < iz; ++i) { + result += stringifyImpl(node.elements[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += ']'; + break; + + case Syntax.RecordType: + result = '{'; + for (i = 0, iz = node.fields.length; i < iz; ++i) { + result += stringifyImpl(node.fields[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += '}'; + break; + + case Syntax.FieldType: + if (node.value) { + result = node.key + (compact ? ':' : ': ') + stringifyImpl(node.value, compact); + } else { + result = node.key; + } + break; + + case Syntax.FunctionType: + result = compact ? 'function(' : 'function ('; + + if (node['this']) { + if (node['new']) { + result += (compact ? 'new:' : 'new: '); + } else { + result += (compact ? 'this:' : 'this: '); + } + + result += stringifyImpl(node['this'], compact); + + if (node.params.length !== 0) { + result += compact ? ',' : ', '; + } + } + + for (i = 0, iz = node.params.length; i < iz; ++i) { + result += stringifyImpl(node.params[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + + result += ')'; + + if (node.result) { + result += (compact ? ':' : ': ') + stringifyImpl(node.result, compact); + } + break; + + case Syntax.ParameterType: + result = node.name + (compact ? ':' : ': ') + stringifyImpl(node.expression, compact); + break; + + case Syntax.RestType: + result = '...'; + if (node.expression) { + result += stringifyImpl(node.expression, compact); + } + break; + + case Syntax.NonNullableType: + if (node.prefix) { + result = '!' + stringifyImpl(node.expression, compact); + } else { + result = stringifyImpl(node.expression, compact) + '!'; + } + break; + + case Syntax.OptionalType: + result = stringifyImpl(node.expression, compact) + '='; + break; + + case Syntax.NullableType: + if (node.prefix) { + result = '?' + stringifyImpl(node.expression, compact); + } else { + result = stringifyImpl(node.expression, compact) + '?'; + } + break; + + case Syntax.NameExpression: + result = node.name; + break; + + case Syntax.TypeApplication: + result = stringifyImpl(node.expression, compact) + '.<'; + for (i = 0, iz = node.applications.length; i < iz; ++i) { + result += stringifyImpl(node.applications[i], compact); + if ((i + 1) !== iz) { + result += compact ? ',' : ', '; + } + } + result += '>'; + break; + + case Syntax.StringLiteralType: + result = '"' + node.value + '"'; + break; + + case Syntax.NumericLiteralType: + result = String(node.value); + break; + + case Syntax.BooleanLiteralType: + result = String(node.value); + break; + + default: + utility.throwError('Unknown type ' + node.type); + } + + return result; + } + + function stringify(node, options) { + if (options == null) { + options = {}; + } + return stringifyImpl(node, options.compact, options.topLevel); + } + + exports.parseType = parseType; + exports.parseParamType = parseParamType; + exports.stringify = stringify; + exports.Syntax = Syntax; +}()); +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/utility.js b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/utility.js new file mode 100644 index 0000000..381580e --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/lib/utility.js @@ -0,0 +1,35 @@ +/* + * @fileoverview Utilities for Doctrine + * @author Yusuke Suzuki + */ + + +(function () { + 'use strict'; + + var VERSION; + + VERSION = require('../package.json').version; + exports.VERSION = VERSION; + + function DoctrineError(message) { + this.name = 'DoctrineError'; + this.message = message; + } + DoctrineError.prototype = (function () { + var Middle = function () { }; + Middle.prototype = Error.prototype; + return new Middle(); + }()); + DoctrineError.prototype.constructor = DoctrineError; + exports.DoctrineError = DoctrineError; + + function throwError(message) { + throw new DoctrineError(message); + } + exports.throwError = throwError; + + exports.assert = require('assert'); +}()); + +/* vim: set sw=4 ts=4 et tw=80 : */ diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/package.json b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/package.json new file mode 100644 index 0000000..b3c358f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/node_modules/doctrine/package.json @@ -0,0 +1,96 @@ +{ + "_from": "doctrine@1.5.0", + "_id": "doctrine@1.5.0", + "_inBundle": false, + "_integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "_location": "/eslint-plugin-import/doctrine", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "doctrine@1.5.0", + "name": "doctrine", + "escapedName": "doctrine", + "rawSpec": "1.5.0", + "saveSpec": null, + "fetchSpec": "1.5.0" + }, + "_requiredBy": [ + "/eslint-plugin-import" + ], + "_resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "_shasum": "379dce730f6166f76cefa4e6707a159b02c5a6fa", + "_spec": "doctrine@1.5.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/eslint-plugin-import", + "bugs": { + "url": "https://github.com/eslint/doctrine/issues" + }, + "bundleDependencies": false, + "dependencies": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "deprecated": false, + "description": "JSDoc parser", + "devDependencies": { + "coveralls": "^2.11.2", + "dateformat": "^1.0.11", + "eslint": "^1.10.3", + "eslint-release": "^0.10.0", + "istanbul": "^0.4.1", + "linefix": "^0.1.1", + "mocha": "^2.3.3", + "npm-license": "^0.3.1", + "semver": "^5.0.3", + "shelljs": "^0.5.3", + "shelljs-nodecli": "^0.1.1", + "should": "^5.0.1" + }, + "directories": { + "lib": "./lib" + }, + "engines": { + "node": ">=0.10.0" + }, + "files": [ + "lib", + "LICENSE.BSD", + "LICENSE.closure-compiler", + "LICENSE.esprima", + "README.md" + ], + "homepage": "https://github.com/eslint/doctrine", + "licenses": [ + { + "type": "BSD", + "url": "http://github.com/eslint/doctrine/raw/master/LICENSE.BSD" + } + ], + "main": "lib/doctrine.js", + "maintainers": [ + { + "name": "Nicholas C. Zakas", + "email": "nicholas+npm@nczconsulting.com", + "url": "https://www.nczonline.net" + }, + { + "name": "Yusuke Suzuki", + "email": "utatane.tea@gmail.com", + "url": "https://github.com/Constellation" + } + ], + "name": "doctrine", + "repository": { + "type": "git", + "url": "git+https://github.com/eslint/doctrine.git" + }, + "scripts": { + "alpharelease": "eslint-prerelease alpha", + "betarelease": "eslint-prerelease beta", + "ci-release": "eslint-ci-release", + "lint": "eslint lib/", + "release": "eslint-release", + "test": "npm run lint && node Makefile.js test" + }, + "version": "1.5.0" +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-import/package.json b/tic-tac-toe-app/node_modules/eslint-plugin-import/package.json new file mode 100644 index 0000000..c6653e2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-import/package.json @@ -0,0 +1,149 @@ +{ + "_from": "eslint-plugin-import@^2.20.2", + "_id": "eslint-plugin-import@2.20.2", + "_inBundle": false, + "_integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "_location": "/eslint-plugin-import", + "_phantomChildren": { + "esutils": "2.0.3", + "isarray": "1.0.0" + }, + "_requested": { + "type": "range", + "registry": true, + "raw": "eslint-plugin-import@^2.20.2", + "name": "eslint-plugin-import", + "escapedName": "eslint-plugin-import", + "rawSpec": "^2.20.2", + "saveSpec": null, + "fetchSpec": "^2.20.2" + }, + "_requiredBy": [ + "#DEV:/" + ], + "_resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "_shasum": "91fc3807ce08be4837141272c8b99073906e588d", + "_spec": "eslint-plugin-import@^2.20.2", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app", + "author": { + "name": "Ben Mosher", + "email": "me@benmosher.com" + }, + "bugs": { + "url": "https://github.com/benmosher/eslint-plugin-import/issues" + }, + "bundleDependencies": false, + "dependencies": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "deprecated": false, + "description": "Import with sanity.", + "devDependencies": { + "@eslint/import-test-order-redirect-scoped": "file:./tests/files/order-redirect-scoped", + "@test-scope/some-module": "file:./tests/files/symlinked-module", + "@typescript-eslint/parser": "1.10.3-alpha.13", + "babel-cli": "^6.26.0", + "babel-core": "^6.26.3", + "babel-eslint": "^8.2.6", + "babel-plugin-istanbul": "^4.1.6", + "babel-plugin-module-resolver": "^2.7.1", + "babel-preset-es2015-argon": "latest", + "babel-register": "^6.26.0", + "babylon": "^6.18.0", + "chai": "^4.2.0", + "coveralls": "^3.0.6", + "cross-env": "^4.0.0", + "eslint": "2.x - 6.x", + "eslint-import-resolver-node": "file:./resolvers/node", + "eslint-import-resolver-typescript": "^1.0.2", + "eslint-import-resolver-webpack": "file:./resolvers/webpack", + "eslint-import-test-order-redirect": "file:./tests/files/order-redirect", + "eslint-module-utils": "file:./utils", + "eslint-plugin-eslint-plugin": "^2.2.1", + "eslint-plugin-import": "2.x", + "esquery": "~1.1.0", + "in-publish": "^2.0.0", + "linklocal": "^2.8.2", + "mocha": "^3.5.3", + "nyc": "^11.9.0", + "redux": "^3.7.2", + "rimraf": "^2.7.1", + "semver": "^6.3.0", + "sinon": "^2.4.1", + "typescript": "~3.2.2", + "typescript-eslint-parser": "^22.0.0" + }, + "directories": { + "test": "tests" + }, + "engines": { + "node": ">=4" + }, + "files": [ + "*.md", + "LICENSE", + "docs", + "lib", + "config", + "memo-parser/{*.js,LICENSE,*.md}" + ], + "homepage": "https://github.com/benmosher/eslint-plugin-import", + "keywords": [ + "eslint", + "eslintplugin", + "es6", + "jsnext", + "modules", + "import", + "export" + ], + "license": "MIT", + "main": "lib/index.js", + "name": "eslint-plugin-import", + "nyc": { + "require": [ + "babel-register" + ], + "sourceMap": false, + "instrument": false, + "include": [ + "src/", + "resolvers/" + ] + }, + "peerDependencies": { + "eslint": "2.x - 6.x" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/benmosher/eslint-plugin-import.git" + }, + "scripts": { + "build": "babel --quiet --out-dir lib src", + "copy-metafiles": "for DIR in memo-parser resolvers/node resolvers/webpack utils; do cp LICENSE .npmrc \"${DIR}/\"; done", + "coveralls": "nyc report --reporter lcovonly && cat ./coverage/lcov.info | coveralls", + "mocha": "nyc -s mocha", + "postbuild": "npm run copy-metafiles", + "posttest": "eslint .", + "prebuild": "rimraf lib", + "prepublish": "not-in-publish || npm run build", + "pretest": "linklocal", + "test": "npm run tests-only", + "test-all": "npm test && for resolver in ./resolvers/*; do cd $resolver && npm test && cd ../..; done", + "test-compiled": "npm run prepublish && BABEL_ENV=testCompiled mocha --compilers js:babel-register tests/src", + "tests-only": "cross-env BABEL_ENV=test npm run mocha tests/src", + "watch": "npm run tests-only -- -- --watch" + }, + "version": "2.20.2" +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.babelrc b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.babelrc new file mode 100644 index 0000000..2159bf6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.babelrc @@ -0,0 +1,13 @@ +{ + "presets": [ + [ + "airbnb", + { + "targets": { + "node": 4 + } + } + ] + ], + "plugins": ["@babel/plugin-transform-flow-strip-types"] +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintignore b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintignore new file mode 100644 index 0000000..869feff --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintignore @@ -0,0 +1,3 @@ +node_modules/ +reports/ +lib/ diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintrc b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintrc new file mode 100644 index 0000000..0151770 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.eslintrc @@ -0,0 +1,14 @@ +{ + extends: [ + "airbnb-base", + "plugin:flowtype/recommended" + ], + parser: "babel-eslint", + plugins: [ + "flowtype" + ], + rules: { + 'max-len': 'off', + 'no-template-curly-in-string': 'off', + } +} diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.watchmanconfig b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/.watchmanconfig new file mode 100755 index 0000000..e69de29 diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/CHANGELOG.md b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/CHANGELOG.md new file mode 100644 index 0000000..cad7991 --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/CHANGELOG.md @@ -0,0 +1,408 @@ +6.2.3 / 2019-06-30 +================= +- [617] Add @babel/runtime to the dependencies + +6.2.2 / 2019-06-29 +================= +- Update jsx-ast-utils to v2.2.1 +- Add @babel/cli to the dev dependencies +- Update ESLint to v6 +- Update jsx-ast-utils to 2.2.0 +- Update flow-bin to version 0.102.0 +- [589] Allow expression statements for attribute values in no-noninteractive-tabindexlow-bin-0.101.0 +- [583] Allow expression values in attributes by configurationrror +- [596] Adding a test case for no-static-element-interactionseper/flow-bin-0.101.0) Merge branch 'master' into greenkeeper/flow-bin-0.101.0 +- Only run branch test coverage on the master branch +- chore(package): update flow-bin to version 0.100.0 +- Allow select as a valid child of label. +- Allow Node 4 / ESLint 3 failure to unblock ESLint upgrade in PR #568 +- chore(package): update flow-bin to version 0.99.0 +- Remove rootDir from Jest path configs +- (fix) Template literals with undefined evaluate to the string undefined. +- adds more tests to “anchor-is-valid” +- Fixes “anchor-is-valid” false positive for hrefs starting with the word “javascript” +- chore(package): update eslint-plugin-flowtype to version 3.5.0 +- Modified no-static-element-interactions to pass on non-literal roles. +- Added isNonLiteralProperty util method +- [#399] Account for spread in parser options +- [552] control-has-associated-label should allow generic links +- [issue 392] ul role='list' test case +- chore(package): update eslint to version 5.15.2 +- chore(package): update flow-bin to version 0.95.0 +- chore(package): update expect to version 24.3.1 +- Fix typo: defintions > definitions +- docs: add proper title to links to axe website for media-has-caption +- docs: removes deprecated rule label-has-for +- docs: fix typo and couple grammatical errors in Readme +- Ignore null/undefined values in role-supports-aria-props rule +- Ignore undefined values in aria-proptypes rule +- Ignore null values in aria-proptypes rule +- set target for node 4 + +6.2.1 / 2019-02-03 +================= +- 9980e45 [fix] Prevent Error when JSXSpreadAttribute is passed to isSemanticRoleElement + +6.2.0 / 2019-01-25 +================= +- 5650674 [new rule] control-has-associated-label checks interactives for a label +- f234698 [docs] add How to manage IDs +- 9924d03 [docs] document jsx-a11y/label-has-associated-control assert option +- 77b9870 [docs] Add newlines below headings +- 8244e43 [docs] Add syntax highlighting to example +- 26f41c8 [docs] Change explanation for role="presentation" escape hatch +- 33a1f94 [fix] - Purely decorative emojis do not need descriptions. +- 29d20f7 [fix] (package): update emoji-regex to version 7.0.2 +- 0b63f73 [chore] (package): update flow-bin to version 0.88.0 +- baa1344 [fix] Disable jsx-a11y/label-has-for in recommended +- 2c5fb06 [chore] (package): update jscodeshift to version 0.6.0 +- 87debc0 [fix] corrected no-noninteractive-element-to-interactive-role.md file +- d56265b [chore] (package): update flow-bin to version 0.87.0 +- 477966f [fix] Update test for implicit role of `img` +- f484ce3 [fix] No implicit role for `` with `alt=""` +- 6c33bcb [fix] Add select to the list of default control elements in label-has-associated-control +- 011f8d9 [fix] Dialog and Alert roles can host keyboard listeners +- 0f6a8af [fix] More easier `plugin:jsx-a11y/{recommended,strict}` configs +- 3844248 [fix] Mark the replacement for label-has-for +- 93265cb [fix] normalizedValues to values +- 651366c [fix] Make aria-role case sensitive +- 56d3b9a [fix] [484] Fix role-has-required-aria-props for semantic elements like input[checkbox] +- 46e9abd [fix] Handle the type={truthy} case in jsx + +6.1.2 / 2018-10-05 +================= +- [fix] Add link-type styling recommendation to anchor-is-valid #486 +- [fix] `label-has-for`: `textarea`s are inputs too #470 + +6.1.1 / 2018-07-03 +================== +- [fix] aria-proptypes support for idlist, #454 +- [fix] Image with expanded props throws 'The prop must be a JSXAttribute collected by the AST parser.', #459 +- [fix] label-has-for: broken in v6.1.0, #455 + +6.1.0 / 2018-06-26 +================== +- [new] Support for eslint v5, #451 +- [new] aria-query updated to latest version +- [new] eslint-config-airbnb-base updated to the latest version +- [deprecate] The rule label-has-for is deprecated and replaced with label-has-associated-control +- [fix] heading-has-content updated to work with custom components, #431 +- [fix] aria-errormessage prop is now a valid ARIA property, #424 + +6.0.2 / 2017-06-28 +================== +- [fix] Prefix directories in `.npmignore` with `/` so it only matches the top-level directory + + +6.0.1 / 2017-06-28 +================== +- [temporary] Remove `src` and `flow` from package to resolve flow issues for consuming packages. + + +6.0.0 / 2017-06-05 +================= +- [new] Add rule `anchor-is-valid`. See documentation for configuration options. Thanks @AlmeroSteyn. +- [breaking] `href-no-hash` replaced with `anchor-is-valid` in the recommended and strict configs. Use the `invalidHref` aspect (active by default) in `anchor-is-valid` to continue to apply the behavior provided by `href-no-hash`. +- [breaking] Removed support for ESLint peer dependency at version ^2.10.2. +- [update] The rule `label-has-for` now allows inputs nested in label tags. Previously it was strict about requiring a `for` attribute. Thanks @ignatiusreza and @mjaltamirano. +- [update] New configuration for `interactive-supports-focus`. Recommended and strict configs for now contain a trimmed-down whitelist of roles that will be checked. +- [fix] Incompatibility between node version 4 and 5. Thanks @evilebottnawi. +- [fix] Missing README entry for `media-has-caption`. Thanks @ismail-syed. +- [fix] README updates explaining recommended and strict configs. Thanks @Donaldini. +- [fix] Updated to aria-query@0.7.0, which includes new ARIA 1.1 properties. Previously, the `aria-props` rule incorrectly threw errors for these new properties. + +5.1.1 / 2017-07-03 +================== + - [fix] revert v6 breaking changes unintentionally added in v5.1 (#283) + +5.1.0 / 2017-06-26 +================== + - [new] Support eslint v4. (#267) + - [new] `label-has-for`: add "required" option to allow customization (#240) + - [new] add `anchor-is-valid` (#224) + - [new] `interactive-supports-focus`: Split interactive supports focus into tabbable and focusable cases (#236) + - [new] `anchor-is-valid`: add `aspects` option (#251) + - [Deps] Bump aria-query to 0.7.0 + +5.0.3 / 2017-05-16 +================== +- [fix] Remove `flow` directory from `.npmignore` to accommodate explicit imports from `v5.0.2`. + + +5.0.2 / 2017-05-16 +================== +- [fix] Explicitly import flow types to resolve flow failures in consuming projects. + + +5.0.1 / 2017-05-07 +================== +- [fix] Polyfill Array.includes for node < 6 support. + + +5.0.0 / 2017-05-05 +================== +- [breaking] Refactor `img-has-alt` rule into `alt-text` rule +- [breaking] Rule `onclick-has-role` is removed. Replaced with `no-static-element-interactions` and `no-noninteractive-element-interactions`. +- [breaking] Rule `onclick-has-focus` is removed. Replaced with `interactive-supports-focus`. +- [new] - Add rule `media-has-caption` rule +- [new] - Add `ignoreNonDOM` option to `no-autofocus`. +- [new] - Add rule `no-interactive-element-to-noninteractive-role` +- [new] - Add rule `no-noninteractive-element-to-interactive-role` +- [new] - Add rule `no-noninteractive-tabindex` +- [new] - Configs split into "recommended" and "strict". +- [enhanced] - Configuration options added to `no-static-element-interactions` and `no-noninteractive-element-interactions`. Options allow for fine-tuning of elements and event handlers to check. + + +4.0.0 / 2017-02-04 +================== +Add new rules: +- `jsx-a11y/accessible-emoji` +- `jsx-a11y/aria-activedescendant-has-tabindex` +- `jsx-a11y/iframe-has-title` +- `jsx-a11y/no-autofocus` +- `jsx-a11y/no-distracting-elements` *(breaking: consolidated no-marquee and no-blink into this rule.)* +- `jsx-a11y/no-redundant-roles` +- [fix] - redundant-alt to only check full words +- [docs] - Documentation upgrades across the board. +- [new] - Add `ignoreNonDom` +- [dev] - Add script to scaffold new rule creation. + + +3.0.2 / 2016-12-14 +================== +- [fix] - make `aria-invalid` values true and false pass for rule `aria-proptypes` + +3.0.1 / 2016-10-11 +================== +- [breaking] - Update all rule schemas to accept objects. This allows a future schema expansion to not be a breaking change. +- [breaking] - All rules with schemas that accepted a string OR array, now only allows an array. +- [new] - `href-no-hash` accepts new schema property `specialLink` to check for custom `href` properties on elements. (fixes [#76](https://github.com/evcohen/eslint-plugin-jsx-a11y/issues/76)) +- [breaking][fix] - `img-has-alt` now prefers `alt=""` over `role="presentation"`. You can set both, but not just `role="presentation"` by itself to ensure a11y across all devices. + +Note - see [rule documentation](https://github.com/evcohen/eslint-plugin-jsx-a11y/tree/master/docs/rules) for updated schemas. + +2.2.3 / 2016-10-08 +================== +- [fix] - Add `switch` aria role. +- [devDependencies] - Updgrade dev dependencies and fix linting issues. + + +2.2.2 / 2016-09-12 +================== +- [fix] `x-has-content` rules now pass with children prop set. + + +2.2.1 / 2016-08-31 +================== +- [fix] Update `tablist` role to include missing property `aria-multiselectable`. + + +2.2.0 / 2016-08-26 +================== +- [new] Add `click-events-have-key-events` rule. +- [new] Add `no-static-element-interactions` rule. +- [devDependencies] Upgrade `eslint`, `eslint-config-airbnb`, `mocha` to latest. +- [lint] Fix all new linting errors with upgrade +- [nit] Use `error` syntax over `2` syntax in recommended config. + + +2.1.0 / 2016-08-10 +================== +- [fix] Require `aria-checked` for roles that are subclasses of `checkbox` +- [new] Add `anchor-has-content` rule. +- [refactor] Use new eslint rule syntax +- [new] Add support for custom words in `img-redundant-alt` (mainly for i18n). + + +2.0.1 / 2016-07-13 +================== +- [fix] JSXElement support in expression handlers for prop types. +- [fix] `heading-has-content`: dangerouslySetInnerHTML will pass. + + +2.0.0 / 2016-07-12 +================== +- [breaking] Scope `no-onchange` rule to select menu elements only. + + +1.5.5 / 2016-07-05 +================== +- [fix] Add `eslint` v3 as a `peerDependency`. + + +1.5.4 / 2016-07-05 +================== +- [fix] Add `eslint` as a `peerDependency`. + + +1.5.3 / 2016-06-16 +================== +- [fix] Fix crash when ```` for `role-supports-aria-props`. + + +1.5.2 / 2016-06-16 +================== +- [fix] Fix `img-redundant-alt` rule to use `getLiteralPropValue` from `jsx-ast-utils`. + + +1.5.1 / 2016-06-16 +================== +- [fix] Fix checking for undefined in `heading-has-content` for children content. + + +1.5.0 / 2016-06-16 +================== +- [new] Add [heading-has-content](docs/rules/heading-has-content.md) rule. +- [new] Add [html-has-lang](docs/rules/html-has-lang.md) rule. +- [new] Add [lang](docs/rules/lang.md) rule. +- [new] Add [no-marquee](docs/rules/no-marquee.md) rule. +- [new] Add [scope](docs/rules/scope.md) rule. + + +1.4.2 / 2016-06-10 +================== +- [new] Integrate with latest `jsx-ast-utils` to use `propName` function. More support for namespaced names on attributes and elements. + + +1.4.1 / 2016-06-10 +================== +- [fix] Handle spread props in `aria-unsupported-elements` and `role-supports-aria-props` when reporting. + + +1.4.0 / 2016-06-10 +================== +- [dependency] Integrate [jsx-ast-utils](https://github.com/evcohen/jsx-ast-utils) +- [fix] Better error reporting for aria-unsupported-elements indicating which prop to remove. + + +1.3.0 / 2016-06-05 +================== +- [new] Spelling suggestions for incorrect `aria-*` props +- [fix] Ensure `role` value is a string before converting to lowercase in `img-has-alt` rule. + + +1.2.3 / 2016-06-02 +================== +- [fix] Handle dynamic `tabIndex` expression values, but still retain validation logic for literal `tabIndex` values. + + +1.2.2 / 2016-05-20 +================== +- [fix] Fix checks involving the tabIndex attribute that do not account for integer literals + + +1.2.1 / 2016-05-19 +================== +- [fix] Avoid testing interactivity of wrapper components with same name but different casing +as DOM elements (such as `Button` vs `button`). + + +1.2.0 / 2016-05-06 +================== +- [new] Import all roles from DPUB-ARIA. + + +1.1.0 / 2016-05-06 +================== +- [new] Add expression value handler for `BinaryExpression` type. +- [new] Add expression value handler for `NewExpression` type. +- [new] Add expression value handler for `ObjectExpression` type. +- [fix] Throws error when getting an expression of type without a handler function. + - This is for more graceful error handling and better issue reporting. + + +1.0.4 / 2016-04-28 +================== +- [fix] Add expression value handler for `ConditionalExpression` type. + + +1.0.3 / 2016-04-25 +================== +- [fix] Fix typo in recommended rules for `onclick-has-focus`. + + +1.0.2 / 2016-04-20 +================== +- [fix] Add expression value handler for `ThisExpression` type. + + +1.0.1 / 2016-04-19 +================== +- [fix] Fix build to copy source JSON files to build output. + + +1.0.0 / 2016-04-19 +================== +- [breaking] Rename `img-uses-alt` to `img-has-alt` +- [breaking] Rename `onlick-uses-role` to `onclick-has-role` +- [breaking] Rename `mouse-events-map-to-key-events` to `mouse-events-have-key-events` +- [breaking] Rename `use-onblur-not-onchange` to `no-onchange` +- [breaking] Rename `label-uses-for` to `label-has-for` +- [breaking] Rename `redundant-alt` to `img-redundant-alt` +- [breaking] Rename `no-hash-href` to `href-no-hash` +- [breaking] Rename `valid-aria-role` to `aria-role` + +- [new] Implement `aria-props` rule +- [new] Implement `aria-proptypes` rule +- [new] Implement `aria-unsupported-elements` rule +- [new] Implement `onclick-has-focus` rule +- [new] Implement `role-has-required-aria-props` rule +- [new] Implement `role-supports-aria-props` rule +- [new] Implement `tabindex-no-positive` rule + + +0.6.2 / 2016-04-08 +================== +- [fix] Fix rule details for img-uses-alt: allow alt="" or role="presentation". + + +0.6.1 / 2016-04-07 +================== +- [fix] Do not infer interactivity of components that are not low-level DOM elements. + + +0.6.0 / 2016-04-06 +================== +- [breaking] Allow alt="" when role="presentation" on img-uses-alt rule. +- [new] More descriptive error messaging for img-uses-alt rule. + + +0.5.2 / 2016-04-05 +================== +- [fix] Handle token lists for valid-aria-role. + + +0.5.1 / 2016-04-05 +================== +- [fix] Handle null valued props for valid-aria-role. + + +0.5.0 / 2016-04-02 +================== +- [new] Implement valid-aria-role rule. Based on [AX_ARIA_01](https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_01) + + +0.4.3 / 2016-03-29 +================== +- [fix] Handle LogicalExpression attribute types when extracting values. LogicalExpressions are of form `` + + +0.4.2 / 2016-03-24 +================== +- [fix] Allow component names of form `Object.Property` i.e. `UX.Layout` + + +0.3.0 / 2016-03-02 +================== +- [new] Implement [no-hash-href](docs/rules/no-hash-href.md) rule. +- [fix] Fixed TemplateLiteral AST value building to get more exact values from template strings. + + +0.2.0 / 2016-03-01 +================== +- [new] Implement [redunant-alt](docs/rules/redundant-alt.md) rule. + + +0.1.2 / 2016-03-01 +================== +- Initial pre-release. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/LICENSE.md b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/LICENSE.md new file mode 100644 index 0000000..a66c74b --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/LICENSE.md @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2016 Ethan Cohen + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/README.md b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/README.md new file mode 100644 index 0000000..bc8c29f --- /dev/null +++ b/tic-tac-toe-app/node_modules/eslint-plugin-jsx-a11y/README.md @@ -0,0 +1,298 @@ +

+ + build status + + + npm version + + + license + + + Coverage Status + + + Total npm downloads + +

+ +# eslint-plugin-jsx-a11y + +Static AST checker for accessibility rules on JSX elements. + +## Why? +Ryan Florence built out this awesome runtime-analysis tool called [react-a11y](https://github.com/reactjs/react-a11y). It is super useful. However, since you're probably already using linting in your project, this plugin comes for free and closer to the actual development process. Pairing this plugin with an editor lint plugin, you can bake accessibility standards into your application in real-time. + +**Note**: This project does not *replace* react-a11y, but can and should be used in conjunction with it. Static analysis tools cannot determine values of variables that are being placed in props before runtime, so linting will not fail if that value is undefined and/or does not pass the lint rule. + +## Installation + +**If you are installing this plugin via `eslint-config-airbnb`, please follow [these instructions](https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb#eslint-config-airbnb-1).** + +You'll first need to install [ESLint](http://eslint.org): + +```sh +# npm +npm install eslint --save-dev + +# yarn +yarn add eslint --dev +``` + +Next, install `eslint-plugin-jsx-a11y`: + +```sh +# npm +npm install eslint-plugin-jsx-a11y --save-dev + +# yarn +yarn add eslint-plugin-jsx-a11y --dev +``` + +**Note:** If you installed ESLint globally (using the `-g` flag in npm, or the `global` prefix in yarn) then you must also install `eslint-plugin-jsx-a11y` globally. + +## Usage + +Add `jsx-a11y` to the plugins section of your `.eslintrc` configuration file. You can omit the `eslint-plugin-` prefix: + +```json +{ + "plugins": [ + "jsx-a11y" + ] +} +``` + + +Then configure the rules you want to use under the rules section. + +```json +{ + "rules": { + "jsx-a11y/rule-name": 2 + } +} +``` + + +You can also enable all the recommended or strict rules at once. +Add `plugin:jsx-a11y/recommended` or `plugin:jsx-a11y/strict` in `extends`: + +```json +{ + "extends": [ + "plugin:jsx-a11y/recommended" + ] +} +``` + +## Supported Rules + +- [accessible-emoji](docs/rules/accessible-emoji.md): Enforce emojis are wrapped in and provide screenreader access. +- [alt-text](docs/rules/alt-text.md): Enforce all elements that require alternative text have meaningful information to relay back to end user. +- [anchor-has-content](docs/rules/anchor-has-content.md): Enforce all anchors to contain accessible content. +- [anchor-is-valid](docs/rules/anchor-is-valid.md): Enforce all anchors are valid, navigable elements. +- [aria-activedescendant-has-tabindex](docs/rules/aria-activedescendant-has-tabindex.md): Enforce elements with aria-activedescendant are tabbable. +- [aria-props](docs/rules/aria-props.md): Enforce all `aria-*` props are valid. +- [aria-proptypes](docs/rules/aria-proptypes.md): Enforce ARIA state and property values are valid. +- [aria-role](docs/rules/aria-role.md): Enforce that elements with ARIA roles must use a valid, non-abstract ARIA role. +- [aria-unsupported-elements](docs/rules/aria-unsupported-elements.md): Enforce that elements that do not support ARIA roles, states, and properties do not have those attributes. +- [click-events-have-key-events](docs/rules/click-events-have-key-events.md): Enforce a clickable non-interactive element has at least one keyboard event listener. +- [heading-has-content](docs/rules/heading-has-content.md): Enforce heading (`h1`, `h2`, etc) elements contain accessible content. +- [html-has-lang](docs/rules/html-has-lang.md): Enforce `` element has `lang` prop. +- [iframe-has-title](docs/rules/iframe-has-title.md): Enforce iframe elements have a title attribute. +- [img-redundant-alt](docs/rules/img-redundant-alt.md): Enforce `` alt prop does not contain the word "image", "picture", or "photo". +- [interactive-supports-focus](docs/rules/interactive-supports-focus.md): Enforce that elements with interactive handlers like `onClick` must be focusable. +- [label-has-associated-control](docs/rules/label-has-associated-control.md): Enforce that a `label` tag has a text label and an associated control. +- [lang](docs/rules/lang.md): Enforce lang attribute has a valid value. +- [media-has-caption](docs/rules/media-has-caption.md): Enforces that `

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 C{HGoO literal 0 HcmV?d00001 diff --git a/tic-tac-toe-app/node_modules/clipboardy/index.js b/tic-tac-toe-app/node_modules/clipboardy/index.js new file mode 100644 index 0000000..d6132fc --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/index.js @@ -0,0 +1,41 @@ +'use strict'; +const termux = require('./lib/termux.js'); +const linux = require('./lib/linux.js'); +const macos = require('./lib/macos.js'); +const windows = require('./lib/windows.js'); + +function platform() { + switch (process.platform) { + case 'darwin': + return macos; + case 'win32': + return windows; + case 'android': + if (process.env.PREFIX !== '/data/data/com.termux/files/usr') { + throw new Error('You need to install Termux for this module to work on Android: https://termux.com'); + } + return termux; + default: + return linux; + } +} + +exports.write = input => { + if (typeof input !== 'string') { + return Promise.reject(new TypeError(`Expected a string, got ${typeof input}`)); + } + + return platform().copy({input}).then(() => {}); +}; + +exports.read = () => platform().paste({stripEof: false}); + +exports.writeSync = input => { + if (typeof input !== 'string') { + throw new TypeError(`Expected a string, got ${typeof input}`); + } + + platform().copySync({input}); +}; + +exports.readSync = () => platform().pasteSync({stripEof: false}).stdout; diff --git a/tic-tac-toe-app/node_modules/clipboardy/lib/linux.js b/tic-tac-toe-app/node_modules/clipboardy/lib/linux.js new file mode 100644 index 0000000..a93cbf6 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/lib/linux.js @@ -0,0 +1,48 @@ +'use strict'; +const path = require('path'); +const execa = require('execa'); + +const handler = err => { + if (err.code === 'ENOENT') { + throw new Error('Couldn\'t find the required `xsel` binary. On Debian/Ubuntu you can install it with: sudo apt install xsel'); + } + + throw err; +}; + +const xsel = path.join(__dirname, '../fallbacks/linux/xsel'); + +module.exports = { + copy: opts => { + return execa(xsel, ['--clipboard', '--input'], opts) + .catch(() => execa('xsel', ['--clipboard', '--input'], opts)) + .catch(handler); + }, + paste: opts => { + return execa.stdout(xsel, ['--clipboard', '--output'], opts) + .catch(() => execa.stdout('xsel', ['--clipboard', '--output'], opts)) + .catch(handler); + }, + copySync: opts => { + try { + return execa.sync(xsel, ['--clipboard', '--input'], opts); + } catch (err) { + try { + return execa.sync('xsel', ['--clipboard', '--input'], opts); + } catch (err) { + handler(err); + } + } + }, + pasteSync: opts => { + try { + return execa.sync(xsel, ['--clipboard', '--output'], opts); + } catch (err) { + try { + return execa.sync('xsel', ['--clipboard', '--output'], opts); + } catch (err) { + handler(err); + } + } + } +}; diff --git a/tic-tac-toe-app/node_modules/clipboardy/lib/macos.js b/tic-tac-toe-app/node_modules/clipboardy/lib/macos.js new file mode 100644 index 0000000..d25305b --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/lib/macos.js @@ -0,0 +1,11 @@ +'use strict'; +const execa = require('execa'); + +const env = Object.assign({}, process.env, {LC_CTYPE: 'UTF-8'}); + +module.exports = { + copy: opts => execa('pbcopy', Object.assign({}, opts, {env})), + paste: opts => execa.stdout('pbpaste', Object.assign({}, opts, {env})), + copySync: opts => execa.sync('pbcopy', Object.assign({}, opts, {env})), + pasteSync: opts => execa.sync('pbpaste', Object.assign({}, opts, {env})) +}; diff --git a/tic-tac-toe-app/node_modules/clipboardy/lib/termux.js b/tic-tac-toe-app/node_modules/clipboardy/lib/termux.js new file mode 100644 index 0000000..6705019 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/lib/termux.js @@ -0,0 +1,29 @@ +'use strict'; +const execa = require('execa'); + +const handler = err => { + if (err.code === 'ENOENT') { + throw new Error('Couldn\'t find the termux-api scripts. You can install them with: apt install termux-api'); + } + + throw err; +}; + +module.exports = { + copy: opts => execa('termux-clipboard-set', opts).catch(handler), + paste: opts => execa.stdout('termux-clipboard-get', opts).catch(handler), + copySync: opts => { + try { + return execa.sync('termux-clipboard-set', opts); + } catch (err) { + handler(err); + } + }, + pasteSync: opts => { + try { + return execa.sync('termux-clipboard-get', opts); + } catch (err) { + handler(err); + } + } +}; diff --git a/tic-tac-toe-app/node_modules/clipboardy/lib/windows.js b/tic-tac-toe-app/node_modules/clipboardy/lib/windows.js new file mode 100644 index 0000000..d8f2294 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/lib/windows.js @@ -0,0 +1,16 @@ +'use strict'; +const path = require('path'); +const execa = require('execa'); +const arch = require('arch'); + +// Binaries from: https://github.com/sindresorhus/win-clipboard +const winBinPath = arch() === 'x64' ? + path.join(__dirname, '../fallbacks/windows/clipboard_x86_64.exe') : + path.join(__dirname, '../fallbacks/windows/clipboard_i686.exe'); + +module.exports = { + copy: opts => execa(winBinPath, ['--copy'], opts), + paste: opts => execa.stdout(winBinPath, ['--paste'], opts), + copySync: opts => execa.sync(winBinPath, ['--copy'], opts), + pasteSync: opts => execa.sync(winBinPath, ['--paste'], opts) +}; diff --git a/tic-tac-toe-app/node_modules/clipboardy/license b/tic-tac-toe-app/node_modules/clipboardy/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/index.js b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/index.js new file mode 100644 index 0000000..a691594 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/index.js @@ -0,0 +1,314 @@ +'use strict'; +const childProcess = require('child_process'); +const util = require('util'); +const crossSpawn = require('cross-spawn'); +const stripEof = require('strip-eof'); +const npmRunPath = require('npm-run-path'); +const isStream = require('is-stream'); +const _getStream = require('get-stream'); +const pFinally = require('p-finally'); +const onExit = require('signal-exit'); +const errname = require('./lib/errname'); +const stdio = require('./lib/stdio'); + +const TEN_MEGABYTES = 1000 * 1000 * 10; + +function handleArgs(cmd, args, opts) { + let parsed; + + opts = Object.assign({ + extendEnv: true, + env: {} + }, opts); + + if (opts.extendEnv) { + opts.env = Object.assign({}, process.env, opts.env); + } + + if (opts.__winShell === true) { + delete opts.__winShell; + parsed = { + command: cmd, + args, + options: opts, + file: cmd, + original: cmd + }; + } else { + parsed = crossSpawn._parse(cmd, args, opts); + } + + opts = Object.assign({ + maxBuffer: TEN_MEGABYTES, + stripEof: true, + preferLocal: true, + localDir: parsed.options.cwd || process.cwd(), + encoding: 'utf8', + reject: true, + cleanup: true + }, parsed.options); + + opts.stdio = stdio(opts); + + if (opts.preferLocal) { + opts.env = npmRunPath.env(Object.assign({}, opts, {cwd: opts.localDir})); + } + + return { + cmd: parsed.command, + args: parsed.args, + opts, + parsed + }; +} + +function handleInput(spawned, opts) { + const input = opts.input; + + if (input === null || input === undefined) { + return; + } + + if (isStream(input)) { + input.pipe(spawned.stdin); + } else { + spawned.stdin.end(input); + } +} + +function handleOutput(opts, val) { + if (val && opts.stripEof) { + val = stripEof(val); + } + + return val; +} + +function handleShell(fn, cmd, opts) { + let file = '/bin/sh'; + let args = ['-c', cmd]; + + opts = Object.assign({}, opts); + + if (process.platform === 'win32') { + opts.__winShell = true; + file = process.env.comspec || 'cmd.exe'; + args = ['/s', '/c', `"${cmd}"`]; + opts.windowsVerbatimArguments = true; + } + + if (opts.shell) { + file = opts.shell; + delete opts.shell; + } + + return fn(file, args, opts); +} + +function getStream(process, stream, encoding, maxBuffer) { + if (!process[stream]) { + return null; + } + + let ret; + + if (encoding) { + ret = _getStream(process[stream], { + encoding, + maxBuffer + }); + } else { + ret = _getStream.buffer(process[stream], {maxBuffer}); + } + + return ret.catch(err => { + err.stream = stream; + err.message = `${stream} ${err.message}`; + throw err; + }); +} + +module.exports = (cmd, args, opts) => { + let joinedCmd = cmd; + + if (Array.isArray(args) && args.length > 0) { + joinedCmd += ' ' + args.join(' '); + } + + const parsed = handleArgs(cmd, args, opts); + const encoding = parsed.opts.encoding; + const maxBuffer = parsed.opts.maxBuffer; + + let spawned; + try { + spawned = childProcess.spawn(parsed.cmd, parsed.args, parsed.opts); + } catch (err) { + return Promise.reject(err); + } + + let removeExitHandler; + if (parsed.opts.cleanup) { + removeExitHandler = onExit(() => { + spawned.kill(); + }); + } + + let timeoutId = null; + let timedOut = false; + + const cleanupTimeout = () => { + if (timeoutId) { + clearTimeout(timeoutId); + timeoutId = null; + } + }; + + if (parsed.opts.timeout > 0) { + timeoutId = setTimeout(() => { + timeoutId = null; + timedOut = true; + spawned.kill(parsed.opts.killSignal); + }, parsed.opts.timeout); + } + + const processDone = new Promise(resolve => { + spawned.on('exit', (code, signal) => { + cleanupTimeout(); + resolve({code, signal}); + }); + + spawned.on('error', err => { + cleanupTimeout(); + resolve({err}); + }); + + if (spawned.stdin) { + spawned.stdin.on('error', err => { + cleanupTimeout(); + resolve({err}); + }); + } + }); + + function destroy() { + if (spawned.stdout) { + spawned.stdout.destroy(); + } + + if (spawned.stderr) { + spawned.stderr.destroy(); + } + } + + const handlePromise = () => pFinally(Promise.all([ + processDone, + getStream(spawned, 'stdout', encoding, maxBuffer), + getStream(spawned, 'stderr', encoding, maxBuffer) + ]).then(arr => { + const result = arr[0]; + const stdout = arr[1]; + const stderr = arr[2]; + + let err = result.err; + const code = result.code; + const signal = result.signal; + + if (removeExitHandler) { + removeExitHandler(); + } + + if (err || code !== 0 || signal !== null) { + if (!err) { + let output = ''; + + if (Array.isArray(parsed.opts.stdio)) { + if (parsed.opts.stdio[2] !== 'inherit') { + output += output.length > 0 ? stderr : `\n${stderr}`; + } + + if (parsed.opts.stdio[1] !== 'inherit') { + output += `\n${stdout}`; + } + } else if (parsed.opts.stdio !== 'inherit') { + output = `\n${stderr}${stdout}`; + } + + err = new Error(`Command failed: ${joinedCmd}${output}`); + err.code = code < 0 ? errname(code) : code; + } + + // TODO: missing some timeout logic for killed + // https://github.com/nodejs/node/blob/master/lib/child_process.js#L203 + // err.killed = spawned.killed || killed; + err.killed = err.killed || spawned.killed; + + err.stdout = stdout; + err.stderr = stderr; + err.failed = true; + err.signal = signal || null; + err.cmd = joinedCmd; + err.timedOut = timedOut; + + if (!parsed.opts.reject) { + return err; + } + + throw err; + } + + return { + stdout: handleOutput(parsed.opts, stdout), + stderr: handleOutput(parsed.opts, stderr), + code: 0, + failed: false, + killed: false, + signal: null, + cmd: joinedCmd, + timedOut: false + }; + }), destroy); + + crossSpawn._enoent.hookChildProcess(spawned, parsed.parsed); + + handleInput(spawned, parsed.opts); + + spawned.then = (onfulfilled, onrejected) => handlePromise().then(onfulfilled, onrejected); + spawned.catch = onrejected => handlePromise().catch(onrejected); + + return spawned; +}; + +module.exports.stdout = function () { + // TODO: set `stderr: 'ignore'` when that option is implemented + return module.exports.apply(null, arguments).then(x => x.stdout); +}; + +module.exports.stderr = function () { + // TODO: set `stdout: 'ignore'` when that option is implemented + return module.exports.apply(null, arguments).then(x => x.stderr); +}; + +module.exports.shell = (cmd, opts) => handleShell(module.exports, cmd, opts); + +module.exports.sync = (cmd, args, opts) => { + const parsed = handleArgs(cmd, args, opts); + + if (isStream(parsed.opts.input)) { + throw new TypeError('The `input` option cannot be a stream in sync mode'); + } + + const result = childProcess.spawnSync(parsed.cmd, parsed.args, parsed.opts); + + if (result.error || result.status !== 0) { + throw (result.error || new Error(result.stderr === '' ? result.stdout : result.stderr)); + } + + result.stdout = handleOutput(parsed.opts, result.stdout); + result.stderr = handleOutput(parsed.opts, result.stderr); + + return result; +}; + +module.exports.shellSync = (cmd, opts) => handleShell(module.exports.sync, cmd, opts); + +module.exports.spawn = util.deprecate(module.exports, 'execa.spawn() is deprecated. Use execa() instead.'); diff --git a/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/errname.js b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/errname.js new file mode 100644 index 0000000..328f3e3 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/errname.js @@ -0,0 +1,37 @@ +'use strict'; +// The Node team wants to deprecate `process.bind(...)`. +// https://github.com/nodejs/node/pull/2768 +// +// However, we need the 'uv' binding for errname support. +// This is a defensive wrapper around it so `execa` will not fail entirely if it stops working someday. +// +// If this ever stops working. See: https://github.com/sindresorhus/execa/issues/31#issuecomment-215939939 for another possible solution. +let uv; + +try { + uv = process.binding('uv'); + + if (typeof uv.errname !== 'function') { + throw new TypeError('uv.errname is not a function'); + } +} catch (err) { + console.error('execa/lib/errname: unable to establish process.binding(\'uv\')', err); + uv = null; +} + +function errname(uv, code) { + if (uv) { + return uv.errname(code); + } + + if (!(code < 0)) { + throw new Error('err >= 0'); + } + + return `Unknown system error ${code}`; +} + +module.exports = code => errname(uv, code); + +// Used for testing the fallback behavior +module.exports.__test__ = errname; diff --git a/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/stdio.js b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/stdio.js new file mode 100644 index 0000000..a82d468 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/lib/stdio.js @@ -0,0 +1,41 @@ +'use strict'; +const alias = ['stdin', 'stdout', 'stderr']; + +const hasAlias = opts => alias.some(x => Boolean(opts[x])); + +module.exports = opts => { + if (!opts) { + return null; + } + + if (opts.stdio && hasAlias(opts)) { + throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${alias.map(x => `\`${x}\``).join(', ')}`); + } + + if (typeof opts.stdio === 'string') { + return opts.stdio; + } + + const stdio = opts.stdio || []; + + if (!Array.isArray(stdio)) { + throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof stdio}\``); + } + + const result = []; + const len = Math.max(stdio.length, alias.length); + + for (let i = 0; i < len; i++) { + let value = null; + + if (stdio[i] !== undefined) { + value = stdio[i]; + } else if (opts[alias[i]] !== undefined) { + value = opts[alias[i]]; + } + + result[i] = value; + } + + return result; +}; diff --git a/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/license b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/license new file mode 100644 index 0000000..e7af2f7 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/license @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/package.json b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/package.json new file mode 100644 index 0000000..391e6c2 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/package.json @@ -0,0 +1,108 @@ +{ + "_from": "execa@^0.8.0", + "_id": "execa@0.8.0", + "_inBundle": false, + "_integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=", + "_location": "/clipboardy/execa", + "_phantomChildren": {}, + "_requested": { + "type": "range", + "registry": true, + "raw": "execa@^0.8.0", + "name": "execa", + "escapedName": "execa", + "rawSpec": "^0.8.0", + "saveSpec": null, + "fetchSpec": "^0.8.0" + }, + "_requiredBy": [ + "/clipboardy" + ], + "_resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", + "_shasum": "d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da", + "_spec": "execa@^0.8.0", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/clipboardy", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/execa/issues" + }, + "bundleDependencies": false, + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "deprecated": false, + "description": "A better `child_process`", + "devDependencies": { + "ava": "*", + "cat-names": "^1.0.2", + "coveralls": "^2.11.9", + "delay": "^2.0.0", + "is-running": "^2.0.0", + "nyc": "^11.0.2", + "tempfile": "^2.0.0", + "xo": "*" + }, + "engines": { + "node": ">=4" + }, + "files": [ + "index.js", + "lib" + ], + "homepage": "https://github.com/sindresorhus/execa#readme", + "keywords": [ + "exec", + "child", + "process", + "execute", + "fork", + "execfile", + "spawn", + "file", + "shell", + "bin", + "binary", + "binaries", + "npm", + "path", + "local" + ], + "license": "MIT", + "maintainers": [ + { + "name": "James Talmage", + "email": "james@talmage.io", + "url": "github.com/jamestalmage" + } + ], + "name": "execa", + "nyc": { + "reporter": [ + "text", + "lcov" + ], + "exclude": [ + "**/fixtures/**", + "**/test.js", + "**/test/**" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/execa.git" + }, + "scripts": { + "test": "xo && nyc ava" + }, + "version": "0.8.0" +} diff --git a/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/readme.md b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/readme.md new file mode 100644 index 0000000..18c808a --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/node_modules/execa/readme.md @@ -0,0 +1,279 @@ +# execa [![Build Status: Linux](https://travis-ci.org/sindresorhus/execa.svg?branch=master)](https://travis-ci.org/sindresorhus/execa) [![Build status: Windows](https://ci.appveyor.com/api/projects/status/x5ajamxtjtt93cqv/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/execa/branch/master) [![Coverage Status](https://coveralls.io/repos/github/sindresorhus/execa/badge.svg?branch=master)](https://coveralls.io/github/sindresorhus/execa?branch=master) + +> A better [`child_process`](https://nodejs.org/api/child_process.html) + + +## Why + +- Promise interface. +- [Strips EOF](https://github.com/sindresorhus/strip-eof) from the output so you don't have to `stdout.trim()`. +- Supports [shebang](https://en.wikipedia.org/wiki/Shebang_(Unix)) binaries cross-platform. +- [Improved Windows support.](https://github.com/IndigoUnited/node-cross-spawn#why) +- Higher max buffer. 10 MB instead of 200 KB. +- [Executes locally installed binaries by name.](#preferlocal) +- [Cleans up spawned processes when the parent process dies.](#cleanup) + + +## Install + +``` +$ npm install --save execa +``` + + +## Usage + +```js +const execa = require('execa'); + +execa('echo', ['unicorns']).then(result => { + console.log(result.stdout); + //=> 'unicorns' +}); + +// pipe the child process stdout to the current stdout +execa('echo', ['unicorns']).stdout.pipe(process.stdout); + +execa.shell('echo unicorns').then(result => { + console.log(result.stdout); + //=> 'unicorns' +}); + +// example of catching an error +execa.shell('exit 3').catch(error => { + console.log(error); + /* + { + message: 'Command failed: /bin/sh -c exit 3' + killed: false, + code: 3, + signal: null, + cmd: '/bin/sh -c exit 3', + stdout: '', + stderr: '', + timedOut: false + } + */ +}); +``` + + +## API + +### execa(file, [arguments], [options]) + +Execute a file. + +Think of this as a mix of `child_process.execFile` and `child_process.spawn`. + +Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess), which is enhanced to also be a `Promise` for a result `Object` with `stdout` and `stderr` properties. + +### execa.stdout(file, [arguments], [options]) + +Same as `execa()`, but returns only `stdout`. + +### execa.stderr(file, [arguments], [options]) + +Same as `execa()`, but returns only `stderr`. + +### execa.shell(command, [options]) + +Execute a command through the system shell. Prefer `execa()` whenever possible, as it's both faster and safer. + +Returns a [`child_process` instance](https://nodejs.org/api/child_process.html#child_process_class_childprocess). + +The `child_process` instance is enhanced to also be promise for a result object with `stdout` and `stderr` properties. + +### execa.sync(file, [arguments], [options]) + +Execute a file synchronously. + +Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options). + +This method throws an `Error` if the command fails. + +### execa.shellSync(file, [options]) + +Execute a command synchronously through the system shell. + +Returns the same result object as [`child_process.spawnSync`](https://nodejs.org/api/child_process.html#child_process_child_process_spawnsync_command_args_options). + +### options + +Type: `Object` + +#### cwd + +Type: `string`
+Default: `process.cwd()` + +Current working directory of the child process. + +#### env + +Type: `Object`
+Default: `process.env` + +Environment key-value pairs. Extends automatically from `process.env`. Set `extendEnv` to `false` if you don't want this. + +#### extendEnv + +Type: `boolean`
+Default: `true` + +Set to `false` if you don't want to extend the environment variables when providing the `env` property. + +#### argv0 + +Type: `string` + +Explicitly set the value of `argv[0]` sent to the child process. This will be set to `command` or `file` if not specified. + +#### stdio + +Type: `Array` `string`
+Default: `pipe` + +Child's [stdio](https://nodejs.org/api/child_process.html#child_process_options_stdio) configuration. + +#### detached + +Type: `boolean` + +Prepare child to run independently of its parent process. Specific behavior [depends on the platform](https://nodejs.org/api/child_process.html#child_process_options_detached). + +#### uid + +Type: `number` + +Sets the user identity of the process. + +#### gid + +Type: `number` + +Sets the group identity of the process. + +#### shell + +Type: `boolean` `string`
+Default: `false` + +If `true`, runs `command` inside of a shell. Uses `/bin/sh` on UNIX and `cmd.exe` on Windows. A different shell can be specified as a string. The shell should understand the `-c` switch on UNIX or `/d /s /c` on Windows. + +#### stripEof + +Type: `boolean`
+Default: `true` + +[Strip EOF](https://github.com/sindresorhus/strip-eof) (last newline) from the output. + +#### preferLocal + +Type: `boolean`
+Default: `true` + +Prefer locally installed binaries when looking for a binary to execute.
+If you `$ npm install foo`, you can then `execa('foo')`. + +#### localDir + +Type: `string`
+Default: `process.cwd()` + +Preferred path to find locally installed binaries in (use with `preferLocal`). + +#### input + +Type: `string` `Buffer` `stream.Readable` + +Write some input to the `stdin` of your binary.
+Streams are not allowed when using the synchronous methods. + +#### reject + +Type: `boolean`
+Default: `true` + +Setting this to `false` resolves the promise with the error instead of rejecting it. + +#### cleanup + +Type: `boolean`
+Default: `true` + +Keep track of the spawned process and `kill` it when the parent process exits. + +#### encoding + +Type: `string`
+Default: `utf8` + +Specify the character encoding used to decode the `stdout` and `stderr` output. + +#### timeout + +Type: `number`
+Default: `0` + +If timeout is greater than `0`, the parent will send the signal identified by the `killSignal` property (the default is `SIGTERM`) if the child runs longer than timeout milliseconds. + +#### maxBuffer + +Type: `number`
+Default: `10000000` (10MB) + +Largest amount of data in bytes allowed on `stdout` or `stderr`. + +#### killSignal + +Type: `string` `number`
+Default: `SIGTERM` + +Signal value to be used when the spawned process will be killed. + +#### stdin + +Type: `string` `number` `Stream` `undefined` `null`
+Default: `pipe` + +Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio). + +#### stdout + +Type: `string` `number` `Stream` `undefined` `null`
+Default: `pipe` + +Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio). + +#### stderr + +Type: `string` `number` `Stream` `undefined` `null`
+Default: `pipe` + +Same options as [`stdio`](https://nodejs.org/dist/latest-v6.x/docs/api/child_process.html#child_process_options_stdio). + + +## Tips + +### Save and pipe output from a child process + +Let's say you want to show the output of a child process in real-time while also saving it to a variable. + +```js +const execa = require('execa'); +const getStream = require('get-stream'); + +const stream = execa('echo', ['foo']).stdout; + +stream.pipe(process.stdout); + +getStream(stream).then(value => { + console.log('child output:', value); +}); +``` + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/tic-tac-toe-app/node_modules/clipboardy/package.json b/tic-tac-toe-app/node_modules/clipboardy/package.json new file mode 100644 index 0000000..fa55b45 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/package.json @@ -0,0 +1,84 @@ +{ + "_from": "clipboardy@1.2.3", + "_id": "clipboardy@1.2.3", + "_inBundle": false, + "_integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==", + "_location": "/clipboardy", + "_phantomChildren": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.3", + "strip-eof": "1.0.0" + }, + "_requested": { + "type": "version", + "registry": true, + "raw": "clipboardy@1.2.3", + "name": "clipboardy", + "escapedName": "clipboardy", + "rawSpec": "1.2.3", + "saveSpec": null, + "fetchSpec": "1.2.3" + }, + "_requiredBy": [ + "/serve" + ], + "_resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz", + "_shasum": "0526361bf78724c1f20be248d428e365433c07ef", + "_spec": "clipboardy@1.2.3", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/serve", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "sindresorhus.com" + }, + "bugs": { + "url": "https://github.com/sindresorhus/clipboardy/issues" + }, + "bundleDependencies": false, + "dependencies": { + "arch": "^2.1.0", + "execa": "^0.8.0" + }, + "deprecated": false, + "description": "Access the system clipboard (copy/paste)", + "devDependencies": { + "ava": "*", + "xo": "*" + }, + "engines": { + "node": ">=4" + }, + "files": [ + "index.js", + "lib", + "fallbacks" + ], + "homepage": "https://github.com/sindresorhus/clipboardy#readme", + "keywords": [ + "clipboard", + "copy", + "paste", + "copy-paste", + "pasteboard", + "read", + "write", + "pbcopy", + "clip", + "xclip", + "xsel" + ], + "license": "MIT", + "name": "clipboardy", + "repository": { + "type": "git", + "url": "git+https://github.com/sindresorhus/clipboardy.git" + }, + "scripts": { + "test": "xo && ava" + }, + "version": "1.2.3" +} diff --git a/tic-tac-toe-app/node_modules/clipboardy/readme.md b/tic-tac-toe-app/node_modules/clipboardy/readme.md new file mode 100644 index 0000000..1c54978 --- /dev/null +++ b/tic-tac-toe-app/node_modules/clipboardy/readme.md @@ -0,0 +1,64 @@ +# clipboardy [![Build Status: macOS & Linux](https://travis-ci.org/sindresorhus/clipboardy.svg?branch=master)](https://travis-ci.org/sindresorhus/clipboardy) [![Build status: Windows](https://ci.appveyor.com/api/projects/status/gflt3gjn1ia0a3vo/branch/master?svg=true)](https://ci.appveyor.com/project/sindresorhus/clipboardy/branch/master) + +> Access the system clipboard (copy/paste) + +Cross-platform. Supports: macOS, Windows, Linux, OpenBSD, FreeBSD, Android with [Termux](https://termux.com/). + + +## Install + +``` +$ npm install clipboardy +``` + + +## Usage + +```js +const clipboardy = require('clipboardy'); + +clipboardy.writeSync('🦄'); + +clipboardy.readSync(); +//=> '🦄' +``` + + +## API + +### clipboardy + +#### .write(input) + +Write (copy) to the clipboard asynchronously. Returns a `Promise`. + +##### input + +Type: `string` + +#### .read() + +Read (paste) from the clipboard asynchronously. Returns a `Promise`. + +#### .writeSync(input) + +Write (copy) to the clipboard synchronously. + +##### input + +Type: `string` + +#### .readSync() + +Read (paste) from the clipboard synchronously. + + +## Related + +- [clipboard-cli](https://github.com/sindresorhus/clipboard-cli) - CLI for this module +- [copy-text-to-clipboard](https://github.com/sindresorhus/copy-text-to-clipboard) - Copy text to the clipboard in the browser + + +## License + +MIT © [Sindre Sorhus](https://sindresorhus.com) diff --git a/tic-tac-toe-app/node_modules/color-name/.eslintrc.json b/tic-tac-toe-app/node_modules/color-name/.eslintrc.json new file mode 100644 index 0000000..c50c250 --- /dev/null +++ b/tic-tac-toe-app/node_modules/color-name/.eslintrc.json @@ -0,0 +1,43 @@ +{ + "env": { + "browser": true, + "node": true, + "commonjs": true, + "es6": true + }, + "extends": "eslint:recommended", + "rules": { + "strict": 2, + "indent": 0, + "linebreak-style": 0, + "quotes": 0, + "semi": 0, + "no-cond-assign": 1, + "no-constant-condition": 1, + "no-duplicate-case": 1, + "no-empty": 1, + "no-ex-assign": 1, + "no-extra-boolean-cast": 1, + "no-extra-semi": 1, + "no-fallthrough": 1, + "no-func-assign": 1, + "no-global-assign": 1, + "no-implicit-globals": 2, + "no-inner-declarations": ["error", "functions"], + "no-irregular-whitespace": 2, + "no-loop-func": 1, + "no-multi-str": 1, + "no-mixed-spaces-and-tabs": 1, + "no-proto": 1, + "no-sequences": 1, + "no-throw-literal": 1, + "no-unmodified-loop-condition": 1, + "no-useless-call": 1, + "no-void": 1, + "no-with": 2, + "wrap-iife": 1, + "no-redeclare": 1, + "no-unused-vars": ["error", { "vars": "all", "args": "none" }], + "no-sparse-arrays": 1 + } +} diff --git a/tic-tac-toe-app/node_modules/color-name/.npmignore b/tic-tac-toe-app/node_modules/color-name/.npmignore new file mode 100644 index 0000000..f9f2816 --- /dev/null +++ b/tic-tac-toe-app/node_modules/color-name/.npmignore @@ -0,0 +1,107 @@ +//this will affect all the git repos +git config --global core.excludesfile ~/.gitignore + + +//update files since .ignore won't if already tracked +git rm --cached + +# Compiled source # +################### +*.com +*.class +*.dll +*.exe +*.o +*.so + +# Packages # +############ +# it's better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.zip + +# Logs and databases # +###################### +*.log +*.sql +*.sqlite + +# OS generated files # +###################### +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +# Icon? +ehthumbs.db +Thumbs.db +.cache +.project +.settings +.tmproj +*.esproj +nbproject + +# Numerous always-ignore extensions # +##################################### +*.diff +*.err +*.orig +*.rej +*.swn +*.swo +*.swp +*.vi +*~ +*.sass-cache +*.grunt +*.tmp + +# Dreamweaver added files # +########################### +_notes +dwsync.xml + +# Komodo # +########################### +*.komodoproject +.komodotools + +# Node # +##################### +node_modules + +# Bower # +##################### +bower_components + +# Folders to ignore # +##################### +.hg +.svn +.CVS +intermediate +publish +.idea +.graphics +_test +_archive +uploads +tmp + +# Vim files to ignore # +####################### +.VimballRecord +.netrwhist + +bundle.* + +_demo \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/color-name/LICENSE b/tic-tac-toe-app/node_modules/color-name/LICENSE new file mode 100644 index 0000000..c6b1001 --- /dev/null +++ b/tic-tac-toe-app/node_modules/color-name/LICENSE @@ -0,0 +1,8 @@ +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/tic-tac-toe-app/node_modules/color-name/README.md b/tic-tac-toe-app/node_modules/color-name/README.md new file mode 100644 index 0000000..932b979 --- /dev/null +++ b/tic-tac-toe-app/node_modules/color-name/README.md @@ -0,0 +1,11 @@ +A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors. + +[![NPM](https://nodei.co/npm/color-name.png?mini=true)](https://nodei.co/npm/color-name/) + + +```js +var colors = require('color-name'); +colors.red //[255,0,0] +``` + +
diff --git a/tic-tac-toe-app/node_modules/color-name/index.js b/tic-tac-toe-app/node_modules/color-name/index.js new file mode 100644 index 0000000..b7c198a --- /dev/null +++ b/tic-tac-toe-app/node_modules/color-name/index.js @@ -0,0 +1,152 @@ +'use strict' + +module.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] +}; diff --git a/tic-tac-toe-app/node_modules/color-name/package.json b/tic-tac-toe-app/node_modules/color-name/package.json new file mode 100644 index 0000000..7641657 --- /dev/null +++ b/tic-tac-toe-app/node_modules/color-name/package.json @@ -0,0 +1,53 @@ +{ + "_from": "color-name@1.1.3", + "_id": "color-name@1.1.3", + "_inBundle": false, + "_integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "_location": "/color-name", + "_phantomChildren": {}, + "_requested": { + "type": "version", + "registry": true, + "raw": "color-name@1.1.3", + "name": "color-name", + "escapedName": "color-name", + "rawSpec": "1.1.3", + "saveSpec": null, + "fetchSpec": "1.1.3" + }, + "_requiredBy": [ + "/color-convert" + ], + "_resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "_shasum": "a7d0558bd89c42f795dd42328f740831ca53bc25", + "_spec": "color-name@1.1.3", + "_where": "/home/ec2-user/environment/problem-set-8_1/tic-tac-toe-app/node_modules/color-convert", + "author": { + "name": "DY", + "email": "dfcreative@gmail.com" + }, + "bugs": { + "url": "https://github.com/dfcreative/color-name/issues" + }, + "bundleDependencies": false, + "deprecated": false, + "description": "A list of color names and its values", + "homepage": "https://github.com/dfcreative/color-name", + "keywords": [ + "color-name", + "color", + "color-keyword", + "keyword" + ], + "license": "MIT", + "main": "index.js", + "name": "color-name", + "repository": { + "type": "git", + "url": "git+ssh://git@github.com/dfcreative/color-name.git" + }, + "scripts": { + "test": "node test.js" + }, + "version": "1.1.3" +} diff --git a/tic-tac-toe-app/node_modules/color-name/test.js b/tic-tac-toe-app/node_modules/color-name/test.js new file mode 100644 index 0000000..6e6bf30 --- /dev/null +++ b/tic-tac-toe-app/node_modules/color-name/test.js @@ -0,0 +1,7 @@ +'use strict' + +var names = require('./'); +var assert = require('assert'); + +assert.deepEqual(names.red, [255,0,0]); +assert.deepEqual(names.aliceblue, [240,248,255]); diff --git a/tic-tac-toe-app/node_modules/commander/CHANGELOG.md b/tic-tac-toe-app/node_modules/commander/CHANGELOG.md new file mode 100644 index 0000000..7dce779 --- /dev/null +++ b/tic-tac-toe-app/node_modules/commander/CHANGELOG.md @@ -0,0 +1,419 @@ +2.20.3 / 2019-10-11 +================== + + * Support Node.js 0.10 (Revert #1059) + * Ran "npm unpublish commander@2.20.2". There is no 2.20.2. + +2.20.1 / 2019-09-29 +================== + + * Improve executable subcommand tracking + * Update dev dependencies + +2.20.0 / 2019-04-02 +================== + + * fix: resolve symbolic links completely when hunting for subcommands (#935) + * Update index.d.ts (#930) + * Update Readme.md (#924) + * Remove --save option as it isn't required anymore (#918) + * Add link to the license file (#900) + * Added example of receiving args from options (#858) + * Added missing semicolon (#882) + * Add extension to .eslintrc (#876) + +2.19.0 / 2018-10-02 +================== + + * Removed newline after Options and Commands headers (#864) + * Bugfix - Error output (#862) + * Fix to change default value to string (#856) + +2.18.0 / 2018-09-07 +================== + + * Standardize help output (#853) + * chmod 644 travis.yml (#851) + * add support for execute typescript subcommand via ts-node (#849) + +2.17.1 / 2018-08-07 +================== + + * Fix bug in command emit (#844) + +2.17.0 / 2018-08-03 +================== + + * fixed newline output after help information (#833) + * Fix to emit the action even without command (#778) + * npm update (#823) + +2.16.0 / 2018-06-29 +================== + + * Remove Makefile and `test/run` (#821) + * Make 'npm test' run on Windows (#820) + * Add badge to display install size (#807) + * chore: cache node_modules (#814) + * chore: remove Node.js 4 (EOL), add Node.js 10 (#813) + * fixed typo in readme (#812) + * Fix types (#804) + * Update eslint to resolve vulnerabilities in lodash (#799) + * updated readme with custom event listeners. (#791) + * fix tests (#794) + +2.15.0 / 2018-03-07 +================== + + * Update downloads badge to point to graph of downloads over time instead of duplicating link to npm + * Arguments description + +2.14.1 / 2018-02-07 +================== + + * Fix typing of help function + +2.14.0 / 2018-02-05 +================== + + * only register the option:version event once + * Fixes issue #727: Passing empty string for option on command is set to undefined + * enable eqeqeq rule + * resolves #754 add linter configuration to project + * resolves #560 respect custom name for version option + * document how to override the version flag + * document using options per command + +2.13.0 / 2018-01-09 +================== + + * Do not print default for --no- + * remove trailing spaces in command help + * Update CI's Node.js to LTS and latest version + * typedefs: Command and Option types added to commander namespace + +2.12.2 / 2017-11-28 +================== + + * fix: typings are not shipped + +2.12.1 / 2017-11-23 +================== + + * Move @types/node to dev dependency + +2.12.0 / 2017-11-22 +================== + + * add attributeName() method to Option objects + * Documentation updated for options with --no prefix + * typings: `outputHelp` takes a string as the first parameter + * typings: use overloads + * feat(typings): update to match js api + * Print default value in option help + * Fix translation error + * Fail when using same command and alias (#491) + * feat(typings): add help callback + * fix bug when description is add after command with options (#662) + * Format js code + * Rename History.md to CHANGELOG.md (#668) + * feat(typings): add typings to support TypeScript (#646) + * use current node + +2.11.0 / 2017-07-03 +================== + + * Fix help section order and padding (#652) + * feature: support for signals to subcommands (#632) + * Fixed #37, --help should not display first (#447) + * Fix translation errors. (#570) + * Add package-lock.json + * Remove engines + * Upgrade package version + * Prefix events to prevent conflicts between commands and options (#494) + * Removing dependency on graceful-readlink + * Support setting name in #name function and make it chainable + * Add .vscode directory to .gitignore (Visual Studio Code metadata) + * Updated link to ruby commander in readme files + +2.10.0 / 2017-06-19 +================== + + * Update .travis.yml. drop support for older node.js versions. + * Fix require arguments in README.md + * On SemVer you do not start from 0.0.1 + * Add missing semi colon in readme + * Add save param to npm install + * node v6 travis test + * Update Readme_zh-CN.md + * Allow literal '--' to be passed-through as an argument + * Test subcommand alias help + * link build badge to master branch + * Support the alias of Git style sub-command + * added keyword commander for better search result on npm + * Fix Sub-Subcommands + * test node.js stable + * Fixes TypeError when a command has an option called `--description` + * Update README.md to make it beginner friendly and elaborate on the difference between angled and square brackets. + * Add chinese Readme file + +2.9.0 / 2015-10-13 +================== + + * Add option `isDefault` to set default subcommand #415 @Qix- + * Add callback to allow filtering or post-processing of help text #434 @djulien + * Fix `undefined` text in help information close #414 #416 @zhiyelee + +2.8.1 / 2015-04-22 +================== + + * Back out `support multiline description` Close #396 #397 + +2.8.0 / 2015-04-07 +================== + + * Add `process.execArg` support, execution args like `--harmony` will be passed to sub-commands #387 @DigitalIO @zhiyelee + * Fix bug in Git-style sub-commands #372 @zhiyelee + * Allow commands to be hidden from help #383 @tonylukasavage + * When git-style sub-commands are in use, yet none are called, display help #382 @claylo + * Add ability to specify arguments syntax for top-level command #258 @rrthomas + * Support multiline descriptions #208 @zxqfox + +2.7.1 / 2015-03-11 +================== + + * Revert #347 (fix collisions when option and first arg have same name) which causes a bug in #367. + +2.7.0 / 2015-03-09 +================== + + * Fix git-style bug when installed globally. Close #335 #349 @zhiyelee + * Fix collisions when option and first arg have same name. Close #346 #347 @tonylukasavage + * Add support for camelCase on `opts()`. Close #353 @nkzawa + * Add node.js 0.12 and io.js to travis.yml + * Allow RegEx options. #337 @palanik + * Fixes exit code when sub-command failing. Close #260 #332 @pirelenito + * git-style `bin` files in $PATH make sense. Close #196 #327 @zhiyelee + +2.6.0 / 2014-12-30 +================== + + * added `Command#allowUnknownOption` method. Close #138 #318 @doozr @zhiyelee + * Add application description to the help msg. Close #112 @dalssoft + +2.5.1 / 2014-12-15 +================== + + * fixed two bugs incurred by variadic arguments. Close #291 @Quentin01 #302 @zhiyelee + +2.5.0 / 2014-10-24 +================== + + * add support for variadic arguments. Closes #277 @whitlockjc + +2.4.0 / 2014-10-17 +================== + + * fixed a bug on executing the coercion function of subcommands option. Closes #270 + * added `Command.prototype.name` to retrieve command name. Closes #264 #266 @tonylukasavage + * added `Command.prototype.opts` to retrieve all the options as a simple object of key-value pairs. Closes #262 @tonylukasavage + * fixed a bug on subcommand name. Closes #248 @jonathandelgado + * fixed function normalize doesn’t honor option terminator. Closes #216 @abbr + +2.3.0 / 2014-07-16 +================== + + * add command alias'. Closes PR #210 + * fix: Typos. Closes #99 + * fix: Unused fs module. Closes #217 + +2.2.0 / 2014-03-29 +================== + + * add passing of previous option value + * fix: support subcommands on windows. Closes #142 + * Now the defaultValue passed as the second argument of the coercion function. + +2.1.0 / 2013-11-21 +================== + + * add: allow cflag style option params, unit test, fixes #174 + +2.0.0 / 2013-07-18 +================== + + * remove input methods (.prompt, .confirm, etc) + +1.3.2 / 2013-07-18 +================== + + * add support for sub-commands to co-exist with the original command + +1.3.1 / 2013-07-18 +================== + + * add quick .runningCommand hack so you can opt-out of other logic when running a sub command + +1.3.0 / 2013-07-09 +================== + + * add EACCES error handling + * fix sub-command --help + +1.2.0 / 2013-06-13 +================== + + * allow "-" hyphen as an option argument + * support for RegExp coercion + +1.1.1 / 2012-11-20 +================== + + * add more sub-command padding + * fix .usage() when args are present. Closes #106 + +1.1.0 / 2012-11-16 +================== + + * add git-style executable subcommand support. Closes #94 + +1.0.5 / 2012-10-09 +================== + + * fix `--name` clobbering. Closes #92 + * fix examples/help. Closes #89 + +1.0.4 / 2012-09-03 +================== + + * add `outputHelp()` method. + +1.0.3 / 2012-08-30 +================== + + * remove invalid .version() defaulting + +1.0.2 / 2012-08-24 +================== + + * add `--foo=bar` support [arv] + * fix password on node 0.8.8. Make backward compatible with 0.6 [focusaurus] + +1.0.1 / 2012-08-03 +================== + + * fix issue #56 + * fix tty.setRawMode(mode) was moved to tty.ReadStream#setRawMode() (i.e. process.stdin.setRawMode()) + +1.0.0 / 2012-07-05 +================== + + * add support for optional option descriptions + * add defaulting of `.version()` to package.json's version + +0.6.1 / 2012-06-01 +================== + + * Added: append (yes or no) on confirmation + * Added: allow node.js v0.7.x + +0.6.0 / 2012-04-10 +================== + + * Added `.prompt(obj, callback)` support. Closes #49 + * Added default support to .choose(). Closes #41 + * Fixed the choice example + +0.5.1 / 2011-12-20 +================== + + * Fixed `password()` for recent nodes. Closes #36 + +0.5.0 / 2011-12-04 +================== + + * Added sub-command option support [itay] + +0.4.3 / 2011-12-04 +================== + + * Fixed custom help ordering. Closes #32 + +0.4.2 / 2011-11-24 +================== + + * Added travis support + * Fixed: line-buffered input automatically trimmed. Closes #31 + +0.4.1 / 2011-11-18 +================== + + * Removed listening for "close" on --help + +0.4.0 / 2011-11-15 +================== + + * Added support for `--`. Closes #24 + +0.3.3 / 2011-11-14 +================== + + * Fixed: wait for close event when writing help info [Jerry Hamlet] + +0.3.2 / 2011-11-01 +================== + + * Fixed long flag definitions with values [felixge] + +0.3.1 / 2011-10-31 +================== + + * Changed `--version` short flag to `-V` from `-v` + * Changed `.version()` so it's configurable [felixge] + +0.3.0 / 2011-10-31 +================== + + * Added support for long flags only. Closes #18 + +0.2.1 / 2011-10-24 +================== + + * "node": ">= 0.4.x < 0.7.0". Closes #20 + +0.2.0 / 2011-09-26 +================== + + * Allow for defaults that are not just boolean. Default peassignment only occurs for --no-*, optional, and required arguments. [Jim Isaacs] + +0.1.0 / 2011-08-24 +================== + + * Added support for custom `--help` output + +0.0.5 / 2011-08-18 +================== + + * Changed: when the user enters nothing prompt for password again + * Fixed issue with passwords beginning with numbers [NuckChorris] + +0.0.4 / 2011-08-15 +================== + + * Fixed `Commander#args` + +0.0.3 / 2011-08-15 +================== + + * Added default option value support + +0.0.2 / 2011-08-15 +================== + + * Added mask support to `Command#password(str[, mask], fn)` + * Added `Command#password(str, fn)` + +0.0.1 / 2010-01-03 +================== + + * Initial release diff --git a/tic-tac-toe-app/node_modules/commander/LICENSE b/tic-tac-toe-app/node_modules/commander/LICENSE new file mode 100644 index 0000000..10f997a --- /dev/null +++ b/tic-tac-toe-app/node_modules/commander/LICENSE @@ -0,0 +1,22 @@ +(The MIT License) + +Copyright (c) 2011 TJ Holowaychuk + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/tic-tac-toe-app/node_modules/commander/Readme.md b/tic-tac-toe-app/node_modules/commander/Readme.md new file mode 100644 index 0000000..c846e7a --- /dev/null +++ b/tic-tac-toe-app/node_modules/commander/Readme.md @@ -0,0 +1,428 @@ +# Commander.js + + +[![Build Status](https://api.travis-ci.org/tj/commander.js.svg?branch=master)](http://travis-ci.org/tj/commander.js) +[![NPM Version](http://img.shields.io/npm/v/commander.svg?style=flat)](https://www.npmjs.org/package/commander) +[![NPM Downloads](https://img.shields.io/npm/dm/commander.svg?style=flat)](https://npmcharts.com/compare/commander?minimal=true) +[![Install Size](https://packagephobia.now.sh/badge?p=commander)](https://packagephobia.now.sh/result?p=commander) +[![Join the chat at https://gitter.im/tj/commander.js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tj/commander.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + + The complete solution for [node.js](http://nodejs.org) command-line interfaces, inspired by Ruby's [commander](https://github.com/commander-rb/commander). + [API documentation](http://tj.github.com/commander.js/) + + +## Installation + + $ npm install commander + +## Option parsing + +Options with commander are defined with the `.option()` method, also serving as documentation for the options. The example below parses args and options from `process.argv`, leaving remaining args as the `program.args` array which were not consumed by options. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .version('0.1.0') + .option('-p, --peppers', 'Add peppers') + .option('-P, --pineapple', 'Add pineapple') + .option('-b, --bbq-sauce', 'Add bbq sauce') + .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble') + .parse(process.argv); + +console.log('you ordered a pizza with:'); +if (program.peppers) console.log(' - peppers'); +if (program.pineapple) console.log(' - pineapple'); +if (program.bbqSauce) console.log(' - bbq'); +console.log(' - %s cheese', program.cheese); +``` + +Short flags may be passed as a single arg, for example `-abc` is equivalent to `-a -b -c`. Multi-word options such as "--template-engine" are camel-cased, becoming `program.templateEngine` etc. + +Note that multi-word options starting with `--no` prefix negate the boolean value of the following word. For example, `--no-sauce` sets the value of `program.sauce` to false. + +```js +#!/usr/bin/env node + +/** + * Module dependencies. + */ + +var program = require('commander'); + +program + .option('--no-sauce', 'Remove sauce') + .parse(process.argv); + +console.log('you ordered a pizza'); +if (program.sauce) console.log(' with sauce'); +else console.log(' without sauce'); +``` + +To get string arguments from options you will need to use angle brackets <> for required inputs or square brackets [] for optional inputs. + +e.g. ```.option('-m --myarg [myVar]', 'my super cool description')``` + +Then to access the input if it was passed in. + +e.g. ```var myInput = program.myarg``` + +**NOTE**: If you pass a argument without using brackets the example above will return true and not the value passed in. + + +## Version option + +Calling the `version` implicitly adds the `-V` and `--version` options to the command. +When either of these options is present, the command prints the version number and exits. + + $ ./examples/pizza -V + 0.0.1 + +If you want your program to respond to the `-v` option instead of the `-V` option, simply pass custom flags to the `version` method using the same syntax as the `option` method. + +```js +program + .version('0.0.1', '-v, --version') +``` + +The version flags can be named anything, but the long option is required. + +## Command-specific options + +You can attach options to a command. + +```js +#!/usr/bin/env node + +var program = require('commander'); + +program + .command('rm