From 19954b1e5a82e0f267fbfb3434f12c3271d8359e Mon Sep 17 00:00:00 2001 From: sc-illiakovalenko <55081915+sc-illiakovalenko@users.noreply.github.com> Date: Wed, 23 Dec 2020 09:02:58 +0200 Subject: [PATCH] Migrate TSLint to ESLint (#517) --- .eslintrc | 81 +- docs/data/routes/upgrade-guides/16.0/en.md | 9 + package-lock.json | 1691 +++++++---------- package.json | 20 +- packages/sitecore-jss-angular/.eslintrc | 10 + packages/sitecore-jss-angular/.npmignore | 2 +- .../sitecore-jss-angular/package-lock.json | 787 ++++++++ packages/sitecore-jss-angular/package.json | 4 +- .../src/components/date.directive.spec.ts | 6 +- .../src/components/date.directive.ts | 19 +- .../src/components/file.directive.ts | 18 +- .../components/generic-link.directive.spec.ts | 13 +- .../src/components/generic-link.directive.ts | 16 +- .../src/components/image.directive.spec.ts | 38 +- .../src/components/image.directive.ts | 30 +- .../src/components/link.directive.spec.ts | 5 +- .../src/components/link.directive.ts | 26 +- .../components/missing-component.component.ts | 11 +- .../components/placeholder.component.spec.ts | 215 ++- .../src/components/placeholder.component.ts | 124 +- .../src/components/placeholder.token.ts | 22 +- .../src/components/raw.component.ts | 8 +- .../components/render-component.component.ts | 41 +- .../src/components/render-each.directive.ts | 1 - .../src/components/render-empty.directive.ts | 1 - .../src/components/rendering-field.ts | 7 +- .../src/components/rendering.ts | 12 +- .../src/components/rich-text.directive.ts | 21 +- .../components/router-link.directive.spec.ts | 9 +- .../src/components/router-link.directive.ts | 13 +- .../src/components/text.directive.ts | 22 +- .../src/jss-component-factory.service.ts | 47 +- .../src/layout.service.ts | 22 +- .../sitecore-jss-angular/src/lib.module.ts | 39 +- .../sitecore-jss-angular/src/public_api.ts | 11 +- packages/sitecore-jss-angular/src/test.ts | 5 +- .../src/testData/ee-data.ts | 306 +-- .../src/testData/non-ee-data.ts | 85 +- packages/sitecore-jss-angular/tslint.json | 8 - packages/sitecore-jss-cli/.eslintrc | 6 + packages/sitecore-jss-cli/.npmignore | 3 +- packages/sitecore-jss-cli/package-lock.json | 601 ++++++ packages/sitecore-jss-cli/package.json | 3 +- packages/sitecore-jss-cli/src/cli-shared.ts | 8 +- packages/sitecore-jss-cli/src/cli.global.ts | 6 +- packages/sitecore-jss-cli/src/cli.ts | 8 +- .../src/create/create.source.folder.ts | 2 + .../src/create/create.source.github.ts | 131 +- packages/sitecore-jss-cli/src/create/index.ts | 5 + .../sitecore-jss-cli/src/micro-manifest.ts | 38 +- .../sitecore-jss-cli/src/resolve-package.ts | 2 + .../src/run-package-script.ts | 18 +- .../sitecore-jss-cli/src/scripts/clean.ts | 5 + .../sitecore-jss-cli/src/scripts/create.ts | 28 +- .../src/scripts/deploy.app.ts | 4 + .../src/scripts/deploy.component.ts | 15 +- .../src/scripts/deploy.config.ts | 20 +- .../src/scripts/deploy.files.ts | 22 +- .../src/scripts/deploy.items.ts | 37 +- .../src/scripts/deploy.package.ts | 3 + .../src/scripts/deploy.template.ts | 31 +- .../sitecore-jss-cli/src/scripts/deploy.ts | 6 + .../src/scripts/easter-egg.ts | 4 + .../sitecore-jss-cli/src/scripts/elephant.ts | 3 + .../src/scripts/index.global.ts | 6 +- .../sitecore-jss-cli/src/scripts/index.ts | 10 +- .../sitecore-jss-cli/src/scripts/manifest.ts | 11 +- .../sitecore-jss-cli/src/scripts/package.ts | 8 +- .../sitecore-jss-cli/src/scripts/setup.ts | 5 + packages/sitecore-jss-cli/src/spawn.ts | 11 +- packages/sitecore-jss-dev-tools/.eslintrc | 6 + packages/sitecore-jss-dev-tools/.npmignore | 3 +- .../sitecore-jss-dev-tools/package-lock.json | 616 ++++++ packages/sitecore-jss-dev-tools/package.json | 3 +- .../sitecore-jss-dev-tools/src/bin/deploy.ts | 2 +- packages/sitecore-jss-dev-tools/src/clean.ts | 3 + packages/sitecore-jss-dev-tools/src/deploy.ts | 11 +- .../sitecore-jss-dev-tools/src/digest.test.ts | 10 +- packages/sitecore-jss-dev-tools/src/digest.ts | 10 +- .../DisconnectedLayoutServiceOptions.ts | 2 + .../create-default-disconnected-server.ts | 21 +- .../disconnected-server/default-document.ts | 11 +- .../disconnected-server/dictionary-service.ts | 11 +- .../src/disconnected-server/layout-service.ts | 147 +- .../src/disconnected-server/media-service.ts | 11 +- packages/sitecore-jss-dev-tools/src/index.ts | 17 +- .../src/manifest-manager.ts | 1 + .../src/mergeFs.test.ts | 2 + .../sitecore-jss-dev-tools/src/mergeFs.ts | 22 +- .../src/package-deploy.ts | 251 ++- .../src/package-generate.ts | 8 +- .../src/resolve-scjssconfig.ts | 9 +- .../src/setup/find-app-name.ts | 6 + .../src/setup/jss-config.ts | 1 - .../src/setup/secret-patch.ts | 9 + .../sitecore-jss-dev-tools/src/setup/setup.ts | 145 +- .../src/setup/verify-setup.ts | 21 +- packages/sitecore-jss-forms/.eslintrc | 6 + packages/sitecore-jss-forms/.npmignore | 3 +- packages/sitecore-jss-forms/package-lock.json | 755 ++++++++ packages/sitecore-jss-forms/package.json | 3 +- packages/sitecore-jss-forms/src/FormField.ts | 17 +- .../sitecore-jss-forms/src/FormTracker.ts | 48 +- .../src/JssFormData.test.ts | 150 +- .../sitecore-jss-forms/src/JssFormData.ts | 33 +- .../sitecore-jss-forms/src/SitecoreForm.ts | 1 + packages/sitecore-jss-forms/src/ViewModel.ts | 6 + .../src/getFieldValueFromModel.ts | 7 +- packages/sitecore-jss-forms/src/index.ts | 9 +- .../sitecore-jss-forms/src/serializeForm.ts | 32 +- packages/sitecore-jss-forms/src/submitForm.ts | 35 +- packages/sitecore-jss-manifest/.eslintrc | 7 + packages/sitecore-jss-manifest/.npmignore | 3 +- .../sitecore-jss-manifest/package-lock.json | 733 +++++++ packages/sitecore-jss-manifest/package.json | 3 +- .../src/generator/createIdMapping.ts | 7 +- .../src/generator/dynamicPlaceholders.ts | 2 +- .../src/generator/generate.ts | 23 +- .../src/generator/manifest.babel-shim.ts | 48 +- .../src/generator/manifest.types.ts | 65 +- .../generateContentItem/generateItem.ts | 24 +- .../processNestedContent.ts | 2 +- .../expandReferencedContent.ts | 7 +- .../generateManifest/generateContentItems.ts | 2 +- .../generateManifest/generatePlaceholders.ts | 11 +- .../generateManifest/generateRenderings.ts | 19 +- .../generateManifest/generateRouteItems.ts | 4 +- .../generateManifest/generateTemplates.ts | 11 +- .../pipelines/generateMedia/utils.ts | 40 +- .../checkBlacklistedKeys.ts | 15 +- .../mergePlaceholders.test.ts | 10 +- .../generateRouteItem/pipeline.config.ts | 21 +- .../generateRouteItem/processPlaceholders.ts | 1 - .../processRenderings.test.ts | 2 +- .../generateRouteItem/processRenderings.ts | 106 +- .../src/generator/traversal.ts | 38 +- .../src/generator/utils.ts | 105 +- .../src/generator/validators.ts | 9 +- .../src/testData/components/async.sitecore.ts | 4 +- .../components/component0.sitecore.ts | 8 +- .../components/component1.sitecore.ts | 5 +- .../folder0/component0-0.sitecore.ts | 12 +- .../src/testData/content/contentData.ts | 5 +- .../src/testData/routes/route.ts | 4 +- .../src/testData/routes/routes.sitecore.ts | 4 +- .../sitecore-jss-manifest/src/typings.d.ts | 2 +- packages/sitecore-jss-manifest/src/utils.ts | 19 +- .../.eslintrc | 6 + .../.npmignore | 3 +- .../package-lock.json | 514 ++++- .../package.json | 4 +- .../src/absolutify.ts | 11 +- .../src/config.test.ts | 79 +- .../src/config.ts | 20 +- .../src/editing-middleware.test.ts | 37 +- .../src/editing-middleware.ts | 34 +- .../src/editing-server.ts | 19 +- .../src/html-processors.test.ts | 15 +- .../src/html-processors.ts | 18 +- .../src/index.ts | 19 +- .../src/testData/ee-data.ts | 11 +- .../src/util.ts | 10 +- .../tslint.json | 100 - packages/sitecore-jss-nextjs/.eslintrc | 15 + packages/sitecore-jss-nextjs/.npmignore | 3 +- packages/sitecore-jss-nextjs/global.d.ts | 1 + .../sitecore-jss-nextjs/package-lock.json | 765 +++++++- packages/sitecore-jss-nextjs/package.json | 5 +- .../components/ComponentPropsContext.test.tsx | 39 +- .../src/components/ComponentPropsContext.tsx | 25 +- .../src/components/Link.test.tsx | 16 +- .../src/components/Link.tsx | 38 +- .../src/components/RichText.test.tsx | 7 +- .../src/components/RichText.tsx | 6 +- packages/sitecore-jss-nextjs/src/index.ts | 7 +- .../services/component-props-service.test.ts | 5 + .../src/services/component-props-service.ts | 37 +- .../src/sharedTypes/component-module.ts | 6 +- .../src/testData/ee-data.ts | 5 +- .../src/tests/jsdom-setup.ts | 20 +- .../sitecore-jss-nextjs/src/tests/shim.ts | 2 + packages/sitecore-jss-nextjs/tslint.json | 100 - packages/sitecore-jss-proxy/.eslintrc | 7 + packages/sitecore-jss-proxy/.npmignore | 3 +- packages/sitecore-jss-proxy/package-lock.json | 666 +++++++ packages/sitecore-jss-proxy/package.json | 3 +- .../sitecore-jss-proxy/src/ProxyConfig.ts | 3 +- .../sitecore-jss-proxy/src/RouteUrlParser.ts | 4 +- packages/sitecore-jss-proxy/src/index.test.ts | 3 +- packages/sitecore-jss-proxy/src/index.ts | 89 +- packages/sitecore-jss-proxy/src/util.test.ts | 1 + packages/sitecore-jss-react-forms/.eslintrc | 19 + packages/sitecore-jss-react-forms/.npmignore | 3 +- .../package-lock.json | 908 ++++++++- .../sitecore-jss-react-forms/package.json | 5 +- .../src/FieldProps.ts | 35 +- .../src/ValidationDataModels.ts | 8 +- .../src/components/default-error.tsx | 4 +- .../src/components/field-templates/button.tsx | 5 +- .../field-templates/checkbox-list.tsx | 7 + .../components/field-templates/checkbox.tsx | 6 + .../src/components/field-templates/date.tsx | 8 + .../field-templates/dropdown-list.tsx | 7 +- .../src/components/field-templates/email.tsx | 5 + .../field-validation-errors.tsx | 1 + .../field-templates/file-upload.test.tsx | 27 +- .../field-templates/file-upload.tsx | 46 +- .../src/components/field-templates/label.tsx | 1 + .../components/field-templates/list-box.tsx | 7 +- .../field-templates/multiple-line-text.tsx | 5 + .../src/components/field-templates/number.tsx | 5 + .../components/field-templates/password.tsx | 5 + .../field-templates/radio-button-list.tsx | 7 +- .../components/field-templates/section.tsx | 6 +- .../field-templates/single-line-text.tsx | 5 + .../components/field-templates/telephone.tsx | 5 + .../src/components/field-templates/text.tsx | 6 +- .../src/components/form.tsx | 45 +- .../src/default-field-factory.tsx | 3 + .../src/field-factory.tsx | 6 +- .../sitecore-jss-react-forms/src/index.ts | 11 +- .../src/tests/enzyme-setup.ts | 2 +- .../src/tests/jsdom-setup.ts | 26 +- .../src/tests/shim.ts | 6 +- packages/sitecore-jss-react-forms/tslint.json | 100 - packages/sitecore-jss-react-native/.eslintrc | 19 + .../sitecore-jss-react-native/.eslintrc.json | 12 - packages/sitecore-jss-react-native/.npmignore | 3 +- .../package-lock.json | 705 ++++++- .../sitecore-jss-react-native/package.json | 5 +- .../src/components/Date.test.tsx | 90 +- .../src/components/Date.tsx | 76 +- .../src/components/Image.test.tsx | 24 +- .../src/components/Image.tsx | 67 +- .../src/components/Link.tsx | 172 +- .../src/components/MissingComponent.test.tsx | 35 +- .../src/components/Placeholder.test.tsx | 38 +- .../src/components/Placeholder.tsx | 43 +- .../src/components/PlaceholderCommon.tsx | 57 +- .../src/components/RichText.test.tsx | 10 +- .../src/components/RichText.tsx | 6 +- .../src/components/SitecoreContext.tsx | 6 +- .../src/components/Text.test.tsx | 2 +- .../src/components/Text.tsx | 2 +- .../src/components/sharedTypes.ts | 4 +- .../src/dataConversion.test.ts | 9 +- .../src/dataConversion.ts | 66 +- .../enhancers/withComponentFactory.test.tsx | 110 +- .../src/enhancers/withComponentFactory.tsx | 3 + .../dataConversionTestData/dev-data.ts | 2 - .../sitecore-jss-react-native/tslint.json | 13 - packages/sitecore-jss-react/.eslintrc | 18 + packages/sitecore-jss-react/.npmignore | 3 +- packages/sitecore-jss-react/package-lock.json | 859 ++++++++- packages/sitecore-jss-react/package.json | 5 +- .../src/components/Date.test.tsx | 26 +- .../src/components/Date.tsx | 23 +- .../src/components/File.test.tsx | 1 + .../src/components/File.tsx | 16 +- .../src/components/Image.test.tsx | 18 +- .../src/components/Image.tsx | 64 +- .../src/components/Link.test.tsx | 1 + .../src/components/Link.tsx | 49 +- .../src/components/Placeholder.test.tsx | 26 +- .../src/components/Placeholder.tsx | 34 +- .../src/components/PlaceholderCommon.tsx | 168 +- .../src/components/RichText.test.tsx | 1 + .../src/components/RichText.tsx | 34 +- .../src/components/SitecoreContext.test.tsx | 18 +- .../src/components/SitecoreContext.tsx | 28 +- .../src/components/Text.test.tsx | 7 +- .../src/components/Text.tsx | 19 +- .../src/components/VisitorIdentification.tsx | 2 +- .../src/enhancers/withComponentFactory.tsx | 9 +- .../enhancers/withExperienceEditorChromes.tsx | 11 +- .../src/enhancers/withPlaceholder.tsx | 54 +- .../enhancers/withSitecoreContext.test.tsx | 68 +- .../src/enhancers/withSitecoreContext.tsx | 36 +- packages/sitecore-jss-react/src/index.ts | 6 +- .../src/testData/ee-data.ts | 5 +- .../src/tests/jsdom-setup.ts | 19 +- packages/sitecore-jss-react/src/tests/shim.ts | 2 + packages/sitecore-jss-react/src/utils.ts | 19 +- packages/sitecore-jss-react/tslint.json | 100 - .../sitecore-jss-rendering-host/.eslintrc | 7 + .../sitecore-jss-rendering-host/.npmignore | 3 +- .../package-lock.json | 605 ++++++ .../sitecore-jss-rendering-host/package.json | 3 +- .../src/defaultAppInvocationInfoResolver.ts | 6 +- .../src/devServer.ts | 16 +- .../src/renderingHostServer.ts | 8 + .../src/ssrMiddleware.ts | 25 +- .../sitecore-jss-rendering-host/src/tunnel.ts | 20 +- .../sitecore-jss-rendering-host/tslint.json | 100 - packages/sitecore-jss-tracking/.npmignore | 3 +- .../sitecore-jss-tracking/package-lock.json | 702 +++++++ packages/sitecore-jss-tracking/package.json | 3 +- .../sitecore-jss-tracking/src/dataModels.ts | 10 +- packages/sitecore-jss-tracking/src/index.ts | 2 +- .../src/trackingApi.test.ts | 54 +- .../sitecore-jss-tracking/src/trackingApi.ts | 64 +- .../src/trackingRequestOptions.ts | 2 +- .../sitecore-jss-update-package/.npmignore | 3 +- .../package-lock.json | 642 +++++++ .../sitecore-jss-update-package/package.json | 3 +- .../sitecore-jss-update-package/src/index.ts | 14 +- packages/sitecore-jss-vue/.eslintrc | 7 + packages/sitecore-jss-vue/.npmignore | 3 +- packages/sitecore-jss-vue/package-lock.json | 723 ++++++- packages/sitecore-jss-vue/package.json | 5 +- .../src/components/Date.test.ts | 9 +- .../src/components/File.test.ts | 1 + .../sitecore-jss-vue/src/components/File.ts | 2 +- .../src/components/Image.test.ts | 23 +- .../sitecore-jss-vue/src/components/Image.ts | 13 +- .../src/components/Link.test.ts | 1 + .../sitecore-jss-vue/src/components/Link.ts | 6 +- .../src/components/MissingComponent.test.ts | 1 + .../src/components/Placeholder.test.ts | 15 +- .../src/components/Placeholder.ts | 4 +- .../src/components/PlaceholderCommon.ts | 32 +- .../src/components/RichText.test.ts | 1 + .../src/components/Text.test.ts | 1 + .../src/enhancers/providePlaceholders.ts | 5 + .../plugins/SitecoreJssPlaceholderPlugin.ts | 7 +- packages/sitecore-jss/.eslintrc | 6 + packages/sitecore-jss/.npmignore | 3 +- packages/sitecore-jss/package-lock.json | 635 +++++++ packages/sitecore-jss/package.json | 3 +- .../sitecore-jss/src/data-fetcher.test.ts | 20 +- packages/sitecore-jss/src/data-fetcher.ts | 59 +- packages/sitecore-jss/src/dataApi.test.ts | 104 +- packages/sitecore-jss/src/dataApi.ts | 47 +- packages/sitecore-jss/src/dataModels.ts | 27 +- .../sitecore-jss/src/httpClientInterface.ts | 8 +- packages/sitecore-jss/src/index.ts | 11 +- .../sitecore-jss/src/layout-service.test.ts | 96 +- packages/sitecore-jss/src/layout-service.ts | 86 +- packages/sitecore-jss/src/layoutDataUtils.ts | 38 +- packages/sitecore-jss/src/mediaApi.test.ts | 107 +- packages/sitecore-jss/src/mediaApi.ts | 45 +- packages/sitecore-jss/src/util.test.ts | 6 +- packages/sitecore-jss/src/util.ts | 2 + packages/sitecore-pipelines/.eslintrc | 7 + packages/sitecore-pipelines/.npmignore | 3 +- packages/sitecore-pipelines/package-lock.json | 627 ++++++ packages/sitecore-pipelines/package.json | 3 +- .../src/configLoader.test.ts | 1 + .../sitecore-pipelines/src/configLoader.ts | 19 +- packages/sitecore-pipelines/src/index.ts | 2 +- packages/sitecore-pipelines/src/pipeline.ts | 22 +- .../sitecore-pipelines/src/pipelineFactory.ts | 21 +- .../src/pipelinesRegistry.ts | 10 +- packages/sitecore-pipelines/src/utils.ts | 16 +- samples/angular/.eslintignore | 3 + samples/angular/.eslintrc | 81 + samples/angular/angular.json | 11 +- samples/angular/package-lock.json | 1413 +++++++++++++- samples/angular/package.json | 16 +- .../scripts/disconnected-mode-proxy.ts | 1 - .../scripts/generate-component-factory.ts | 3 - samples/angular/scripts/generate-config.ts | 2 +- .../scripts/update-graphql-fragment-data.ts | 4 +- samples/angular/src/app/app.module.ts | 4 +- samples/angular/src/app/app.server.module.ts | 4 +- .../styleguide-specimen.component.ts | 6 +- samples/angular/src/app/jss-graphql.module.ts | 24 +- .../angular/src/app/jss-graphql.service.ts | 46 +- .../app/routing/jss-route-builder.service.ts | 2 +- .../app/routing/layout/layout.component.ts | 1 + .../angular/src/app/routing/routing.module.ts | 1 + samples/angular/src/graphql-fragment-types.ts | 2 +- samples/angular/src/test.ts | 4 +- samples/angular/src/typings.d.ts | 1 + samples/angular/tslint.json | 134 -- samples/nextjs/.eslintrc | 3 +- .../{.eslintrc.json => .eslintrc} | 33 +- samples/react-native/__tests__/App.js | 10 - .../assets/images.disconnected.js | 6 +- samples/react-native/babel.config.js | 2 + samples/react-native/build/startPlatform.js | 2 +- samples/react-native/index.js | 4 +- samples/react-native/package-lock.json | 674 +++++-- samples/react-native/package.json | 2 +- .../definitions/components/Home.sitecore.js | 22 +- .../Styleguide-FieldUsage-Custom.sitecore.js | 24 +- .../Styleguide-FieldUsage-Image.sitecore.js | 24 +- ...Styleguide-FieldUsage-ItemLink.sitecore.js | 4 +- .../Styleguide-FieldUsage-Link.sitecore.js | 24 +- .../Styleguide-FieldUsage-Number.sitecore.js | 2 +- ...Styleguide-FieldUsage-RichText.sitecore.js | 34 +- .../Styleguide-FieldUsage-Text.sitecore.js | 34 +- .../sitecore/definitions/routes.sitecore.js | 36 +- samples/react-native/src/App.js | 29 +- samples/react-native/src/componentFactory.js | 28 +- .../react-native/src/components/Home/index.js | 64 +- .../src/components/Home/styles.js | 71 +- .../Styleguide-ComponentParams/index.js | 97 +- .../Styleguide-ComponentParams/styles.js | 52 +- .../Styleguide-FIeldUsage-Date/index.js | 115 +- .../Styleguide-FIeldUsage-Date/styles.js | 10 +- .../Styleguide-FieldUsage-Checkbox/index.js | 73 +- .../Styleguide-FieldUsage-Custom/index.js | 51 +- .../Styleguide-FieldUsage-Image/index.js | 81 +- .../Styleguide-FieldUsage-Link/index.js | 109 +- .../Styleguide-FieldUsage-Link/styles.js | 16 +- .../Styleguide-FieldUsage-Number/index.js | 84 +- .../Styleguide-FieldUsage-RichText/index.js | 62 +- .../Styleguide-FieldUsage-Text/index.js | 64 +- .../Styleguide-FieldUsage-Text/styles.js | 10 +- .../Styleguide-Layout-Tabs-Tab/index.js | 21 +- .../Styleguide-Layout-Tabs/index.js | 113 +- .../Styleguide-Layout-Tabs/styles.js | 54 +- .../Styleguide-Multilingual/index.js | 32 +- .../Styleguide-Multilingual/styles.js | 24 +- .../Styleguide-Specimen.js | 37 +- .../components/Styleguide-Specimen/styles.js | 46 +- .../dataService.connected-tunnel.js | 3 +- .../src/dataService/dataService.connected.js | 17 +- .../dataService/dataService.disconnected.js | 14 +- samples/react-native/src/screens/Home.js | 12 +- samples/react-native/src/screens/Route.js | 116 +- .../react-native/src/screens/Styleguide.js | 48 +- samples/react/.eslintrc | 23 +- samples/react/scripts/eject.js | 2 +- samples/react/scripts/scaffold-component.js | 2 +- samples/react/server/server.js | 8 +- samples/react/src/AppRoot.js | 33 +- samples/react/src/RouteHandler.js | 24 +- samples/react/src/lib/GraphQLClientFactory.js | 6 +- samples/react/src/lib/GraphQLData.js | 3 +- samples/sitecore-embedded-jss-app/.eslintrc | 1 + .../src/boot/Root.js | 5 +- samples/vue/package-lock.json | 6 +- samples/vue/server/server.js | 6 +- samples/vue/src/i18n.js | 7 +- samples/vue/src/lib/GraphQLClientFactory.js | 6 +- tslint.json | 80 - 438 files changed, 19903 insertions(+), 5917 deletions(-) create mode 100644 docs/data/routes/upgrade-guides/16.0/en.md create mode 100644 packages/sitecore-jss-angular/.eslintrc delete mode 100644 packages/sitecore-jss-angular/tslint.json create mode 100644 packages/sitecore-jss-cli/.eslintrc create mode 100644 packages/sitecore-jss-dev-tools/.eslintrc create mode 100644 packages/sitecore-jss-forms/.eslintrc create mode 100644 packages/sitecore-jss-manifest/.eslintrc create mode 100644 packages/sitecore-jss-nextjs-editing-host/.eslintrc delete mode 100644 packages/sitecore-jss-nextjs-editing-host/tslint.json create mode 100644 packages/sitecore-jss-nextjs/.eslintrc delete mode 100644 packages/sitecore-jss-nextjs/tslint.json create mode 100644 packages/sitecore-jss-proxy/.eslintrc create mode 100644 packages/sitecore-jss-react-forms/.eslintrc delete mode 100644 packages/sitecore-jss-react-forms/tslint.json create mode 100644 packages/sitecore-jss-react-native/.eslintrc delete mode 100644 packages/sitecore-jss-react-native/.eslintrc.json delete mode 100644 packages/sitecore-jss-react-native/tslint.json create mode 100644 packages/sitecore-jss-react/.eslintrc delete mode 100644 packages/sitecore-jss-react/tslint.json create mode 100644 packages/sitecore-jss-rendering-host/.eslintrc delete mode 100644 packages/sitecore-jss-rendering-host/tslint.json create mode 100644 packages/sitecore-jss-vue/.eslintrc create mode 100644 packages/sitecore-jss/.eslintrc create mode 100644 packages/sitecore-pipelines/.eslintrc create mode 100644 samples/angular/.eslintignore create mode 100644 samples/angular/.eslintrc delete mode 100644 samples/angular/tslint.json rename samples/react-native/{.eslintrc.json => .eslintrc} (50%) delete mode 100644 samples/react-native/__tests__/App.js delete mode 100644 tslint.json diff --git a/.eslintrc b/.eslintrc index 1957d779a7..596bbc45c0 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,31 +1,74 @@ { "root": true, - "parser": "babel-eslint", - "extends": ["airbnb-base", "prettier", "plugin:import/errors", "plugin:import/warnings"], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:jsdoc/recommended", + "prettier", + "prettier/@typescript-eslint" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaFeatures": { + "jsx": true + }, + "ecmaVersion": 2020, + "sourceType": "module" + }, + "plugins": ["@typescript-eslint", "prettier", "jsdoc"], + "env": { + "browser": true, + "node": true, + "es6": true + }, "rules": { + "jsdoc/newline-after-description": "off", + "jsdoc/require-property-description": "off", + "jsdoc/require-param-description": "off", + "jsdoc/require-returns": "off", + "jsdoc/no-undefined-types": "off", + "jsdoc/require-returns-type": "off", "prettier/prettier": "error", - "import/prefer-default-export": "off", - "import/no-extraneous-dependencies": [ + "@typescript-eslint/naming-convention": [ "error", { - "devDependencies": true, - "optionalDependencies": true + "format": ["PascalCase"], + "selector": "typeLike", + "custom": { + "regex": "^I[A-Z]", + "match": false + } } ], - "linebreak-style": ["error", "windows"], - "arrow-body-style": ["warn", "as-needed"], - "arrow-parens": ["error", "always"], - "no-unused-vars": [ + "@typescript-eslint/member-ordering": "error", + "no-use-before-define": "off", + "@typescript-eslint/no-use-before-define": [ "error", - { - "args": "none" - } + { "functions": false, "variables": false } ], - "radix": ["error", "as-needed"], - "prefer-destructuring": "off" - }, - "plugins": ["import", "prettier"], - "settings": { - "import/ignore": ["node_modules", ".png$", ".jpg$"] + "@typescript-eslint/typedef": "error", + "@typescript-eslint/type-annotation-spacing": "error", + "@typescript-eslint/semi": "error", + "@typescript-eslint/no-var-requires": "off", + "no-useless-escape": "off", + "spaced-comment": "error", + "curly": ["error", "multi-line"], + "eol-last": ["error", "always"], + "guard-for-in": "error", + "no-unused-labels": "error", + "no-caller": "error", + "no-bitwise": "error", + "no-multiple-empty-lines": "error", + "no-new-wrappers": "error", + "no-eval": "error", + "dot-notation": "error", + "no-trailing-spaces": "error", + "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true }], + "brace-style": "error", + "quotes": ["error", "single"], + "radix": "error", + "default-case": "error", + "eqeqeq": "error", + "jsx-quotes": ["error", "prefer-double"] } } diff --git a/docs/data/routes/upgrade-guides/16.0/en.md b/docs/data/routes/upgrade-guides/16.0/en.md new file mode 100644 index 0000000000..3268e835e1 --- /dev/null +++ b/docs/data/routes/upgrade-guides/16.0/en.md @@ -0,0 +1,9 @@ +--- +name: "16.0" +routeTemplate: ./data/component-templates/full-page.yml +title: Upgrading to JSS 16.0 +--- + +### Upgrading from JSS 15.0 to JSS 16.0 + +1. Check usages of `any` type (and fix any build/lint errors) as we start to migrate from `any` to `unknown` or more specific types \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c87eee6baf..bc95871d11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -853,6 +853,35 @@ "minimist": "^1.2.0" } }, + "@eslint/eslintrc": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + } + } + }, "@evocateur/libnpmaccess": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz", @@ -2100,12 +2129,40 @@ "glob-to-regexp": "^0.3.0" } }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + } + } + }, "@nodelib/fs.stat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@octokit/auth-token": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz", @@ -2332,10 +2389,10 @@ "@types/istanbul-lib-report": "*" } }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", "dev": true }, "@types/minimatch": { @@ -2377,6 +2434,294 @@ "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, + "@typescript-eslint/eslint-plugin": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.10.0.tgz", + "integrity": "sha512-h6/V46o6aXpKRlarP1AiJEXuCJ7cMQdlpfMDrcllIgX3dFkLwEBTXAoNP98ZoOmqd1xvymMVRAI4e7yVvlzWEg==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.10.0", + "@typescript-eslint/scope-manager": "4.10.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.10.0.tgz", + "integrity": "sha512-opX+7ai1sdWBOIoBgpVJrH5e89ra1KoLrJTz0UtWAa4IekkKmqDosk5r6xqRaNJfCXEfteW4HXQAwMdx+jjEmw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.10.0", + "@typescript-eslint/types": "4.10.0", + "@typescript-eslint/typescript-estree": "4.10.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.10.0.tgz", + "integrity": "sha512-amBvUUGBMadzCW6c/qaZmfr3t9PyevcSWw7hY2FuevdZVp5QPw/K76VSQ5Sw3BxlgYCHZcK6DjIhSZK0PQNsQg==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.10.0", + "@typescript-eslint/types": "4.10.0", + "@typescript-eslint/typescript-estree": "4.10.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.10.0.tgz", + "integrity": "sha512-WAPVw35P+fcnOa8DEic0tQUhoJJsgt+g6DEcz257G7vHFMwmag58EfowdVbiNcdfcV27EFR0tUBVXkDoIvfisQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.10.0", + "@typescript-eslint/visitor-keys": "4.10.0" + } + }, + "@typescript-eslint/types": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.10.0.tgz", + "integrity": "sha512-+dt5w1+Lqyd7wIPMa4XhJxUuE8+YF+vxQ6zxHyhLGHJjHiunPf0wSV8LtQwkpmAsRi1lEOoOIR30FG5S2HS33g==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.10.0.tgz", + "integrity": "sha512-mGK0YRp9TOk6ZqZ98F++bW6X5kMTzCRROJkGXH62d2azhghmq+1LNLylkGe6uGUOQzD452NOAEth5VAF6PDo5g==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.10.0", + "@typescript-eslint/visitor-keys": "4.10.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.10.0.tgz", + "integrity": "sha512-hPyz5qmDMuZWFtHZkjcCpkAKHX8vdu1G3YsCLEd25ryZgnJfj6FQuJ5/O7R+dB1ueszilJmAFMtlU4CA6se3Jg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.10.0", + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + } + } + }, "@zkochan/cmd-shim": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz", @@ -2462,22 +2807,11 @@ "uri-js": "^4.2.2" } }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - }, - "dependencies": { - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - } - } + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true }, "ansi-regex": { "version": "5.0.0", @@ -2586,38 +2920,6 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, - "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -2639,69 +2941,6 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "array.prototype.flat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", - "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "array.prototype.flatmap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.3.tgz", - "integrity": "sha512-OOEk+lkePcg+ODXIpvuU9PAryCikCJyo7GlDG1upleEpQRx6mzL9puEBkozQ5iAx20KV0l3DbyQwqciJtqe5Pg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -2736,9 +2975,9 @@ "dev": true }, "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, "async": { @@ -2780,20 +3019,6 @@ "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", "dev": true }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - } - }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -2986,12 +3211,6 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, "builtins": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", @@ -3208,21 +3427,6 @@ } } }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -3349,6 +3553,12 @@ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, + "comment-parser": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.6.tgz", + "integrity": "sha512-GKNxVA7/iuTnAqGADlTWX4tkhzxZKXp5fLJqKTlQLHkE65XDUKutZ3BHaJC5IGcper2tT3QRD1xr4o3jNpgXXg==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -3416,12 +3626,6 @@ "proto-list": "~1.2.1" } }, - "confusing-browser-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", - "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", - "dev": true - }, "connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -3457,12 +3661,6 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, "conventional-changelog-angular": { "version": "5.0.11", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", @@ -4171,12 +4369,6 @@ "wrappy": "1" } }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, "dir-glob": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", @@ -4296,6 +4488,15 @@ "once": "^1.4.0" } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "env-paths": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", @@ -4397,50 +4598,101 @@ "dev": true }, "eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", + "file-entry-cache": "^6.0.0", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", "is-glob": "^4.0.0", "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", + "levn": "^0.4.1", + "lodash": "^4.17.19", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.3", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, "globals": { "version": "12.4.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", @@ -4449,193 +4701,153 @@ "requires": { "type-fest": "^0.8.1" } - } - } - }, - "eslint-config-airbnb-base": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", - "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.5", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - } - }, - "eslint-config-prettier": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz", - "integrity": "sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - } - }, - "eslint-import-resolver-node": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz", - "integrity": "sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "requires": { - "ms": "2.0.0" + "yallist": "^4.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true - } - } - }, - "eslint-module-utils": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", - "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, "requires": { - "ms": "2.0.0" + "lru-cache": "^6.0.0" } }, - "ms": { + "shebang-command": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz", - "integrity": "sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw==", - "dev": true, - "requires": { - "array-includes": "^3.1.1", - "array.prototype.flat": "^1.2.3", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-module-utils": "^2.6.0", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.1", - "read-pkg-up": "^2.0.0", - "resolve": "^1.17.0", - "tsconfig-paths": "^3.9.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ms": "2.0.0" + "ansi-regex": "^5.0.0" } }, - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" + "has-flag": "^4.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true } } }, - "eslint-plugin-prettier": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", - "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "eslint-config-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", "dev": true, "requires": { - "prettier-linter-helpers": "^1.0.0" + "get-stdin": "^6.0.0" } }, - "eslint-plugin-react": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.21.4.tgz", - "integrity": "sha512-uHeQ8A0hg0ltNDXFu3qSfFqTNPXm1XithH6/SY318UX76CMj7Q599qWpgmMhVQyvhq36pm7qvoN3pb6/3jsTFg==", + "eslint-plugin-jsdoc": { + "version": "30.7.9", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-30.7.9.tgz", + "integrity": "sha512-qMM0fNx7/6OCnIh3jRpIrEBAhTG1THNXXbr3yfJ8yqLrDbzJR98xsstX25xt9GCPlrjNc/bBpTHfJQOvn7nVMA==", "dev": true, "requires": { - "array-includes": "^3.1.1", - "array.prototype.flatmap": "^1.2.3", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "object.entries": "^1.1.2", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.17.0", - "string.prototype.matchall": "^4.0.2" + "comment-parser": "^0.7.6", + "debug": "^4.3.1", + "jsdoctypeparser": "^9.0.0", + "lodash": "^4.17.20", + "regextras": "^0.7.1", + "semver": "^7.3.4", + "spdx-expression-parse": "^3.0.1" }, "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", "dev": true, "requires": { - "esutils": "^2.0.2" + "ms": "2.1.2" } - } - } - }, - "eslint-plugin-react-native": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native/-/eslint-plugin-react-native-3.10.0.tgz", - "integrity": "sha512-4f5+hHYYq5wFhB5eptkPEAR7FfvqbS7AzScUOANfAMZtYw5qgnCxRq45bpfBaQF+iyPMim5Q8pubcpvLv75NAg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.7.4", - "eslint-plugin-react-native-globals": "^0.1.1" - } - }, - "eslint-plugin-react-native-globals": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-globals/-/eslint-plugin-react-native-globals-0.1.2.tgz", - "integrity": "sha512-9aEPf1JEpiTjcFAmmyw8eiIXmcNZOqaZyHO77wgm0/dWfT/oxC1SrIq8ET38pMxHYrcB6Uew+TzUVsBeczF88g==", - "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } }, - "eslint-plugin-vue": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-4.7.1.tgz", - "integrity": "sha512-esETKhVMI7Vdli70Wt4bvAwnZBJeM0pxVX9Yb0wWKxdCJc2EADalVYK/q2FzMw8oKN0wPMdqVCKS8kmR89recA==", + "eslint-plugin-prettier": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.0.tgz", + "integrity": "sha512-tMTwO8iUWlSRZIwS9k7/E4vrTsfvsrcM5p1eftyuqWH25nKsz/o6/54I7jwQ/3zobISyC7wMy9ZsFwgTxOcOpQ==", "dev": true, "requires": { - "vue-eslint-parser": "^2.0.3" + "prettier-linter-helpers": "^1.0.0" } }, "eslint-scope": { @@ -4649,9 +4861,9 @@ } }, "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -4664,14 +4876,14 @@ "dev": true }, "espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, "requires": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" } }, "esprima": { @@ -4973,6 +5185,15 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fastq": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "fb-watchman": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", @@ -5010,22 +5231,13 @@ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", "dev": true, "requires": { - "flat-cache": "^2.0.1" + "flat-cache": "^3.0.4" } }, "fill-range": { @@ -5180,20 +5392,30 @@ } }, "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", "dev": true }, "flush-write-stream": { @@ -6266,9 +6488,9 @@ "dev": true }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -6403,119 +6625,6 @@ } } }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "internal-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", - "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", - "dev": true, - "requires": { - "es-abstract": "^1.17.0-next.1", - "has": "^1.0.3", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -6733,12 +6842,6 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -7265,6 +7368,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, + "jsdoctypeparser": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-9.0.0.tgz", + "integrity": "sha512-jrTA2jJIL6/DAEILBEh2/w9QxCuwmvNXIry39Ay/HVfhE3o2yVV0U44blYkqdHA/OKloJEqvJy0xU+GSdE2SIw==", + "dev": true + }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -7307,15 +7416,6 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -7343,16 +7443,6 @@ "verror": "1.10.0" } }, - "jsx-ast-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.0.0.tgz", - "integrity": "sha512-sPuicm6EPKYI/UnWpOatvg4pI50qaBo4dSOMGUPutmJ26ttedFKXr0It0XXPk4HKnQ/1X0st4eSS2w2jhFk9Ow==", - "dev": true, - "requires": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.1" - } - }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -7401,13 +7491,13 @@ "dev": true }, "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" } }, "lines-and-columns": { @@ -7416,18 +7506,6 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, "locate-path": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", @@ -8444,12 +8522,6 @@ "mime-db": "1.44.0" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -9101,127 +9173,20 @@ "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.0", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.entries": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", - "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5", - "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "object.fromentries": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", - "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", "dev": true, "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" + "es-abstract": "^1.17.0-next.1" }, "dependencies": { "es-abstract": { @@ -9245,6 +9210,15 @@ } } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "octokit-pagination-methods": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", @@ -9269,27 +9243,18 @@ "wrappy": "1" } }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", "dev": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" } }, "options": { @@ -9516,15 +9481,6 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -9567,15 +9523,6 @@ "node-modules-regexp": "^1.0.0" } }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -9583,9 +9530,9 @@ "dev": true }, "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, "prettier": { @@ -9687,17 +9634,6 @@ "read": "1" } }, - "prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, - "requires": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, "proto-list": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", @@ -9841,27 +9777,6 @@ "util-promisify": "^2.1.0" } }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - } - }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -9947,41 +9862,10 @@ "safe-regex": "^1.1.0" } }, - "regexp.prototype.flags": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", - "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "regexpu-core": { @@ -9998,6 +9882,12 @@ "unicode-match-property-value-ecmascript": "^1.2.0" } }, + "regextras": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.7.1.tgz", + "integrity": "sha512-9YXf6xtW+qzQ+hcMQXx95MOvfqXFgsKDZodX3qZB0x2n5Z94ioetIITsBtvJbiOyxa/6s9AtyweBLCdPmPko/w==", + "dev": true + }, "regjsgen": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", @@ -10135,16 +10025,6 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -10157,6 +10037,12 @@ "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -10178,6 +10064,12 @@ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -10326,16 +10218,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "side-channel": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", - "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", - "dev": true, - "requires": { - "es-abstract": "^1.18.0-next.0", - "object-inspect": "^1.8.0" - } - }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", @@ -10349,20 +10231,38 @@ "dev": true }, "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true } } @@ -10760,41 +10660,6 @@ } } }, - "string.prototype.matchall": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", - "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "has-symbols": "^1.0.1", - "internal-slot": "^1.0.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.7", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", - "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-regex": "^1.1.1", - "object-inspect": "^1.8.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.1", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" - } - } - } - }, "string.prototype.trimend": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", @@ -10939,40 +10804,15 @@ } }, "table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", + "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", "dev": true, "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" } }, "tar": { @@ -11297,62 +11137,12 @@ "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", "dev": true }, - "tsconfig-paths": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", - "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", - "dev": true, - "requires": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", - "strip-bom": "^3.0.0" - } - }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "tslint": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.1.tgz", - "integrity": "sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -11369,12 +11159,12 @@ "dev": true }, "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "requires": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" } }, "type-fest": { @@ -11600,9 +11390,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", "dev": true }, "validate-npm-package-license": { @@ -11641,74 +11431,6 @@ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "dev": true }, - "vue-eslint-parser": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz", - "integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==", - "dev": true, - "requires": { - "debug": "^3.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.2", - "esquery": "^1.0.0", - "lodash": "^4.17.4" - }, - "dependencies": { - "acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - } - } - }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -11870,15 +11592,6 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", diff --git a/package.json b/package.json index 20bf30d269..1a39894a08 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "bootstrap-react-dom": "cd ./packages/sitecore-jss-react/node_modules/react-dom && npm link && cd ../../../sitecore-jss-nextjs && npm link react-dom && cd ../sitecore-jss-nextjs-editing-host && npm link react-dom && cd ../../samples/nextjs && npm link react-dom && cd ../react && npm link react-dom", "build-packages": "lerna run build --ignore *-sample*", "build-apps": "lerna run build --scope *-sample*", - "lint-packages": "lerna run lint --scope @sitecore-jss/sitecore-jss-nextjs*", - "lint-apps": "lerna run lint --scope jss-sample-nextjs", + "lint-packages": "lerna run lint --ignore *-sample*", + "lint-apps": "lerna run lint --ignore @sitecore-jss/*", "test-packages": "lerna run test --ignore *-sample*", "test": "lerna run test", "coverage-packages": "lerna run coverage --ignore *-sample*" @@ -23,20 +23,16 @@ "url": "https://github.com/sitecore/jss/issues" }, "devDependencies": { - "babel-eslint": "10.1.0", - "eslint": "^6.6.0", - "eslint-config-airbnb-base": "^13.1.0", - "eslint-config-prettier": "^6.2.0", - "eslint-plugin-import": "^2.14.0", - "eslint-plugin-prettier": "^3.1.0", - "eslint-plugin-react": "^7.11.1", - "eslint-plugin-react-native": "^3.3.0", - "eslint-plugin-vue": "^4.7.1", + "@typescript-eslint/eslint-plugin": "^4.10.0", + "@typescript-eslint/parser": "^4.10.0", + "eslint": "^7.16.0", + "eslint-config-prettier": "^6.15.0", + "eslint-plugin-jsdoc": "^30.7.9", + "eslint-plugin-prettier": "^3.3.0", "lerna": "^3.4.0", "metro": "^0.60.0", "nyc": "^14.1.1", "prettier": "^1.14.3", - "tslint": "^5.11.0", "typescript": "^3.9.6" } } diff --git a/packages/sitecore-jss-angular/.eslintrc b/packages/sitecore-jss-angular/.eslintrc new file mode 100644 index 0000000000..a31607087e --- /dev/null +++ b/packages/sitecore-jss-angular/.eslintrc @@ -0,0 +1,10 @@ +{ + "extends": [ + "plugin:@angular-eslint/recommended", + "../../.eslintrc" + ], + "rules": { + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/explicit-module-boundary-types": "off" + } +} diff --git a/packages/sitecore-jss-angular/.npmignore b/packages/sitecore-jss-angular/.npmignore index 327fdf4bd7..2dc1bc5393 100644 --- a/packages/sitecore-jss-angular/.npmignore +++ b/packages/sitecore-jss-angular/.npmignore @@ -3,6 +3,7 @@ testData coverage sitecore index.test.js +.eslintrc .vscode .npmignore .gitignore @@ -10,7 +11,6 @@ jsconfig.json tsconfig.json ng-package.json karma.conf.js -tslint.json npm-debug* /dist/package.json /dist/README.md diff --git a/packages/sitecore-jss-angular/package-lock.json b/packages/sitecore-jss-angular/package-lock.json index 35cec89a15..9b7843452c 100644 --- a/packages/sitecore-jss-angular/package-lock.json +++ b/packages/sitecore-jss-angular/package-lock.json @@ -4,6 +4,15 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@angular-eslint/eslint-plugin": { + "version": "0.8.0-beta.6", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-0.8.0-beta.6.tgz", + "integrity": "sha512-yXyNSTUA0Nosh1ZI/iJerbwqeakhI495P5O1luxE9Fw7Vcdmb+JdmE++6Ipq2oO7rEyv2rHpci84tqNTE3wr2g==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.3.0" + } + }, "@angular/common": { "version": "10.0.14", "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.0.14.tgz", @@ -405,12 +414,94 @@ "to-fast-properties": "^2.0.0" } }, + "@eslint/eslintrc": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, "@istanbuljs/schema": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", "dev": true }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, "@rollup/plugin-commonjs": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", @@ -486,6 +577,12 @@ "integrity": "sha512-LRJ21f/BO4QNZ3YDaMP0OEurOfE77x8mi8MfEnUsei5IKfmZL0GKl7juhABMdUIJHhVS9OCLotKHfsFNAuJ+DA==", "dev": true }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, "@types/node": { "version": "12.12.26", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.26.tgz", @@ -513,6 +610,88 @@ "@types/node": "*" } }, + "@typescript-eslint/experimental-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.3.0.tgz", + "integrity": "sha512-cmmIK8shn3mxmhpKfzMMywqiEheyfXLV/+yPDnOTvQX/ztngx7Lg/OD26J8gTZfkLKUmaEBxO2jYP3keV7h2OQ==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.3.0", + "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/typescript-estree": "4.3.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.3.0.tgz", + "integrity": "sha512-cTeyP5SCNE8QBRfc+Lgh4Xpzje46kNUhXYfc3pQWmJif92sjrFuHT9hH4rtOkDTo/si9Klw53yIr+djqGZS1ig==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/visitor-keys": "4.3.0" + } + }, + "@typescript-eslint/types": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.3.0.tgz", + "integrity": "sha512-Cx9TpRvlRjOppGsU6Y6KcJnUDOelja2NNCX6AZwtVHRzaJkdytJWMuYiqi8mS35MRNA3cJSwDzXePfmhU6TANw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.3.0.tgz", + "integrity": "sha512-ZAI7xjkl+oFdLV/COEz2tAbQbR3XfgqHEGy0rlUXzfGQic6EBCR4s2+WS3cmTPG69aaZckEucBoTxW9PhzHxxw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.3.0", + "@typescript-eslint/visitor-keys": "4.3.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.3.0.tgz", + "integrity": "sha512-xZxkuR7XLM6RhvLkgv9yYlTcBHnTULzfnw4i6+z2TGBLy9yljAypQaZl9c3zFvy7PNI7fYWyvKYtohyF8au3cw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.3.0", + "eslint-visitor-keys": "^2.0.0" + } + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -529,6 +708,12 @@ "integrity": "sha512-dmKn4pqZ29iQl2Pvze1zTrps2luvls2PBY//neO2WJ0s10B3AxJXshN+Ph7B4GrhfGhHXrl4dnUwyNNXQcnWGQ==", "dev": true }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "acorn-walk": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.0.0.tgz", @@ -620,6 +805,12 @@ "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM=", "dev": true }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", @@ -658,6 +849,12 @@ "util": "^0.12.0" } }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", @@ -974,6 +1171,12 @@ "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", "dev": true }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -1341,6 +1544,28 @@ "sha.js": "^2.4.8" } }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -1603,6 +1828,12 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "deepmerge": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", @@ -1680,6 +1911,24 @@ } } }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", @@ -1889,6 +2138,15 @@ "has-binary2": "~1.0.2" } }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", @@ -1982,18 +2240,239 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "eslint": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, "estree-walker": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz", "integrity": "sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==", "dev": true }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -2028,18 +2507,56 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", "dev": true }, + "fastq": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.0.tgz", + "integrity": "sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "file-entry-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -2080,6 +2597,24 @@ "path-exists": "^4.0.0" } }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "dependencies": { + "flatted": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "dev": true + } + } + }, "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", @@ -2128,6 +2663,12 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -2169,6 +2710,20 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -2338,6 +2893,12 @@ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", "dev": true }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, "image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -2345,6 +2906,22 @@ "dev": true, "optional": true }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -2716,6 +3293,12 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -2923,6 +3506,16 @@ } } }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -2986,6 +3579,15 @@ } } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "magic-string": { "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", @@ -3035,6 +3637,22 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", @@ -3123,6 +3741,12 @@ "dev": true, "optional": true }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -3354,6 +3978,20 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -3399,6 +4037,15 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -3466,12 +4113,24 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, "pbkdf2": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", @@ -4022,12 +4681,24 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -4226,6 +4897,12 @@ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", "dev": true }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, "regexpu-core": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", @@ -4279,12 +4956,24 @@ "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rfdc": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", @@ -4341,6 +5030,12 @@ "source-map-resolve": "^0.6.0" } }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true + }, "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", @@ -4420,6 +5115,21 @@ "safe-buffer": "^5.0.1" } }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -4429,6 +5139,23 @@ "is-arrayish": "^0.3.1" } }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, "socket.io": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", @@ -4789,6 +5516,12 @@ "ansi-regex": "^5.0.0" } }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, "stylehacks": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", @@ -4888,6 +5621,18 @@ "util.promisify": "~1.0.0" } }, + "table": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", + "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + } + }, "terser": { "version": "5.3.3", "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.3.tgz", @@ -4913,6 +5658,12 @@ } } }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -4982,12 +5733,30 @@ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "tty-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, "type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", @@ -5127,6 +5896,12 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -5193,6 +5968,12 @@ "is-typed-array": "^1.1.3" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -5243,6 +6024,12 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yargs": { "version": "15.3.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", diff --git a/packages/sitecore-jss-angular/package.json b/packages/sitecore-jss-angular/package.json index 7dfc1112b6..20cebe30de 100644 --- a/packages/sitecore-jss-angular/package.json +++ b/packages/sitecore-jss-angular/package.json @@ -4,7 +4,7 @@ "description": "", "scripts": { "build": "ng-packagr -p ng-package.json", - "lint": "tslint -p . -c tslint.json \"src/**/*.ts\"", + "lint": "eslint --fix ./src/**/*.ts", "test": "karma start", "test:watch": "karma start --no-single-run --browsers Chrome", "coverage": "npm test" @@ -19,6 +19,7 @@ "url": "https://github.com/sitecore/jss/issues" }, "devDependencies": { + "@angular-eslint/eslint-plugin": "^0.8.0-beta.6", "@angular/common": "~10.0.11", "@angular/compiler": "~10.0.11", "@angular/compiler-cli": "~10.0.11", @@ -29,6 +30,7 @@ "@types/jasmine": "^3.4.1", "@types/node": "^12.7.8", "codelyzer": "^4.5.0", + "eslint": "^7.15.0", "jasmine-core": "^3.5.0", "karma": "^5.1.0", "karma-chrome-launcher": "^3.1.0", diff --git a/packages/sitecore-jss-angular/src/components/date.directive.spec.ts b/packages/sitecore-jss-angular/src/components/date.directive.spec.ts index e74d690951..84dadce095 100644 --- a/packages/sitecore-jss-angular/src/components/date.directive.spec.ts +++ b/packages/sitecore-jss-angular/src/components/date.directive.spec.ts @@ -15,7 +15,9 @@ const defaultFormattedDate = formatDate(testIsoDateValue, testFormat, testLocale @Component({ selector: 'test-date', template: ` - + `, }) class TestComponent { @@ -34,7 +36,7 @@ describe('', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [DateDirective, TestComponent], - providers: [ DatePipe ], + providers: [DatePipe], }); fixture = TestBed.createComponent(TestComponent); diff --git a/packages/sitecore-jss-angular/src/components/date.directive.ts b/packages/sitecore-jss-angular/src/components/date.directive.ts index 10aa7d5351..b6dce7b57a 100644 --- a/packages/sitecore-jss-angular/src/components/date.directive.ts +++ b/packages/sitecore-jss-angular/src/components/date.directive.ts @@ -1,5 +1,13 @@ import { DatePipe } from '@angular/common'; -import { Directive, EmbeddedViewRef, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + EmbeddedViewRef, + Input, + OnChanges, + SimpleChanges, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { TextField } from './rendering-field'; @Directive({ @@ -8,29 +16,24 @@ import { TextField } from './rendering-field'; export class DateDirective implements OnChanges { private viewRef: EmbeddedViewRef; - // tslint:disable-next-line:no-input-rename @Input('scDateFormat') format?: string; - // tslint:disable-next-line:no-input-rename @Input('scDateTimezone') timezone?: string; - // tslint:disable-next-line:no-input-rename @Input('scDateLocale') locale?: string; - // tslint:disable-next-line:no-input-rename @Input('scDateEditable') editable = true; - // tslint:disable-next-line:no-input-rename @Input('scDate') field: TextField; constructor( private viewContainer: ViewContainerRef, private templateRef: TemplateRef, private datePipe: DatePipe - ) { } + ) {} ngOnChanges(changes: SimpleChanges) { - if (changes['field'] || changes['format']) { + if (changes.field || changes.format) { if (!this.viewRef) { this.viewContainer.clear(); this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef); diff --git a/packages/sitecore-jss-angular/src/components/file.directive.ts b/packages/sitecore-jss-angular/src/components/file.directive.ts index 8c91ed8ba7..9ac53b59ab 100644 --- a/packages/sitecore-jss-angular/src/components/file.directive.ts +++ b/packages/sitecore-jss-angular/src/components/file.directive.ts @@ -1,4 +1,12 @@ -import { Directive, EmbeddedViewRef, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + EmbeddedViewRef, + Input, + OnChanges, + SimpleChanges, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { FileField } from './rendering-field'; /** @@ -8,16 +16,12 @@ import { FileField } from './rendering-field'; export class FileDirective implements OnChanges { private viewRef: EmbeddedViewRef; - // tslint:disable-next-line:no-input-rename @Input('scFile') field: FileField; - constructor( - private viewContainer: ViewContainerRef, - private templateRef: TemplateRef, - ) { } + constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef) {} ngOnChanges(changes: SimpleChanges): void { - if (changes['field']) { + if (changes.field) { if (!this.viewRef) { this.viewContainer.clear(); this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef); diff --git a/packages/sitecore-jss-angular/src/components/generic-link.directive.spec.ts b/packages/sitecore-jss-angular/src/components/generic-link.directive.spec.ts index 5cf360ee94..e08c45a8d6 100644 --- a/packages/sitecore-jss-angular/src/components/generic-link.directive.spec.ts +++ b/packages/sitecore-jss-angular/src/components/generic-link.directive.spec.ts @@ -28,7 +28,7 @@ describe('', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [GenericLinkDirective, TestComponent], - imports: [RouterTestingModule] + imports: [RouterTestingModule], }); fixture = TestBed.createComponent(TestComponent); @@ -167,11 +167,12 @@ describe('', () => { }); }); -// tslint:disable-next-line:max-classes-per-file @Component({ selector: 'test-router-link-children', template: ` - hello world + hello world `, }) class TestWithChildrenComponent { @@ -189,7 +190,7 @@ describe('children', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [GenericLinkDirective, TestWithChildrenComponent], - imports: [ RouterTestingModule ] + imports: [RouterTestingModule], }); fixture = TestBed.createComponent(TestWithChildrenComponent); @@ -232,7 +233,7 @@ describe('', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [GenericLinkDirective, TestComponent], - imports: [ RouterTestingModule.withRoutes([{ path: 'lorem', component: TestComponent }])] + imports: [RouterTestingModule.withRoutes([{ path: 'lorem', component: TestComponent }])], }); router = TestBed.get(Router); @@ -265,7 +266,7 @@ describe('', () => { href: 'lorem', text: 'ipsum', }; - const queryParams = { queryParams: { foo: 'bar' } } + const queryParams = { queryParams: { foo: 'bar' } }; comp.field = field; comp.extras = queryParams; fixture.detectChanges(); diff --git a/packages/sitecore-jss-angular/src/components/generic-link.directive.ts b/packages/sitecore-jss-angular/src/components/generic-link.directive.ts index 24baa3f8fc..8b3a971a50 100644 --- a/packages/sitecore-jss-angular/src/components/generic-link.directive.ts +++ b/packages/sitecore-jss-angular/src/components/generic-link.directive.ts @@ -1,21 +1,23 @@ -import { Directive, ElementRef, Input, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + ElementRef, + Input, + Renderer2, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { Router, NavigationExtras } from '@angular/router'; import { LinkDirective } from './link.directive'; import { LinkField } from './rendering-field'; @Directive({ selector: '[scGenericLink]' }) export class GenericLinkDirective extends LinkDirective { - - // tslint:disable-next-line:no-input-rename @Input('scGenericLinkEditable') editable = true; - // tslint:disable-next-line:no-input-rename @Input('scGenericLinkAttrs') attrs: any = {}; - // tslint:disable-next-line:no-input-rename @Input('scGenericLink') field: LinkField; - // tslint:disable-next-line:no-input-rename @Input('scGenericLinkExtras') extras?: NavigationExtras; constructor( @@ -52,7 +54,7 @@ export class GenericLinkDirective extends LinkDirective { } private isAbsoluteUrl(url?: string) { - if (url == null) { + if (url === null) { return false; } if (typeof url !== 'string') { diff --git a/packages/sitecore-jss-angular/src/components/image.directive.spec.ts b/packages/sitecore-jss-angular/src/components/image.directive.spec.ts index ef7be29a64..fd38ad573b 100644 --- a/packages/sitecore-jss-angular/src/components/image.directive.spec.ts +++ b/packages/sitecore-jss-angular/src/components/image.directive.spec.ts @@ -1,4 +1,3 @@ -// tslint:disable:max-classes-per-file import { Component, DebugElement, Input } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; @@ -21,14 +20,24 @@ class TestComponent { @Component({ selector: 'test-image2', template: ` - + `, }) class AnotherTestComponent { @Input() field: any; @Input() editable = true; @Input() params: any = {}; - @Input() imageAttrs: any = { }; + @Input() imageAttrs: any = {}; @Input() mediaUrlPrefix?: RegExp; } @@ -80,7 +89,6 @@ describe('', () => { }); describe('with "value" property value', () => { - it('should render component with "value" properties', () => { const media = { value: { @@ -112,7 +120,6 @@ describe('', () => { }); describe('with "editable" property value', () => { - it('should render wrapper containing experience editor value', () => { const media = { editable: eeImageData, @@ -165,14 +172,14 @@ describe('', () => { }; beforeEach(() => { - fixture2 = TestBed.createComponent(AnotherTestComponent); - de = fixture2.debugElement; - comp2 = fixture2.componentInstance; - fixture2.detectChanges(); - - comp2.params = imageParams; - comp2.imageAttrs = imageAttrs; - fixture2.detectChanges(); + fixture2 = TestBed.createComponent(AnotherTestComponent); + de = fixture2.debugElement; + comp2 = fixture2.componentInstance; + fixture2.detectChanges(); + + comp2.params = imageParams; + comp2.imageAttrs = imageAttrs; + fixture2.detectChanges(); }); it('should render img with addtional props', () => { @@ -274,7 +281,9 @@ describe('', () => { const img = de.nativeElement.getElementsByTagName('img')[0]; const url = img.getAttribute('srcset'); - expect(url).toBe(`${expectedPrefix}assets/img/test0.png?h=100&w=150&mw=100 150w, ${expectedPrefix}assets/img/test0.png?h=100&w=150&mw=300 150w`); + expect(url).toBe( + `${expectedPrefix}assets/img/test0.png?h=100&w=150&mw=100 150w, ${expectedPrefix}assets/img/test0.png?h=100&w=150&mw=300 150w` + ); }; comp2.imageAttrs = { @@ -318,7 +327,6 @@ describe('', () => { }); describe('with "editable" property value but editing disabled', () => { - it('should render component with "value" properties', () => { const media = { editable: eeImageData, diff --git a/packages/sitecore-jss-angular/src/components/image.directive.ts b/packages/sitecore-jss-angular/src/components/image.directive.ts index 79d090f346..6658820892 100644 --- a/packages/sitecore-jss-angular/src/components/image.directive.ts +++ b/packages/sitecore-jss-angular/src/components/image.directive.ts @@ -1,4 +1,13 @@ -import { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + ElementRef, + Input, + OnChanges, + Renderer2, + SimpleChanges, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { mediaApi } from '@sitecore-jss/sitecore-jss'; import { ImageField } from './rendering-field'; @@ -6,10 +15,8 @@ import { ImageField } from './rendering-field'; export class ImageDirective implements OnChanges { private inlineRef: HTMLSpanElement | null = null; - // tslint:disable-next-line:no-input-rename @Input('scImage') field: ImageField | ''; - // tslint:disable-next-line:no-input-rename @Input('scImageEditable') editable = true; /** @@ -19,13 +26,10 @@ export class ImageDirective implements OnChanges { * /-assets/website -> /-/jssmedia/website * /~assets/website -> /~/jssmedia/website */ - // tslint:disable-next-line:no-input-rename @Input('scImageMediaUrlPrefix') mediaUrlPrefix?: RegExp; - // tslint:disable-next-line:no-input-rename @Input('scImageUrlParams') urlParams = {}; - // tslint:disable-next-line:no-input-rename @Input('scImageAttrs') attrs = {}; constructor( @@ -33,10 +37,10 @@ export class ImageDirective implements OnChanges { private templateRef: TemplateRef, private renderer: Renderer2, private elementRef: ElementRef - ) { } + ) {} ngOnChanges(changes: SimpleChanges) { - if (changes['field'] || changes['editable'] || changes['urlParams'] || changes['attrs']) { + if (changes.field || changes.editable || changes.urlParams || changes.attrs) { this.viewContainer.clear(); if (this.inlineRef) { this.inlineRef.remove(); @@ -95,7 +99,7 @@ export class ImageDirective implements OnChanges { ...fieldAttrs, ...parsedAttrs, }; - // tslint:disable-next-line:prefer-const + // eslint-disable-next-line prefer-const let { src, srcSet, ...otherAttrs } = combinedAttrs; if (!src) { return null; @@ -117,17 +121,19 @@ export class ImageDirective implements OnChanges { private renderTemplate(imageProps: any) { const viewRef = this.viewContainer.createEmbeddedView(this.templateRef); viewRef.rootNodes.forEach((node) => { - Object.entries(imageProps).forEach(([key, imgPropVal]: [string, any]) => this.renderer.setAttribute(node, key, imgPropVal)); + Object.entries(imageProps).forEach(([key, imgPropVal]: [string, any]) => + this.renderer.setAttribute(node, key, imgPropVal) + ); }); } - private getElementAttrs(): { [key: string]: any; } { + private getElementAttrs(): { [key: string]: any } { const view = this.templateRef.createEmbeddedView(null); const element: Element = view.rootNodes[0]; if (!element) { return {}; } - const attrs: { [key: string]: any; } = {}; + const attrs: { [key: string]: any } = {}; for (let i = 0; i < element.attributes.length; i++) { const attr = element.attributes.item(i); if (attr) { diff --git a/packages/sitecore-jss-angular/src/components/link.directive.spec.ts b/packages/sitecore-jss-angular/src/components/link.directive.spec.ts index 8c3202d5f5..e1c862bb97 100644 --- a/packages/sitecore-jss-angular/src/components/link.directive.spec.ts +++ b/packages/sitecore-jss-angular/src/components/link.directive.spec.ts @@ -219,11 +219,12 @@ describe('', () => { }); }); -// tslint:disable-next-line:max-classes-per-file @Component({ selector: 'test-link-children', template: ` - hello world + hello world `, }) class TestWithChildrenComponent { diff --git a/packages/sitecore-jss-angular/src/components/link.directive.ts b/packages/sitecore-jss-angular/src/components/link.directive.ts index 3fdc1851a4..7ac641d8a4 100644 --- a/packages/sitecore-jss-angular/src/components/link.directive.ts +++ b/packages/sitecore-jss-angular/src/components/link.directive.ts @@ -1,17 +1,23 @@ -import { Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + ElementRef, + Input, + OnChanges, + Renderer2, + SimpleChanges, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { LinkField } from './rendering-field'; @Directive({ selector: '[scLink]' }) export class LinkDirective implements OnChanges { private inlineRef: HTMLSpanElement | null = null; - // tslint:disable-next-line:no-input-rename @Input('scLinkEditable') editable = true; - // tslint:disable-next-line:no-input-rename @Input('scLinkAttrs') attrs: any = {}; - // tslint:disable-next-line:no-input-rename @Input('scLink') field: LinkField; constructor( @@ -19,10 +25,10 @@ export class LinkDirective implements OnChanges { protected templateRef: TemplateRef, protected renderer: Renderer2, private elementRef: ElementRef - ) { } + ) {} ngOnChanges(changes: SimpleChanges) { - if (changes['field'] || changes['editable'] || changes['attrs']) { + if (changes.field || changes.editable || changes.attrs) { this.viewContainer.clear(); if (this.inlineRef) { this.inlineRef.remove(); @@ -66,7 +72,7 @@ export class LinkDirective implements OnChanges { propValue += ` ${node.className}`; } - this.renderer.setAttribute(node, key, propValue) + this.renderer.setAttribute(node, key, propValue); }); if (node.childNodes && node.childNodes.length === 0 && linkText) { @@ -85,7 +91,7 @@ export class LinkDirective implements OnChanges { ...this.getElementAttrs(), ...this.attrs, }; - Object.entries(attrs).forEach(([key, attrValue]: [string, any]) => + Object.entries(attrs).forEach(([key, attrValue]: [string, any]) => this.renderer.setAttribute(span, key, attrValue) ); @@ -97,13 +103,13 @@ export class LinkDirective implements OnChanges { this.inlineRef = span; } - private getElementAttrs(): { [key: string]: any; } { + private getElementAttrs(): { [key: string]: any } { const view = this.templateRef.createEmbeddedView(null); const element: Element = view.rootNodes[0]; if (!element) { return {}; } - const attrs: { [key: string]: any; } = {}; + const attrs: { [key: string]: any } = {}; for (let i = 0; i < element.attributes.length; i++) { const attr = element.attributes.item(i); if (attr) { diff --git a/packages/sitecore-jss-angular/src/components/missing-component.component.ts b/packages/sitecore-jss-angular/src/components/missing-component.component.ts index 859520bf3f..fb62ddef84 100644 --- a/packages/sitecore-jss-angular/src/components/missing-component.component.ts +++ b/packages/sitecore-jss-angular/src/components/missing-component.component.ts @@ -3,10 +3,13 @@ import { Component, Input } from '@angular/core'; @Component({ selector: 'sc-missing-component', template: ` -
-

{{ rendering.componentName }}

-

JSS component is missing Angular component implementation.

-
`, +
+

{{ rendering.componentName }}

+

JSS component is missing Angular component implementation.

+
+ `, }) export class MissingComponentComponent { @Input() rendering: any; diff --git a/packages/sitecore-jss-angular/src/components/placeholder.component.spec.ts b/packages/sitecore-jss-angular/src/components/placeholder.component.spec.ts index 8e2145e3d0..d1f6ece209 100644 --- a/packages/sitecore-jss-angular/src/components/placeholder.component.spec.ts +++ b/packages/sitecore-jss-angular/src/components/placeholder.component.spec.ts @@ -1,5 +1,11 @@ -// tslint:disable:max-classes-per-file -import { Component, DebugElement, EventEmitter, Input, NgModuleFactoryLoader, Output } from '@angular/core'; +import { + Component, + DebugElement, + EventEmitter, + Input, + NgModuleFactoryLoader, + Output, +} from '@angular/core'; import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { SpyNgModuleFactoryLoader } from '@angular/router/testing'; @@ -7,13 +13,16 @@ import { SpyNgModuleFactoryLoader } from '@angular/router/testing'; import { JssModule } from '../lib.module'; import { convertedData as eeData } from '../testData/ee-data'; -import { convertedDevData as nonEeDevData, convertedLayoutServiceData as nonEeLsData } from '../testData/non-ee-data'; +import { + convertedDevData as nonEeDevData, + convertedLayoutServiceData as nonEeLsData, +} from '../testData/non-ee-data'; @Component({ selector: 'test-placeholder', template: ` - + `, }) @@ -34,7 +43,7 @@ class TestDownloadCalloutComponent { @Component({ selector: 'test-home', - styles: [ 'sc-placeholder[name="page-content"] { background-color: red }' ], + styles: ['sc-placeholder[name="page-content"] { background-color: red }'], template: ` @@ -46,9 +55,9 @@ class TestHomeComponent { @Component({ selector: 'test-jumbotron', - template: ``, + template: '', }) -class TestJumbotronComponent { } +class TestJumbotronComponent {} describe('', () => { let fixture: ComponentFixture; @@ -70,9 +79,7 @@ describe('', () => { { name: 'Jumbotron', type: TestJumbotronComponent }, ]), ], - providers: [ - { provide: NgModuleFactoryLoader, value: SpyNgModuleFactoryLoader }, - ], + providers: [{ provide: NgModuleFactoryLoader, value: SpyNgModuleFactoryLoader }], }).compileComponents(); })); @@ -103,14 +110,15 @@ describe('', () => { testData.forEach((dataSet: any) => { describe(`with ${dataSet.label}`, () => { it('should render a placeholder with given key', async(() => { - const component = dataSet.data.sitecore.route.placeholders.main.find((c: any) => c.componentName); + const component = dataSet.data.sitecore.route.placeholders.main.find( + (c: any) => c.componentName + ); const phKey = 'page-content'; comp.name = phKey; comp.rendering = component; fixture.detectChanges(); - fixture.whenStable() - .then(() => { + fixture.whenStable().then(() => { fixture.detectChanges(); const downloadCallout = de.query(By.directive(TestDownloadCalloutComponent)); @@ -131,18 +139,16 @@ describe('', () => { // because nested placeholders result in additional async loading _after_ whenStable, // we have to check for stability AGAIN internally - fixture.whenStable() - .then(() => { - fixture.detectChanges(); + fixture.whenStable().then(() => { + fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); - const downloadCallout = de.query(By.directive(TestDownloadCalloutComponent)); - expect(downloadCallout).not.toBeNull(); - expect(downloadCallout.nativeElement.innerHTML).toContain('Download'); - }); + fixture.whenStable().then(() => { + fixture.detectChanges(); + const downloadCallout = de.query(By.directive(TestDownloadCalloutComponent)); + expect(downloadCallout).not.toBeNull(); + expect(downloadCallout.nativeElement.innerHTML).toContain('Download'); }); + }); })); }); }); @@ -155,17 +161,16 @@ describe('', () => { comp.rendering = component; fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); + fixture.whenStable().then(() => { + fixture.detectChanges(); - const eeChrome = de.query(By.css(`[chrometype="placeholder"][kind="open"][id="${phKey}"]`)); - expect(eeChrome).not.toBeNull(); + const eeChrome = de.query(By.css(`[chrometype="placeholder"][kind="open"][id="${phKey}"]`)); + expect(eeChrome).not.toBeNull(); - const keyAttribute = eeChrome.nativeElement.getAttribute('key'); - expect(keyAttribute).toBeDefined(); - expect(keyAttribute).toBe(phKey); - }); + const keyAttribute = eeChrome.nativeElement.getAttribute('key'); + expect(keyAttribute).toBeDefined(); + expect(keyAttribute).toBe(phKey); + }); })); it('should copy parent style attribute', async(() => { @@ -175,37 +180,40 @@ describe('', () => { comp.rendering = component; fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); + fixture.whenStable().then(() => { + fixture.detectChanges(); - // let's grab the style name from the parent - let parentKey = ''; - const homeComp = de.query(By.directive(TestHomeComponent)); - const homeAttributes = homeComp.nativeElement.attributes; - if (homeAttributes.length) { - const parentAttribute = homeComp.nativeElement.attributes.item(0).name; - parentKey = parentAttribute.replace('_nghost-', ''); - } - - fixture.whenStable() - .then(() => { - fixture.detectChanges(); - const downloadCallout = de.query(By.directive(TestDownloadCalloutComponent)); - expect(downloadCallout.nativeElement.attributes.item(0).name).toEqual(`_ngcontent-${parentKey}`); - }); + // let's grab the style name from the parent + let parentKey = ''; + const homeComp = de.query(By.directive(TestHomeComponent)); + const homeAttributes = homeComp.nativeElement.attributes; + if (homeAttributes.length) { + const parentAttribute = homeComp.nativeElement.attributes.item(0).name; + parentKey = parentAttribute.replace('_nghost-', ''); + } + + fixture.whenStable().then(() => { + fixture.detectChanges(); + const downloadCallout = de.query(By.directive(TestDownloadCalloutComponent)); + expect(downloadCallout.nativeElement.attributes.item(0).name).toEqual( + `_ngcontent-${parentKey}` + ); }); + }); })); it('should skip rendering unknown components', async(() => { const phKey = 'main'; const route = { placeholders: { - main: [{ - componentName: 'Home', - }, { - componentName: 'whatisthis', - }], + main: [ + { + componentName: 'Home', + }, + { + componentName: 'whatisthis', + }, + ], }, }; @@ -213,24 +221,25 @@ describe('', () => { comp.rendering = route; fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); + fixture.whenStable().then(() => { + fixture.detectChanges(); - expect(de.children.length).toBe(1); + expect(de.children.length).toBe(1); - const homeDiv = de.query(By.directive(TestHomeComponent)); - expect(homeDiv).not.toBeNull(); - }); + const homeDiv = de.query(By.directive(TestHomeComponent)); + expect(homeDiv).not.toBeNull(); + }); })); it('should render null for unknown placeholder', async(() => { const phKey = 'unknown'; const route = { placeholders: { - main: [{ - componentName: 'Home', - }], + main: [ + { + componentName: 'Home', + }, + ], }, }; @@ -238,20 +247,24 @@ describe('', () => { comp.rendering = route; fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); + fixture.whenStable().then(() => { + fixture.detectChanges(); - const element = de.query(By.css('sc-placeholder')).nativeElement; - expect(element.children.length).toBe(0); - }); + const element = de.query(By.css('sc-placeholder')).nativeElement; + expect(element.children.length).toBe(0); + }); })); }); @Component({ selector: 'test-parent', template: ` - + {{ clickMessage }} `, }) @@ -298,19 +311,14 @@ describe(' with input/ouput binding', () => { beforeEach(() => { TestBed.configureTestingModule({ - declarations: [ - TestParentComponent, - TestChildComponent, - ], + declarations: [TestParentComponent, TestChildComponent], imports: [ JssModule.withComponents([ { name: 'Parent', type: TestParentComponent }, { name: 'Child', type: TestChildComponent }, ]), ], - providers: [ - { provide: NgModuleFactoryLoader, value: SpyNgModuleFactoryLoader }, - ], + providers: [{ provide: NgModuleFactoryLoader, value: SpyNgModuleFactoryLoader }], }); fixture = TestBed.createComponent(TestParentComponent); @@ -338,16 +346,15 @@ describe(' with input/ouput binding', () => { comp.childMessage = expectedMessage; fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); - const childComponent = de.query(By.directive(TestChildComponent)); - expect(childComponent.nativeElement.innerHTML).toContain(expectedMessage); - expect(childComponent.nativeElement.innerHTML).toContain(functionResult); - comp.childMessage = changedMessage; - fixture.detectChanges(); - expect(childComponent.nativeElement.innerHTML).toContain(changedMessage); - }); + fixture.whenStable().then(() => { + fixture.detectChanges(); + const childComponent = de.query(By.directive(TestChildComponent)); + expect(childComponent.nativeElement.innerHTML).toContain(expectedMessage); + expect(childComponent.nativeElement.innerHTML).toContain(functionResult); + comp.childMessage = changedMessage; + fixture.detectChanges(); + expect(childComponent.nativeElement.innerHTML).toContain(changedMessage); + }); })); it('should bind inputs to multiple', async(() => { @@ -372,15 +379,14 @@ describe(' with input/ouput binding', () => { comp.childMessage = expectedMessage; fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); - const childComponents = de.queryAll(By.directive(TestChildComponent)); - expect(childComponents.length).toBe(3); - childComponents.forEach((childComponent) => { - expect(childComponent.nativeElement.innerHTML).toContain(expectedMessage); - }); + fixture.whenStable().then(() => { + fixture.detectChanges(); + const childComponents = de.queryAll(By.directive(TestChildComponent)); + expect(childComponents.length).toBe(3); + childComponents.forEach((childComponent) => { + expect(childComponent.nativeElement.innerHTML).toContain(expectedMessage); }); + }); })); it('should bind outputs to children', async(() => { @@ -395,14 +401,13 @@ describe(' with input/ouput binding', () => { }; comp.name = 'children'; fixture.detectChanges(); - fixture.whenStable() - .then(() => { - fixture.detectChanges(); - const button = de.query(By.css('button')); - button.nativeElement.click(); - fixture.detectChanges(); + fixture.whenStable().then(() => { + fixture.detectChanges(); + const button = de.query(By.css('button')); + button.nativeElement.click(); + fixture.detectChanges(); - expect(de.nativeElement.innerHTML).toContain('dolor'); - }); + expect(de.nativeElement.innerHTML).toContain('dolor'); + }); })); }); diff --git a/packages/sitecore-jss-angular/src/components/placeholder.component.ts b/packages/sitecore-jss-angular/src/components/placeholder.component.ts index e419afaaa8..0c8b40e7d6 100644 --- a/packages/sitecore-jss-angular/src/components/placeholder.component.ts +++ b/packages/sitecore-jss-angular/src/components/placeholder.component.ts @@ -1,3 +1,4 @@ +/* eslint-disable @angular-eslint/no-conflicting-lifecycle */ import { ChangeDetectorRef, Component, @@ -23,15 +24,20 @@ import { import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss'; import { Observable } from 'rxjs'; import { takeWhile } from 'rxjs/operators'; -import { ComponentFactoryResult, JssComponentFactoryService } from '../jss-component-factory.service'; -import { PlaceholderLoadingDirective } from './placeholder-loading.directive'; import { - PLACEHOLDER_MISSING_COMPONENT_COMPONENT -} from './placeholder.token'; + ComponentFactoryResult, + JssComponentFactoryService, +} from '../jss-component-factory.service'; +import { PlaceholderLoadingDirective } from './placeholder-loading.directive'; +import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token'; import { RenderEachDirective } from './render-each.directive'; import { RenderEmptyDirective } from './render-empty.directive'; import { isRawRendering } from './rendering'; +/** + * @param {ComponentRendering} rendering + * @param {string} name + */ function getPlaceholder(rendering: ComponentRendering, name: string) { if (rendering && rendering.placeholders && Object.keys(rendering.placeholders).length > 0) { return rendering.placeholders[name]; @@ -42,7 +48,10 @@ function getPlaceholder(rendering: ComponentRendering, name: string) { @Component({ selector: 'sc-placeholder,[sc-placeholder]', template: ` - + `, }) @@ -51,7 +60,7 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr private _differ: KeyValueDiffer; private _componentInstances: any[] = []; private destroyed = false; - private parentStyleAttribute: string = ''; + private parentStyleAttribute = ''; public isLoading = true; @Input() name?: string; @@ -65,7 +74,8 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr @ViewChild('view', { read: ViewContainerRef, static: true }) private view: ViewContainerRef; @ContentChild(RenderEachDirective, { static: true }) renderEachTemplate: RenderEachDirective; @ContentChild(RenderEmptyDirective, { static: true }) renderEmptyTemplate: RenderEmptyDirective; - @ContentChild(PlaceholderLoadingDirective, { static: true }) placeholderLoading?: PlaceholderLoadingDirective; + @ContentChild(PlaceholderLoadingDirective, { static: true }) + placeholderLoading?: PlaceholderLoadingDirective; @Input() set inputs(value: { [key: string]: any }) { @@ -83,7 +93,7 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr private elementRef: ElementRef, private renderer: Renderer2, @Inject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT) private missingComponentComponent: Type - ) { } + ) {} ngOnInit() { // just to ensure the element exists @@ -94,7 +104,7 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr for (let i = 0; i < attributes.length; i++) { const attr: Attr | null = attributes.item(i); if (attr && attr.name.indexOf('_ngcontent') !== -1) { - this.parentStyleAttribute = attr.name; + this.parentStyleAttribute = attr.name; } } } @@ -106,7 +116,7 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr } ngOnChanges(changes: SimpleChanges) { - if (changes['rendering'] || changes['renderings']) { + if (changes.rendering || changes.renderings) { this._render(); } } @@ -121,24 +131,33 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr return; } const updates: { [key: string]: any } = {}; - changes.forEachRemovedItem((change) => updates[change.key] = null); - changes.forEachAddedItem((change) => updates[change.key] = change.currentValue); - changes.forEachChangedItem((change) => updates[change.key] = change.currentValue); - this._componentInstances.forEach((componentInstance) => this._setComponentInputs(componentInstance, updates)); + changes.forEachRemovedItem((change) => (updates[change.key] = null)); + changes.forEachAddedItem((change) => (updates[change.key] = change.currentValue)); + changes.forEachChangedItem((change) => (updates[change.key] = change.currentValue)); + this._componentInstances.forEach((componentInstance) => + this._setComponentInputs(componentInstance, updates) + ); } private _setComponentInputs(componentInstance: any, inputs: { [key: string]: any }) { - Object.entries(inputs).forEach(([input, inputValue]) => componentInstance[input] = inputValue); + Object.entries(inputs).forEach( + ([input, inputValue]) => (componentInstance[input] = inputValue) + ); } - private _subscribeComponentOutputs(componentInstance: any, outputs: { [k: string]: (eventType: any) => void }) { + private _subscribeComponentOutputs( + componentInstance: any, + outputs: { [k: string]: (eventType: any) => void } + ) { Object.keys(outputs) - .filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable) - .forEach((output) => (componentInstance[output] as Observable) - .pipe( - takeWhile(() => !this.destroyed) - ) - .subscribe(outputs[output])); + .filter( + (output) => componentInstance[output] && componentInstance[output] instanceof Observable + ) + .forEach((output) => + (componentInstance[output] as Observable) + .pipe(takeWhile(() => !this.destroyed)) + .subscribe(outputs[output]) + ); } private _render() { @@ -150,8 +169,9 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr } if (!this.name && !this.renderings) { - // tslint:disable-next-line:max-line-length - console.warn(`Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.`); + console.warn( + 'Placeholder name was not specified, and explicit renderings array was not passed. Placeholder requires either name and rendering, or renderings.' + ); this.isLoading = false; return; } @@ -159,30 +179,38 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr const placeholder = this.renderings || getPlaceholder(this.rendering, this.name || ''); if (!placeholder) { - console.warn(`Placeholder '${this.name}' was not found in the current rendering data`, JSON.stringify(this.rendering, null, 2)); + console.warn( + `Placeholder '${this.name}' was not found in the current rendering data`, + JSON.stringify(this.rendering, null, 2) + ); this.isLoading = false; return; } // if the placeholder is empty (contains only raw renderings), then we may need to use the empty template if it's defined - const placeholderIsEmpty = placeholder.every((rendering: ComponentRendering | HtmlElementRendering) => isRawRendering(rendering)); + const placeholderIsEmpty = placeholder.every( + (rendering: ComponentRendering | HtmlElementRendering) => isRawRendering(rendering) + ); if (this.renderEmptyTemplate && placeholderIsEmpty) { - this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, - { - renderings: placeholder, - }); + this.view.createEmbeddedView(this.renderEmptyTemplate.templateRef, { + renderings: placeholder, + }); this.isLoading = false; } else { - this.componentFactory.getComponents(placeholder) - .then((components) => components.forEach((rendering, index) => { - if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) { - this._renderTemplatedComponent(rendering.componentDefinition, index); - } else { - this._renderEmbeddedComponent(rendering, index); - } - this.isLoading = false; - })).then(() => { + this.componentFactory + .getComponents(placeholder) + .then((components) => + components.forEach((rendering, index) => { + if (this.renderEachTemplate && !isRawRendering(rendering.componentDefinition)) { + this._renderTemplatedComponent(rendering.componentDefinition, index); + } else { + this._renderEmbeddedComponent(rendering, index); + } + this.isLoading = false; + }) + ) + .then(() => { this.changeDetectorRef.markForCheck(); this.loaded.emit(this.name); }); @@ -196,11 +224,10 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr // the render-each template takes care of all component mapping etc // generally using which is about like _renderEmbeddedComponent() // as a separate component - this.view.createEmbeddedView(this.renderEachTemplate.templateRef, - { - rendering, - index, - }); + this.view.createEmbeddedView(this.renderEachTemplate.templateRef, { + rendering, + index, + }); } private _renderEmbeddedComponent(rendering: ComponentFactoryResult, index: number) { @@ -218,13 +245,18 @@ export class PlaceholderComponent implements OnInit, OnChanges, DoCheck, OnDestr } const componentFactory = - rendering.componentFactory || this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation); + rendering.componentFactory || + this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation); // apply the parent style attribute _ngcontent // work-around for https://github.com/angular/angular/issues/12215 const createdComponentRef = this.view.createComponent(componentFactory, index); if (this.parentStyleAttribute) { - this.renderer.setAttribute(createdComponentRef.location.nativeElement, this.parentStyleAttribute, ''); + this.renderer.setAttribute( + createdComponentRef.location.nativeElement, + this.parentStyleAttribute, + '' + ); } const componentInstance = createdComponentRef.instance; diff --git a/packages/sitecore-jss-angular/src/components/placeholder.token.ts b/packages/sitecore-jss-angular/src/components/placeholder.token.ts index 4b08bb9c00..530a91f98f 100644 --- a/packages/sitecore-jss-angular/src/components/placeholder.token.ts +++ b/packages/sitecore-jss-angular/src/components/placeholder.token.ts @@ -17,15 +17,29 @@ export interface ComponentNameAndModule { loadChildren: () => Promise; } +/** + * @param {any} object + */ export function instanceOfComponentNameAndType(object: any): object is ComponentNameAndType { return 'type' in object; } +/** + * @param {any} object + */ export function instanceOfComponentNameAndModule(object: any): object is ComponentNameAndModule { return 'module' in object; } -export const PLACEHOLDER_COMPONENTS = new InjectionToken('Sc.placeholder.components'); -export const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken('Sc.placeholder.lazyComponents'); -export const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken>('Sc.placeholder.missingComponentComponent'); -export const DYNAMIC_COMPONENT = new InjectionToken | {[s: string]: any}> ('Sc.placeholder.dynamicComponent'); +export const PLACEHOLDER_COMPONENTS = new InjectionToken( + 'Sc.placeholder.components' +); +export const PLACEHOLDER_LAZY_COMPONENTS = new InjectionToken( + 'Sc.placeholder.lazyComponents' +); +export const PLACEHOLDER_MISSING_COMPONENT_COMPONENT = new InjectionToken>( + 'Sc.placeholder.missingComponentComponent' +); +export const DYNAMIC_COMPONENT = new InjectionToken | { [s: string]: any }>( + 'Sc.placeholder.dynamicComponent' +); diff --git a/packages/sitecore-jss-angular/src/components/raw.component.ts b/packages/sitecore-jss-angular/src/components/raw.component.ts index af45cae0aa..7582a98f39 100644 --- a/packages/sitecore-jss-angular/src/components/raw.component.ts +++ b/packages/sitecore-jss-angular/src/components/raw.component.ts @@ -3,21 +3,19 @@ import { HtmlElementRendering } from '@sitecore-jss/sitecore-jss'; @Component({ selector: 'sc-raw', - template: ``, + template: '', }) export class RawComponent implements OnInit { @Input() rendering: HtmlElementRendering; - constructor( - private renderer: Renderer2, - private elementRef: ElementRef - ) { } + constructor(private renderer: Renderer2, private elementRef: ElementRef) {} ngOnInit() { const el = this.renderer.createElement(this.rendering.name); const contents = this.renderer.createText(this.rendering.contents || ''); const attributes = this.rendering.attributes; for (const attr in attributes) { + // eslint-disable-next-line no-prototype-builtins if ((attributes as any).hasOwnProperty(attr)) { const value = attributes[attr]; this.renderer.setAttribute(el, attr, value || ''); diff --git a/packages/sitecore-jss-angular/src/components/render-component.component.ts b/packages/sitecore-jss-angular/src/components/render-component.component.ts index 6d4fad54db..1fe49c9601 100644 --- a/packages/sitecore-jss-angular/src/components/render-component.component.ts +++ b/packages/sitecore-jss-angular/src/components/render-component.component.ts @@ -14,7 +14,10 @@ import { import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss'; import { Observable } from 'rxjs'; import { takeWhile } from 'rxjs/operators'; -import { ComponentFactoryResult, JssComponentFactoryService } from '../jss-component-factory.service'; +import { + ComponentFactoryResult, + JssComponentFactoryService, +} from '../jss-component-factory.service'; import { PLACEHOLDER_MISSING_COMPONENT_COMPONENT } from './placeholder.token'; import { RawComponent } from './raw.component'; import { isRawRendering } from './rendering'; @@ -51,26 +54,33 @@ export class RenderComponentComponent implements OnChanges { private differs: KeyValueDiffers, private componentFactory: JssComponentFactoryService, @Inject(PLACEHOLDER_MISSING_COMPONENT_COMPONENT) private missingComponentComponent: Type - ) { } + ) {} ngOnChanges(changes: SimpleChanges) { - if (changes['rendering']) { + if (changes.rendering) { this._render(); } } private _setComponentInputs(componentInstance: any, inputs: { [key: string]: any }) { - Object.entries(inputs).forEach(([input, inputValue]) => componentInstance[input] = inputValue); + Object.entries(inputs).forEach( + ([input, inputValue]) => (componentInstance[input] = inputValue) + ); } - private _subscribeComponentOutputs(componentInstance: any, outputs: { [k: string]: (eventType: any) => void }) { + private _subscribeComponentOutputs( + componentInstance: any, + outputs: { [k: string]: (eventType: any) => void } + ) { Object.keys(outputs) - .filter((output) => componentInstance[output] && componentInstance[output] instanceof Observable) - .forEach((output) => (componentInstance[output] as Observable) - .pipe( - takeWhile(() => !this.destroyed) + .filter( + (output) => componentInstance[output] && componentInstance[output] instanceof Observable ) - .subscribe(outputs[output])); + .forEach((output) => + (componentInstance[output] as Observable) + .pipe(takeWhile(() => !this.destroyed)) + .subscribe(outputs[output]) + ); } private _render() { @@ -81,14 +91,18 @@ export class RenderComponentComponent implements OnChanges { } const resolveComponent: Promise = isRawRendering(this.rendering) - ? Promise.resolve({ componentImplementation: RawComponent, componentDefinition: this.rendering }) + ? Promise.resolve({ + componentImplementation: RawComponent, + componentDefinition: this.rendering, + }) : this.componentFactory.getComponent(this.rendering); resolveComponent.then((rendering) => { if (!rendering.componentImplementation) { const componentName = (rendering.componentDefinition as ComponentRendering).componentName; console.error( - `Attempted to render unknown component ${componentName}.`, `Ensure component is mapped, like: + `Attempted to render unknown component ${componentName}.`, + `Ensure component is mapped, like: JssModule.withComponents([ { name: '${componentName}', type: ${componentName}Component } ])` @@ -98,7 +112,8 @@ export class RenderComponentComponent implements OnChanges { } const componentFactory = - rendering.componentFactory || this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation); + rendering.componentFactory || + this.componentFactoryResolver.resolveComponentFactory(rendering.componentImplementation); const componentInstance = this.view.createComponent(componentFactory, 0).instance; componentInstance.rendering = rendering.componentDefinition; diff --git a/packages/sitecore-jss-angular/src/components/render-each.directive.ts b/packages/sitecore-jss-angular/src/components/render-each.directive.ts index dd4771cb18..39b08c5511 100644 --- a/packages/sitecore-jss-angular/src/components/render-each.directive.ts +++ b/packages/sitecore-jss-angular/src/components/render-each.directive.ts @@ -1,7 +1,6 @@ import { Directive, TemplateRef } from '@angular/core'; @Directive({ - // tslint:disable-next-line:directive-selector selector: '[renderEach]', }) export class RenderEachDirective { diff --git a/packages/sitecore-jss-angular/src/components/render-empty.directive.ts b/packages/sitecore-jss-angular/src/components/render-empty.directive.ts index 8b7a380965..858c9bc8ba 100644 --- a/packages/sitecore-jss-angular/src/components/render-empty.directive.ts +++ b/packages/sitecore-jss-angular/src/components/render-empty.directive.ts @@ -1,7 +1,6 @@ import { Directive, TemplateRef } from '@angular/core'; @Directive({ - // tslint:disable-next-line:directive-selector selector: '[renderEmpty]', }) export class RenderEmptyDirective { diff --git a/packages/sitecore-jss-angular/src/components/rendering-field.ts b/packages/sitecore-jss-angular/src/components/rendering-field.ts index 0bd913435d..a4a9ea9ce6 100644 --- a/packages/sitecore-jss-angular/src/components/rendering-field.ts +++ b/packages/sitecore-jss-angular/src/components/rendering-field.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-empty-interface */ export interface RenderingField { value?: any; editable?: string; @@ -18,8 +19,6 @@ export interface LinkField extends RenderingField { editableLastPart?: string; } -// tslint:disable-next-line:no-empty-interface -export interface RichTextField extends RenderingField { } +export interface RichTextField extends RenderingField {} -// tslint:disable-next-line:no-empty-interface -export interface TextField extends RenderingField { } +export interface TextField extends RenderingField {} diff --git a/packages/sitecore-jss-angular/src/components/rendering.ts b/packages/sitecore-jss-angular/src/components/rendering.ts index a8dc45c47b..c253fc3957 100644 --- a/packages/sitecore-jss-angular/src/components/rendering.ts +++ b/packages/sitecore-jss-angular/src/components/rendering.ts @@ -1,5 +1,13 @@ import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss'; -export function isRawRendering(rendering: HtmlElementRendering | ComponentRendering): rendering is HtmlElementRendering { - return !(rendering as ComponentRendering).componentName && (rendering as HtmlElementRendering).name !== undefined; +/** + * @param {HtmlElementRendering | ComponentRendering} rendering + */ +export function isRawRendering( + rendering: HtmlElementRendering | ComponentRendering +): rendering is HtmlElementRendering { + return ( + !(rendering as ComponentRendering).componentName && + (rendering as HtmlElementRendering).name !== undefined + ); } diff --git a/packages/sitecore-jss-angular/src/components/rich-text.directive.ts b/packages/sitecore-jss-angular/src/components/rich-text.directive.ts index 40604a3d01..a342ee4d7b 100644 --- a/packages/sitecore-jss-angular/src/components/rich-text.directive.ts +++ b/packages/sitecore-jss-angular/src/components/rich-text.directive.ts @@ -1,4 +1,12 @@ -import { Directive, EmbeddedViewRef, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + EmbeddedViewRef, + Input, + OnChanges, + SimpleChanges, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { RichTextField } from './rendering-field'; @Directive({ @@ -7,19 +15,14 @@ import { RichTextField } from './rendering-field'; export class RichTextDirective implements OnChanges { private viewRef: EmbeddedViewRef; - // tslint:disable-next-line:no-input-rename @Input('scRichTextEditable') editable = true; - // tslint:disable-next-line:no-input-rename @Input('scRichText') field: RichTextField; - constructor( - private viewContainer: ViewContainerRef, - private templateRef: TemplateRef, - ) { } + constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef) {} ngOnChanges(changes: SimpleChanges) { - if (changes['field'] || changes['editable']) { + if (changes.field || changes.editable) { if (!this.viewRef) { this.viewContainer.clear(); this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef); @@ -35,7 +38,7 @@ export class RichTextDirective implements OnChanges { return; } - const html = (field.editable && this.editable ? field.editable : field.value); + const html = field.editable && this.editable ? field.editable : field.value; this.viewRef.rootNodes.forEach((node) => { node.innerHTML = html; }); diff --git a/packages/sitecore-jss-angular/src/components/router-link.directive.spec.ts b/packages/sitecore-jss-angular/src/components/router-link.directive.spec.ts index 5b18335d8c..c596ab12aa 100644 --- a/packages/sitecore-jss-angular/src/components/router-link.directive.spec.ts +++ b/packages/sitecore-jss-angular/src/components/router-link.directive.spec.ts @@ -26,7 +26,7 @@ describe('', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [RouterLinkDirective, TestComponent], - imports: [RouterTestingModule] + imports: [RouterTestingModule], }); fixture = TestBed.createComponent(TestComponent); @@ -165,11 +165,12 @@ describe('', () => { }); }); -// tslint:disable-next-line:max-classes-per-file @Component({ selector: 'test-router-link-children', template: ` - hello world + hello world `, }) class TestWithChildrenComponent { @@ -186,7 +187,7 @@ describe('children', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [RouterLinkDirective, TestWithChildrenComponent], - imports: [RouterTestingModule] + imports: [RouterTestingModule], }); fixture = TestBed.createComponent(TestWithChildrenComponent); diff --git a/packages/sitecore-jss-angular/src/components/router-link.directive.ts b/packages/sitecore-jss-angular/src/components/router-link.directive.ts index 30a50326ac..d10e59bf9e 100644 --- a/packages/sitecore-jss-angular/src/components/router-link.directive.ts +++ b/packages/sitecore-jss-angular/src/components/router-link.directive.ts @@ -1,18 +1,21 @@ -import { Directive, ElementRef, Input, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + ElementRef, + Input, + Renderer2, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { Router } from '@angular/router'; import { LinkDirective } from './link.directive'; import { LinkField } from './rendering-field'; @Directive({ selector: '[scRouterLink]' }) export class RouterLinkDirective extends LinkDirective { - - // tslint:disable-next-line:no-input-rename @Input('scRouterLinkEditable') editable = true; - // tslint:disable-next-line:no-input-rename @Input('scRouterLinkAttrs') attrs: any = {}; - // tslint:disable-next-line:no-input-rename @Input('scRouterLink') field: LinkField; constructor( diff --git a/packages/sitecore-jss-angular/src/components/text.directive.ts b/packages/sitecore-jss-angular/src/components/text.directive.ts index 151df47cca..4ba635b180 100644 --- a/packages/sitecore-jss-angular/src/components/text.directive.ts +++ b/packages/sitecore-jss-angular/src/components/text.directive.ts @@ -1,4 +1,12 @@ -import { Directive, EmbeddedViewRef, Input, OnChanges, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core'; +import { + Directive, + EmbeddedViewRef, + Input, + OnChanges, + SimpleChanges, + TemplateRef, + ViewContainerRef, +} from '@angular/core'; import { TextField } from './rendering-field'; @Directive({ @@ -7,22 +15,16 @@ import { TextField } from './rendering-field'; export class TextDirective implements OnChanges { private viewRef: EmbeddedViewRef; - // tslint:disable-next-line:no-input-rename @Input('scTextEditable') editable = true; - // tslint:disable-next-line:no-input-rename @Input('scTextEncode') encode = true; - // tslint:disable-next-line:no-input-rename @Input('scText') field: TextField; - constructor( - private viewContainer: ViewContainerRef, - private templateRef: TemplateRef - ) { } + constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef) {} ngOnChanges(changes: SimpleChanges) { - if (changes['field'] || changes['editable'] || changes['encode']) { + if (changes.field || changes.editable || changes.encode) { if (!this.viewRef) { this.viewContainer.clear(); this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef); @@ -46,7 +48,7 @@ export class TextDirective implements OnChanges { } const html = field.editable && editable ? field.editable : field.value; - const setDangerously = field.editable && editable || !this.encode; + const setDangerously = (field.editable && editable) || !this.encode; this.viewRef.rootNodes.forEach((node) => { if (setDangerously) { diff --git a/packages/sitecore-jss-angular/src/jss-component-factory.service.ts b/packages/sitecore-jss-angular/src/jss-component-factory.service.ts index effdb1a9c8..fea77257de 100644 --- a/packages/sitecore-jss-angular/src/jss-component-factory.service.ts +++ b/packages/sitecore-jss-angular/src/jss-component-factory.service.ts @@ -5,7 +5,7 @@ import { Injector, Type, Compiler, - NgModuleFactory + NgModuleFactory, } from '@angular/core'; import { ComponentRendering, HtmlElementRendering } from '@sitecore-jss/sitecore-jss'; import { @@ -13,7 +13,7 @@ import { ComponentNameAndType, DYNAMIC_COMPONENT, PLACEHOLDER_COMPONENTS, - PLACEHOLDER_LAZY_COMPONENTS + PLACEHOLDER_LAZY_COMPONENTS, } from './components/placeholder.token'; import { RawComponent } from './components/raw.component'; import { isRawRendering } from './components/rendering'; @@ -35,24 +35,24 @@ export class JssComponentFactoryService { @Inject(PLACEHOLDER_COMPONENTS) private components: ComponentNameAndType[], @Inject(PLACEHOLDER_LAZY_COMPONENTS) private lazyComponents: ComponentNameAndModule[] ) { - this.componentMap = new Map(); - this.lazyComponentMap = new Map(); + this.componentMap = new Map(); + this.lazyComponentMap = new Map(); - this.components.forEach((c) => this.componentMap.set(c.name, c.type)); + this.components.forEach((c) => this.componentMap.set(c.name, c.type)); - if (this.lazyComponents) { - this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c)); - } - } + if (this.lazyComponents) { + this.lazyComponents.forEach((c) => this.lazyComponentMap.set(c.path, c)); + } + } private loadModuleFactory(lazyComponent: ComponentNameAndModule): Promise> { - return lazyComponent.loadChildren().then(loaded => { + return lazyComponent.loadChildren().then((loaded) => { if (loaded instanceof NgModuleFactory) { - return loaded + return loaded; } else { - return this.compiler.compileModuleAsync(loaded) + return this.compiler.compileModuleAsync(loaded); } - }) + }); } getComponent(component: ComponentRendering): Promise { @@ -68,26 +68,23 @@ export class JssComponentFactoryService { const lazyComponent = this.lazyComponentMap.get(component.componentName); if (lazyComponent) { - return this.loadModuleFactory(lazyComponent) - .then((ngModuleFactory) => { + return this.loadModuleFactory(lazyComponent).then((ngModuleFactory) => { let componentType = null; const moduleRef = ngModuleFactory.create(this.injector); const dynamicComponentType = moduleRef.injector.get(DYNAMIC_COMPONENT); if (!dynamicComponentType) { throw new Error( - // tslint:disable-next-line:max-line-length `JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?` ); } if (component.componentName in dynamicComponentType) { - componentType = (dynamicComponentType as {[s: string]: any})[component.componentName]; + componentType = (dynamicComponentType as { [s: string]: any })[component.componentName]; } else { if (typeof dynamicComponentType === 'function') { componentType = dynamicComponentType; } else { throw new Error( - // tslint:disable-next-line:max-line-length `JssComponentFactoryService: Lazy load module for component "${lazyComponent.path}" missing DYNAMIC_COMPONENT provider. Missing JssModule.forChild()?` ); } @@ -96,7 +93,9 @@ export class JssComponentFactoryService { return { componentDefinition: component, componentImplementation: componentType, - componentFactory: moduleRef.componentFactoryResolver.resolveComponentFactory(componentType), + componentFactory: moduleRef.componentFactoryResolver.resolveComponentFactory( + componentType + ), }; }); } @@ -106,12 +105,14 @@ export class JssComponentFactoryService { }); } - getComponents(components: Array): Promise { + getComponents( + components: Array + ): Promise { // acquire all components and keep them in order while handling their potential async-ness return Promise.all( - components.map((component) => isRawRendering(component) - ? this.getRawComponent(component) - : this.getComponent(component)) + components.map((component) => + isRawRendering(component) ? this.getRawComponent(component) : this.getComponent(component) + ) ); } diff --git a/packages/sitecore-jss-angular/src/layout.service.ts b/packages/sitecore-jss-angular/src/layout.service.ts index 4c55108ed0..ffe94254be 100644 --- a/packages/sitecore-jss-angular/src/layout.service.ts +++ b/packages/sitecore-jss-angular/src/layout.service.ts @@ -1,5 +1,10 @@ import { Injectable } from '@angular/core'; -import { dataApi, LayoutServiceData, LayoutServiceRequestOptions, PlaceholderData } from '@sitecore-jss/sitecore-jss'; +import { + dataApi, + LayoutServiceData, + LayoutServiceRequestOptions, + PlaceholderData, +} from '@sitecore-jss/sitecore-jss'; import { from as fromPromise, Observable, throwError as observableThrow } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { LayoutServiceError } from './layout-service-error'; @@ -20,9 +25,13 @@ export class LayoutService { return observableThrow(layoutServiceError); } - getRouteData(route: string, options: LayoutServiceRequestOptions): Observable { - return fromPromise(fetchRouteData(route, options)) - .pipe(catchError(LayoutService.getLayoutServiceError)); + getRouteData( + route: string, + options: LayoutServiceRequestOptions + ): Observable { + return fromPromise(fetchRouteData(route, options)).pipe( + catchError(LayoutService.getLayoutServiceError) + ); } getPlaceholderData( @@ -30,7 +39,8 @@ export class LayoutService { placeholderName: string, options: LayoutServiceRequestOptions ): Observable { - return fromPromise(fetchPlaceholderData(placeholderName, route, options)) - .pipe(catchError(LayoutService.getLayoutServiceError)); + return fromPromise(fetchPlaceholderData(placeholderName, route, options)).pipe( + catchError(LayoutService.getLayoutServiceError) + ); } } diff --git a/packages/sitecore-jss-angular/src/lib.module.ts b/packages/sitecore-jss-angular/src/lib.module.ts index 4f40e88e07..a58700c319 100644 --- a/packages/sitecore-jss-angular/src/lib.module.ts +++ b/packages/sitecore-jss-angular/src/lib.module.ts @@ -1,10 +1,5 @@ import { CommonModule, DatePipe } from '@angular/common'; -import { - ANALYZE_FOR_ENTRY_COMPONENTS, - ModuleWithProviders, - NgModule, - Type -} from '@angular/core'; +import { ANALYZE_FOR_ENTRY_COMPONENTS, ModuleWithProviders, NgModule, Type } from '@angular/core'; import { ROUTES } from '@angular/router'; import { DateDirective } from './components/date.directive'; import { FileDirective } from './components/file.directive'; @@ -20,7 +15,7 @@ import { DYNAMIC_COMPONENT, PLACEHOLDER_COMPONENTS, PLACEHOLDER_LAZY_COMPONENTS, - PLACEHOLDER_MISSING_COMPONENT_COMPONENT + PLACEHOLDER_MISSING_COMPONENT_COMPONENT, } from './components/placeholder.token'; import { RawComponent } from './components/raw.component'; import { RenderComponentComponent } from './components/render-component.component'; @@ -33,9 +28,7 @@ import { JssComponentFactoryService } from './jss-component-factory.service'; import { LayoutService } from './layout.service'; @NgModule({ - imports: [ - CommonModule, - ], + imports: [CommonModule], declarations: [ FileDirective, ImageDirective, @@ -68,28 +61,26 @@ import { LayoutService } from './layout.service'; RichTextDirective, TextDirective, ], - entryComponents: [ - RawComponent, - MissingComponentComponent, - ], + entryComponents: [RawComponent, MissingComponentComponent], }) export class JssModule { /** * Instantiates the JSS module with no component factory. * Useful for using it from libraries. Most of the time you'd want withComponents() + * @returns {ModuleWithProviders} module */ static forRoot(): ModuleWithProviders { return { ngModule: JssModule, - providers: [ - LayoutService, - DatePipe, - JssComponentFactoryService, - ], + providers: [LayoutService, DatePipe, JssComponentFactoryService], }; } - /** Instantiates a module for a lazy-loaded JSS component */ + /** + * Instantiates a module for a lazy-loaded JSS component + * @param {Type} component + * @returns {ModuleWithProviders} module + */ static forChild(component: Type): ModuleWithProviders { return { ngModule: JssModule, @@ -104,8 +95,14 @@ export class JssModule { /** * Instantiates the JSS module and specifies the mapping from component name to component implementation. * Appropriate when defining the set of JSS components that your app is aware of. + * @param {ComponentNameAndType[]} components + * @param {ComponentNameAndModule[]} [lazyComponents] + * @returns {ModuleWithProviders} module */ - static withComponents(components: ComponentNameAndType[], lazyComponents?: ComponentNameAndModule[]): ModuleWithProviders { + static withComponents( + components: ComponentNameAndType[], + lazyComponents?: ComponentNameAndModule[] + ): ModuleWithProviders { return { ngModule: JssModule, providers: [ diff --git a/packages/sitecore-jss-angular/src/public_api.ts b/packages/sitecore-jss-angular/src/public_api.ts index 9c6bf829b2..cd87bda324 100644 --- a/packages/sitecore-jss-angular/src/public_api.ts +++ b/packages/sitecore-jss-angular/src/public_api.ts @@ -7,7 +7,14 @@ export { PlaceholderComponent } from './components/placeholder.component'; export { PlaceholderLoadingDirective } from './components/placeholder-loading.directive'; export { ComponentNameAndType, DYNAMIC_COMPONENT } from './components/placeholder.token'; export { isRawRendering } from './components/rendering'; -export { FileField, ImageField, LinkField, RenderingField, RichTextField, TextField } from './components/rendering-field'; +export { + FileField, + ImageField, + LinkField, + RenderingField, + RichTextField, + TextField, +} from './components/rendering-field'; export { RichTextDirective } from './components/rich-text.directive'; export { TextDirective } from './components/text.directive'; export { LayoutService } from './layout.service'; @@ -31,5 +38,5 @@ export { ComponentParams, HttpJsonFetcher, HttpResponse, - isServer + isServer, } from '@sitecore-jss/sitecore-jss'; diff --git a/packages/sitecore-jss-angular/src/test.ts b/packages/sitecore-jss-angular/src/test.ts index 073b6583ad..619713f052 100644 --- a/packages/sitecore-jss-angular/src/test.ts +++ b/packages/sitecore-jss-angular/src/test.ts @@ -5,7 +5,4 @@ import { } from '@angular/platform-browser-dynamic/testing'; // First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting(), -); +getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); diff --git a/packages/sitecore-jss-angular/src/testData/ee-data.ts b/packages/sitecore-jss-angular/src/testData/ee-data.ts index 08554bb55a..00672f6057 100644 --- a/packages/sitecore-jss-angular/src/testData/ee-data.ts +++ b/packages/sitecore-jss-angular/src/testData/ee-data.ts @@ -1,247 +1,261 @@ // these rules enforce "correct" JSON format instead of normal object format -/* tslint:disable:object-literal-key-quotes quotemark trailing-comma one-line max-line-length prettier */ - export const convertedData = { sitecore: { context: { pageEditing: true, }, route: { - name: "home", - displayName: "Home", + name: 'home', + displayName: 'Home', placeholders: { main: [ { - name: "code", - type: "text/sitecore", - contents: "{\"commands\":[{\"click\":\"chrome:placeholder:addControl\",\"header\":\"Add to here\",\"icon\":\"/temp/iconcache/office/16x16/add.png\",\"disabledIcon\":\"/temp/add_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Add a new rendering to the '{0}' placeholder.\",\"type\":\"\"},{\"click\":\"chrome:placeholder:editSettings\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/window_gear.png\",\"disabledIcon\":\"/temp/window_gear_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the placeholder settings.\",\"type\":\"\"}],\"contextItemUri\":\"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1\",\"custom\":{\"allowedRenderings\":[],\"editable\":\"true\"},\"displayName\":\"main\",\"expandedDisplayName\":null}", + name: 'code', + type: 'text/sitecore', + contents: + '{"commands":[{"click":"chrome:placeholder:addControl","header":"Add to here","icon":"/temp/iconcache/office/16x16/add.png","disabledIcon":"/temp/add_disabled16x16.png","isDivider":false,"tooltip":"Add a new rendering to the \'{0}\' placeholder.","type":""},{"click":"chrome:placeholder:editSettings","header":"","icon":"/temp/iconcache/office/16x16/window_gear.png","disabledIcon":"/temp/window_gear_disabled16x16.png","isDivider":false,"tooltip":"Edit the placeholder settings.","type":""}],"contextItemUri":"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1","custom":{"allowedRenderings":[],"editable":"true"},"displayName":"main","expandedDisplayName":null}', attributes: { - "type": "text/sitecore", - "chrometype": "placeholder", - "kind": "open", - "id": "main", - "key": "main", - "class": "scpm", - "data-selectable": "true", + type: 'text/sitecore', + chrometype: 'placeholder', + kind: 'open', + id: 'main', + key: 'main', + class: 'scpm', + 'data-selectable': 'true', }, }, { - name: "code", - type: "text/sitecore", - contents: "{\"commands\":[{\"click\":\"chrome:rendering:sort\",\"header\":\"Change position\",\"icon\":\"/temp/iconcache/office/16x16/document_size.png\",\"disabledIcon\":\"/temp/document_size_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Move component.\",\"type\":\"\"},{\"click\":\"javascript:Sitecore.PageModes.PageEditor.postRequest('webedit:componentoptions(referenceId={2339622D-093B-4258-8334-95979E41EFA6},renderingId={6CAAAD00-D87A-4B71-BA0E-763BA7003FE5},id={F142E1B0-EFD1-4730-BBC5-C30064AD19D9})',null,false)\",\"header\":\"Edit Experience Editor Options\",\"icon\":\"/temp/iconcache/office/16x16/clipboard_check_edit.png\",\"disabledIcon\":\"/temp/clipboard_check_edit_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the Experience Editor options for the component.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:properties\",\"header\":\"Edit component properties\",\"icon\":\"/temp/iconcache/office/16x16/elements_branch.png\",\"disabledIcon\":\"/temp/elements_branch_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the properties for the component.\",\"type\":\"common\"},{\"click\":\"javascript:Sitecore.PageModes.PageEditor.postRequest('webedit:setdatasource(referenceId={2339622D-093B-4258-8334-95979E41EFA6},renderingId={6CAAAD00-D87A-4B71-BA0E-763BA7003FE5},id={F142E1B0-EFD1-4730-BBC5-C30064AD19D9})',null,false)\",\"header\":\"{dsHeader}\",\"icon\":\"/temp/iconcache/office/16x16/data.png\",\"disabledIcon\":\"/temp/data_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"{dsTooltip}\",\"type\":\"datasourcesmenu\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Test the component.\",\"type\":\"sticky\"},{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"datasourcesmenu\"},{\"click\":\"chrome:rendering:delete\",\"header\":\"Delete\",\"icon\":\"/temp/iconcache/office/16x16/delete.png\",\"disabledIcon\":\"/temp/delete_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Remove component.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{F142E1B0-EFD1-4730-BBC5-C30064AD19D9}?lang=en&ver=1\",\"custom\":{\"renderingID\":\"6CAAAD00D87A4B71BA0E763BA7003FE5\",\"editable\":\"true\"},\"displayName\":\"HomeRendering\",\"expandedDisplayName\":null}", + name: 'code', + type: 'text/sitecore', + contents: + '{"commands":[{"click":"chrome:rendering:sort","header":"Change position","icon":"/temp/iconcache/office/16x16/document_size.png","disabledIcon":"/temp/document_size_disabled16x16.png","isDivider":false,"tooltip":"Move component.","type":""},{"click":"javascript:Sitecore.PageModes.PageEditor.postRequest(\'webedit:componentoptions(referenceId={2339622D-093B-4258-8334-95979E41EFA6},renderingId={6CAAAD00-D87A-4B71-BA0E-763BA7003FE5},id={F142E1B0-EFD1-4730-BBC5-C30064AD19D9})\',null,false)","header":"Edit Experience Editor Options","icon":"/temp/iconcache/office/16x16/clipboard_check_edit.png","disabledIcon":"/temp/clipboard_check_edit_disabled16x16.png","isDivider":false,"tooltip":"Edit the Experience Editor options for the component.","type":"common"},{"click":"chrome:rendering:properties","header":"Edit component properties","icon":"/temp/iconcache/office/16x16/elements_branch.png","disabledIcon":"/temp/elements_branch_disabled16x16.png","isDivider":false,"tooltip":"Edit the properties for the component.","type":"common"},{"click":"javascript:Sitecore.PageModes.PageEditor.postRequest(\'webedit:setdatasource(referenceId={2339622D-093B-4258-8334-95979E41EFA6},renderingId={6CAAAD00-D87A-4B71-BA0E-763BA7003FE5},id={F142E1B0-EFD1-4730-BBC5-C30064AD19D9})\',null,false)","header":"{dsHeader}","icon":"/temp/iconcache/office/16x16/data.png","disabledIcon":"/temp/data_disabled16x16.png","isDivider":false,"tooltip":"{dsTooltip}","type":"datasourcesmenu"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Test the component.","type":"sticky"},{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"datasourcesmenu"},{"click":"chrome:rendering:delete","header":"Delete","icon":"/temp/iconcache/office/16x16/delete.png","disabledIcon":"/temp/delete_disabled16x16.png","isDivider":false,"tooltip":"Remove component.","type":"sticky"}],"contextItemUri":"sitecore://master/{F142E1B0-EFD1-4730-BBC5-C30064AD19D9}?lang=en&ver=1","custom":{"renderingID":"6CAAAD00D87A4B71BA0E763BA7003FE5","editable":"true"},"displayName":"HomeRendering","expandedDisplayName":null}', attributes: { - "type": "text/sitecore", - "chrometype": "rendering", - "kind": "open", - "hintname": "HomeRendering", - "id": "r_2339622D093B4258833495979E41EFA6", - "class": "scpm", - "data-selectable": "true", + type: 'text/sitecore', + chrometype: 'rendering', + kind: 'open', + hintname: 'HomeRendering', + id: 'r_2339622D093B4258833495979E41EFA6', + class: 'scpm', + 'data-selectable': 'true', }, }, { - uid: "2339622d-093b-4258-8334-95979e41efa6", - componentName: "Home", + uid: '2339622d-093b-4258-8334-95979e41efa6', + componentName: 'Home', fields: { message: { - value: "JavaScript all the things!", - editable: "JavaScript all the things!", + value: 'JavaScript all the things!', + editable: 'JavaScript all the things!', }, }, params: {}, placeholders: { - "page-header": [ + 'page-header': [ { - name: "code", - type: "text/sitecore", - contents: "{\"commands\":[{\"click\":\"chrome:placeholder:addControl\",\"header\":\"Add to here\",\"icon\":\"/temp/iconcache/office/16x16/add.png\",\"disabledIcon\":\"/temp/add_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Add a new rendering to the '{0}' placeholder.\",\"type\":\"\"},{\"click\":\"chrome:placeholder:editSettings\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/window_gear.png\",\"disabledIcon\":\"/temp/window_gear_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the placeholder settings.\",\"type\":\"\"}],\"contextItemUri\":\"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1\",\"custom\":{\"allowedRenderings\":[],\"editable\":\"true\"},\"displayName\":\"page-header\",\"expandedDisplayName\":null}", + name: 'code', + type: 'text/sitecore', + contents: + '{"commands":[{"click":"chrome:placeholder:addControl","header":"Add to here","icon":"/temp/iconcache/office/16x16/add.png","disabledIcon":"/temp/add_disabled16x16.png","isDivider":false,"tooltip":"Add a new rendering to the \'{0}\' placeholder.","type":""},{"click":"chrome:placeholder:editSettings","header":"","icon":"/temp/iconcache/office/16x16/window_gear.png","disabledIcon":"/temp/window_gear_disabled16x16.png","isDivider":false,"tooltip":"Edit the placeholder settings.","type":""}],"contextItemUri":"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1","custom":{"allowedRenderings":[],"editable":"true"},"displayName":"page-header","expandedDisplayName":null}', attributes: { - "type": "text/sitecore", - "chrometype": "placeholder", - "kind": "open", - "id": "page_header", - "key": "page-header", - "class": "scpm", - "data-selectable": "true", + type: 'text/sitecore', + chrometype: 'placeholder', + kind: 'open', + id: 'page_header', + key: 'page-header', + class: 'scpm', + 'data-selectable': 'true', }, }, { - name: "code", - type: "text/sitecore", - contents: "{\"commands\":[{\"click\":\"chrome:rendering:sort\",\"header\":\"Change position\",\"icon\":\"/temp/iconcache/office/16x16/document_size.png\",\"disabledIcon\":\"/temp/document_size_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Move component.\",\"type\":\"\"},{\"click\":\"javascript:Sitecore.PageModes.PageEditor.postRequest('webedit:componentoptions(referenceId={53C31A2A-75D5-43C6-A0B8-66B7C7859C30},renderingId={A46171E9-0E6E-4F4C-ABFD-0B2A642A2C11},id={362C0651-3686-429C-BB70-6113EDD6ECBD})',null,false)\",\"header\":\"Edit Experience Editor Options\",\"icon\":\"/temp/iconcache/office/16x16/clipboard_check_edit.png\",\"disabledIcon\":\"/temp/clipboard_check_edit_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the Experience Editor options for the component.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:properties\",\"header\":\"Edit component properties\",\"icon\":\"/temp/iconcache/office/16x16/elements_branch.png\",\"disabledIcon\":\"/temp/elements_branch_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the properties for the component.\",\"type\":\"common\"},{\"click\":\"javascript:Sitecore.PageModes.PageEditor.postRequest('webedit:setdatasource(referenceId={53C31A2A-75D5-43C6-A0B8-66B7C7859C30},renderingId={A46171E9-0E6E-4F4C-ABFD-0B2A642A2C11},id={362C0651-3686-429C-BB70-6113EDD6ECBD})',null,false)\",\"header\":\"{dsHeader}\",\"icon\":\"/temp/iconcache/office/16x16/data.png\",\"disabledIcon\":\"/temp/data_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"{dsTooltip}\",\"type\":\"datasourcesmenu\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Test the component.\",\"type\":\"sticky\"},{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"datasourcesmenu\"},{\"click\":\"chrome:rendering:delete\",\"header\":\"Delete\",\"icon\":\"/temp/iconcache/office/16x16/delete.png\",\"disabledIcon\":\"/temp/delete_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Remove component.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1\",\"custom\":{\"renderingID\":\"A46171E90E6E4F4CABFD0B2A642A2C11\",\"editable\":\"true\"},\"displayName\":\"JumbotronRendering\",\"expandedDisplayName\":null}", + name: 'code', + type: 'text/sitecore', + contents: + '{"commands":[{"click":"chrome:rendering:sort","header":"Change position","icon":"/temp/iconcache/office/16x16/document_size.png","disabledIcon":"/temp/document_size_disabled16x16.png","isDivider":false,"tooltip":"Move component.","type":""},{"click":"javascript:Sitecore.PageModes.PageEditor.postRequest(\'webedit:componentoptions(referenceId={53C31A2A-75D5-43C6-A0B8-66B7C7859C30},renderingId={A46171E9-0E6E-4F4C-ABFD-0B2A642A2C11},id={362C0651-3686-429C-BB70-6113EDD6ECBD})\',null,false)","header":"Edit Experience Editor Options","icon":"/temp/iconcache/office/16x16/clipboard_check_edit.png","disabledIcon":"/temp/clipboard_check_edit_disabled16x16.png","isDivider":false,"tooltip":"Edit the Experience Editor options for the component.","type":"common"},{"click":"chrome:rendering:properties","header":"Edit component properties","icon":"/temp/iconcache/office/16x16/elements_branch.png","disabledIcon":"/temp/elements_branch_disabled16x16.png","isDivider":false,"tooltip":"Edit the properties for the component.","type":"common"},{"click":"javascript:Sitecore.PageModes.PageEditor.postRequest(\'webedit:setdatasource(referenceId={53C31A2A-75D5-43C6-A0B8-66B7C7859C30},renderingId={A46171E9-0E6E-4F4C-ABFD-0B2A642A2C11},id={362C0651-3686-429C-BB70-6113EDD6ECBD})\',null,false)","header":"{dsHeader}","icon":"/temp/iconcache/office/16x16/data.png","disabledIcon":"/temp/data_disabled16x16.png","isDivider":false,"tooltip":"{dsTooltip}","type":"datasourcesmenu"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Test the component.","type":"sticky"},{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"datasourcesmenu"},{"click":"chrome:rendering:delete","header":"Delete","icon":"/temp/iconcache/office/16x16/delete.png","disabledIcon":"/temp/delete_disabled16x16.png","isDivider":false,"tooltip":"Remove component.","type":"sticky"}],"contextItemUri":"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1","custom":{"renderingID":"A46171E90E6E4F4CABFD0B2A642A2C11","editable":"true"},"displayName":"JumbotronRendering","expandedDisplayName":null}', attributes: { - "type": "text/sitecore", - "chrometype": "rendering", - "kind": "open", - "hintname": "JumbotronRendering", - "id": "r_53C31A2A75D543C6A0B866B7C7859C30", - "class": "scpm", - "data-selectable": "true", + type: 'text/sitecore', + chrometype: 'rendering', + kind: 'open', + hintname: 'JumbotronRendering', + id: 'r_53C31A2A75D543C6A0B866B7C7859C30', + class: 'scpm', + 'data-selectable': 'true', }, }, { - uid: "53c31a2a-75d5-43c6-a0b8-66b7c7859c30", - componentName: "Jumbotron", + uid: '53c31a2a-75d5-43c6-a0b8-66b7c7859c30', + componentName: 'Jumbotron', fields: { titleText: { - value: "Your Favorite Source of Free Bootstrap Themes!", - editable: "{\"commands\":[{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the variations.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"TitleText\",\"expandedDisplayName\":null}Your Favorite Source of Free Bootstrap Themes!", + value: 'Your Favorite Source of Free Bootstrap Themes!', + editable: + '{"commands":[{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Edit the variations.","type":"sticky"}],"contextItemUri":"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1","custom":{},"displayName":"TitleText","expandedDisplayName":null}Your Favorite Source of Free Bootstrap Themes!', }, body: { - value: "

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

", - editable: "{\"commands\":[{\"click\":\"chrome:field:editcontrol({command:\\\"webedit:edithtml\\\"})\",\"header\":\"Edit Text\",\"icon\":\"/temp/iconcache/office/16x16/pencil.png\",\"disabledIcon\":\"/temp/pencil_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the text\",\"type\":null},{\"click\":\"chrome:field:execute({command:\\\"bold\\\", userInterface:true, value:true})\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/font_style_bold.png\",\"disabledIcon\":\"/temp/font_style_bold_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Bold\",\"type\":null},{\"click\":\"chrome:field:execute({command:\\\"Italic\\\", userInterface:true, value:true})\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/font_style_italics.png\",\"disabledIcon\":\"/temp/font_style_italics_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Italic\",\"type\":null},{\"click\":\"chrome:field:execute({command:\\\"Underline\\\", userInterface:true, value:true})\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/font_style_underline.png\",\"disabledIcon\":\"/temp/font_style_underline_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Underline\",\"type\":null},{\"click\":\"chrome:field:insertlink\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/link.png\",\"disabledIcon\":\"/temp/link_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Insert a link into the text field.\",\"type\":null},{\"click\":\"chrome:field:insertimage\",\"header\":\"Insert image\",\"icon\":\"/temp/iconcache/office/16x16/photo_landscape.png\",\"disabledIcon\":\"/temp/photo_landscape_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Insert an image into the text field.\",\"type\":null},{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the variations.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"Body\",\"expandedDisplayName\":null}

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

", + value: + '

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

', + editable: + '{"commands":[{"click":"chrome:field:editcontrol({command:\\"webedit:edithtml\\"})","header":"Edit Text","icon":"/temp/iconcache/office/16x16/pencil.png","disabledIcon":"/temp/pencil_disabled16x16.png","isDivider":false,"tooltip":"Edit the text","type":null},{"click":"chrome:field:execute({command:\\"bold\\", userInterface:true, value:true})","header":"","icon":"/temp/iconcache/office/16x16/font_style_bold.png","disabledIcon":"/temp/font_style_bold_disabled16x16.png","isDivider":false,"tooltip":"Bold","type":null},{"click":"chrome:field:execute({command:\\"Italic\\", userInterface:true, value:true})","header":"","icon":"/temp/iconcache/office/16x16/font_style_italics.png","disabledIcon":"/temp/font_style_italics_disabled16x16.png","isDivider":false,"tooltip":"Italic","type":null},{"click":"chrome:field:execute({command:\\"Underline\\", userInterface:true, value:true})","header":"","icon":"/temp/iconcache/office/16x16/font_style_underline.png","disabledIcon":"/temp/font_style_underline_disabled16x16.png","isDivider":false,"tooltip":"Underline","type":null},{"click":"chrome:field:insertlink","header":"","icon":"/temp/iconcache/office/16x16/link.png","disabledIcon":"/temp/link_disabled16x16.png","isDivider":false,"tooltip":"Insert a link into the text field.","type":null},{"click":"chrome:field:insertimage","header":"Insert image","icon":"/temp/iconcache/office/16x16/photo_landscape.png","disabledIcon":"/temp/photo_landscape_disabled16x16.png","isDivider":false,"tooltip":"Insert an image into the text field.","type":null},{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Edit the variations.","type":"sticky"}],"contextItemUri":"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

', }, }, params: { - shade: "dark", - titleSize: "1", + shade: 'dark', + titleSize: '1', }, }, { - name: "code", - type: "text/sitecore", - contents: "", + name: 'code', + type: 'text/sitecore', + contents: '', attributes: { - type: "text/sitecore", - id: "scEnclosingTag_r_", - chrometype: "rendering", - kind: "close", - hintkey: "JumbotronRendering", - class: "scpm", + type: 'text/sitecore', + id: 'scEnclosingTag_r_', + chrometype: 'rendering', + kind: 'close', + hintkey: 'JumbotronRendering', + class: 'scpm', }, }, { - name: "code", - type: "text/sitecore", - contents: "", + name: 'code', + type: 'text/sitecore', + contents: '', attributes: { - type: "text/sitecore", - id: "scEnclosingTag_", - chrometype: "placeholder", - kind: "close", - hintname: "page-header", - class: "scpm", + type: 'text/sitecore', + id: 'scEnclosingTag_', + chrometype: 'placeholder', + kind: 'close', + hintname: 'page-header', + class: 'scpm', }, }, ], - "page-content": [ + 'page-content': [ { - name: "code", - type: "text/sitecore", - contents: "{\"commands\":[{\"click\":\"chrome:placeholder:addControl\",\"header\":\"Add to here\",\"icon\":\"/temp/iconcache/office/16x16/add.png\",\"disabledIcon\":\"/temp/add_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Add a new rendering to the '{0}' placeholder.\",\"type\":\"\"},{\"click\":\"chrome:placeholder:editSettings\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/window_gear.png\",\"disabledIcon\":\"/temp/window_gear_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the placeholder settings.\",\"type\":\"\"}],\"contextItemUri\":\"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1\",\"custom\":{\"allowedRenderings\":[],\"editable\":\"true\"},\"displayName\":\"page-content\",\"expandedDisplayName\":null}", + name: 'code', + type: 'text/sitecore', + contents: + '{"commands":[{"click":"chrome:placeholder:addControl","header":"Add to here","icon":"/temp/iconcache/office/16x16/add.png","disabledIcon":"/temp/add_disabled16x16.png","isDivider":false,"tooltip":"Add a new rendering to the \'{0}\' placeholder.","type":""},{"click":"chrome:placeholder:editSettings","header":"","icon":"/temp/iconcache/office/16x16/window_gear.png","disabledIcon":"/temp/window_gear_disabled16x16.png","isDivider":false,"tooltip":"Edit the placeholder settings.","type":""}],"contextItemUri":"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1","custom":{"allowedRenderings":[],"editable":"true"},"displayName":"page-content","expandedDisplayName":null}', attributes: { - "type": "text/sitecore", - "chrometype": "placeholder", - "kind": "open", - "id": "page_content", - "key": "page-content", - "class": "scpm", - "data-selectable": "true", + type: 'text/sitecore', + chrometype: 'placeholder', + kind: 'open', + id: 'page_content', + key: 'page-content', + class: 'scpm', + 'data-selectable': 'true', }, }, { - name: "code", - type: "text/sitecore", - contents: "{\"commands\":[{\"click\":\"chrome:rendering:sort\",\"header\":\"Change position\",\"icon\":\"/temp/iconcache/office/16x16/document_size.png\",\"disabledIcon\":\"/temp/document_size_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Move component.\",\"type\":\"\"},{\"click\":\"javascript:Sitecore.PageModes.PageEditor.postRequest('webedit:componentoptions(referenceId={6701AC71-845D-4DE4-BF8E-1F4FEDDF8908},renderingId={6C254609-5347-4768-9FFB-1FF620320CE9},id={199C8794-311F-4B50-9BDC-88AEFB3EE172})',null,false)\",\"header\":\"Edit Experience Editor Options\",\"icon\":\"/temp/iconcache/office/16x16/clipboard_check_edit.png\",\"disabledIcon\":\"/temp/clipboard_check_edit_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the Experience Editor options for the component.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:properties\",\"header\":\"Edit component properties\",\"icon\":\"/temp/iconcache/office/16x16/elements_branch.png\",\"disabledIcon\":\"/temp/elements_branch_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the properties for the component.\",\"type\":\"common\"},{\"click\":\"javascript:Sitecore.PageModes.PageEditor.postRequest('webedit:setdatasource(referenceId={6701AC71-845D-4DE4-BF8E-1F4FEDDF8908},renderingId={6C254609-5347-4768-9FFB-1FF620320CE9},id={199C8794-311F-4B50-9BDC-88AEFB3EE172})',null,false)\",\"header\":\"{dsHeader}\",\"icon\":\"/temp/iconcache/office/16x16/data.png\",\"disabledIcon\":\"/temp/data_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"{dsTooltip}\",\"type\":\"datasourcesmenu\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Test the component.\",\"type\":\"sticky\"},{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"datasourcesmenu\"},{\"click\":\"chrome:rendering:delete\",\"header\":\"Delete\",\"icon\":\"/temp/iconcache/office/16x16/delete.png\",\"disabledIcon\":\"/temp/delete_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Remove component.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{199C8794-311F-4B50-9BDC-88AEFB3EE172}?lang=en&ver=1\",\"custom\":{\"renderingID\":\"6C254609534747689FFB1FF620320CE9\",\"editable\":\"true\"},\"displayName\":\"DownloadCalloutRendering\",\"expandedDisplayName\":null}", + name: 'code', + type: 'text/sitecore', + contents: + '{"commands":[{"click":"chrome:rendering:sort","header":"Change position","icon":"/temp/iconcache/office/16x16/document_size.png","disabledIcon":"/temp/document_size_disabled16x16.png","isDivider":false,"tooltip":"Move component.","type":""},{"click":"javascript:Sitecore.PageModes.PageEditor.postRequest(\'webedit:componentoptions(referenceId={6701AC71-845D-4DE4-BF8E-1F4FEDDF8908},renderingId={6C254609-5347-4768-9FFB-1FF620320CE9},id={199C8794-311F-4B50-9BDC-88AEFB3EE172})\',null,false)","header":"Edit Experience Editor Options","icon":"/temp/iconcache/office/16x16/clipboard_check_edit.png","disabledIcon":"/temp/clipboard_check_edit_disabled16x16.png","isDivider":false,"tooltip":"Edit the Experience Editor options for the component.","type":"common"},{"click":"chrome:rendering:properties","header":"Edit component properties","icon":"/temp/iconcache/office/16x16/elements_branch.png","disabledIcon":"/temp/elements_branch_disabled16x16.png","isDivider":false,"tooltip":"Edit the properties for the component.","type":"common"},{"click":"javascript:Sitecore.PageModes.PageEditor.postRequest(\'webedit:setdatasource(referenceId={6701AC71-845D-4DE4-BF8E-1F4FEDDF8908},renderingId={6C254609-5347-4768-9FFB-1FF620320CE9},id={199C8794-311F-4B50-9BDC-88AEFB3EE172})\',null,false)","header":"{dsHeader}","icon":"/temp/iconcache/office/16x16/data.png","disabledIcon":"/temp/data_disabled16x16.png","isDivider":false,"tooltip":"{dsTooltip}","type":"datasourcesmenu"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Test the component.","type":"sticky"},{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"datasourcesmenu"},{"click":"chrome:rendering:delete","header":"Delete","icon":"/temp/iconcache/office/16x16/delete.png","disabledIcon":"/temp/delete_disabled16x16.png","isDivider":false,"tooltip":"Remove component.","type":"sticky"}],"contextItemUri":"sitecore://master/{199C8794-311F-4B50-9BDC-88AEFB3EE172}?lang=en&ver=1","custom":{"renderingID":"6C254609534747689FFB1FF620320CE9","editable":"true"},"displayName":"DownloadCalloutRendering","expandedDisplayName":null}', attributes: { - "type": "text/sitecore", - "chrometype": "rendering", - "kind": "open", - "hintname": "DownloadCalloutRendering", - "id": "r_6701AC71845D4DE4BF8E1F4FEDDF8908", - "class": "scpm", - "data-selectable": "true", + type: 'text/sitecore', + chrometype: 'rendering', + kind: 'open', + hintname: 'DownloadCalloutRendering', + id: 'r_6701AC71845D4DE4BF8E1F4FEDDF8908', + class: 'scpm', + 'data-selectable': 'true', }, }, { - uid: "6701ac71-845d-4de4-bf8e-1f4feddf8908", - componentName: "DownloadCallout", + uid: '6701ac71-845d-4de4-bf8e-1f4feddf8908', + componentName: 'DownloadCallout', fields: { linkText: { - value: "Download", - editable: "{\"commands\":[{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the variations.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{199C8794-311F-4B50-9BDC-88AEFB3EE172}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"LinkText\",\"expandedDisplayName\":null}Download", + value: 'Download', + editable: + '{"commands":[{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Edit the variations.","type":"sticky"}],"contextItemUri":"sitecore://master/{199C8794-311F-4B50-9BDC-88AEFB3EE172}?lang=en&ver=1","custom":{},"displayName":"LinkText","expandedDisplayName":null}Download', }, }, params: {}, }, { - name: "div", - type: "", - contents: "
", + name: 'div', + type: '', + contents: + '
', attributes: { style: { - backgroundColor: "white", + backgroundColor: 'white', opacity: 0.35, - filter: "alpha(opacity=35)", + filter: 'alpha(opacity=35)', }, }, }, { - name: "code", - type: "text/sitecore", - contents: "", + name: 'code', + type: 'text/sitecore', + contents: '', attributes: { - type: "text/sitecore", - id: "scEnclosingTag_r_", - chrometype: "rendering", - kind: "close", - hintkey: "DownloadCalloutRendering", - class: "scpm", + type: 'text/sitecore', + id: 'scEnclosingTag_r_', + chrometype: 'rendering', + kind: 'close', + hintkey: 'DownloadCalloutRendering', + class: 'scpm', }, }, { - name: "code", - type: "text/sitecore", - contents: "", + name: 'code', + type: 'text/sitecore', + contents: '', attributes: { - type: "text/sitecore", - id: "scEnclosingTag_", - chrometype: "placeholder", - kind: "close", - hintname: "page-content", - class: "scpm", + type: 'text/sitecore', + id: 'scEnclosingTag_', + chrometype: 'placeholder', + kind: 'close', + hintname: 'page-content', + class: 'scpm', }, }, ], }, }, { - name: "code", - type: "text/sitecore", - contents: "", + name: 'code', + type: 'text/sitecore', + contents: '', attributes: { - type: "text/sitecore", - id: "scEnclosingTag_r_", - chrometype: "rendering", - kind: "close", - hintkey: "HomeRendering", - class: "scpm", + type: 'text/sitecore', + id: 'scEnclosingTag_r_', + chrometype: 'rendering', + kind: 'close', + hintkey: 'HomeRendering', + class: 'scpm', }, }, { - name: "code", - type: "text/sitecore", - contents: "", + name: 'code', + type: 'text/sitecore', + contents: '', attributes: { - type: "text/sitecore", - id: "scEnclosingTag_", - chrometype: "placeholder", - kind: "close", - hintname: "main", - class: "scpm", + type: 'text/sitecore', + id: 'scEnclosingTag_', + chrometype: 'placeholder', + kind: 'close', + hintname: 'main', + class: 'scpm', }, }, ], }, fields: { - key: "{\"commands\":[{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the variations.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"Key\",\"expandedDisplayName\":null}This is a some sample <p>field data</p> o'boy! "wow"", + key: + '{"commands":[{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Edit the variations.","type":"sticky"}],"contextItemUri":"sitecore://master/{9BCF4A17-2EC7-4160-9504-5ABD096B46AE}?lang=en&ver=1","custom":{},"displayName":"Key","expandedDisplayName":null}This is a some sample <p>field data</p> o'boy! "wow"', }, }, }, }; -export const imageField = "{\"commands\":[{\"click\":\"chrome:field:editcontrol({command:\\\"webedit: chooseimage\\\"})\",\"header\":\"Choose Image\",\"icon\":\"/sitecore/shell/themes/standard/custom/16x16/photo_landscape2.png\",\"disabledIcon\":\"/temp/photo_landscape2_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Choose an image.\",\"type\":\"\"},{\"click\":\"chrome:field:editcontrol({command:\\\"webedit: editimage\\\"})\",\"header\":\"Properties\",\"icon\":\"/sitecore/shell/themes/standard/custom/16x16/photo_landscape2_edit.png\",\"disabledIcon\":\"/temp/photo_landscape2_edit_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Modify image appearance.\",\"type\":\"\"},{\"click\":\"chrome:field:editcontrol({command:\\\"webedit: clearimage\\\"})\",\"header\":\"Clear\",\"icon\":\"/sitecore/shell/themes/standard/custom/16x16/photo_landscape2_delete.png\",\"disabledIcon\":\"/temp/photo_landscape2_delete_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Remove the image.\",\"type\":\"\"},{\"click\":\"chrome:common:edititem({command:\\\"webedit: open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit: personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit: editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the variations.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{F5201E35-7674-44EB-B903-E52488A0EB5A}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"Image\",\"expandedDisplayName\":null}\"\""; -export const richTextField = "{\"commands\":[{\"click\":\"chrome:field:editcontrol({command:\\\"webedit:edithtml\\\"})\",\"header\":\"Edit Text\",\"icon\":\"/temp/iconcache/office/16x16/pencil.png\",\"disabledIcon\":\"/temp/pencil_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the text\",\"type\":null},{\"click\":\"chrome:field:execute({command:\\\"bold\\\", userInterface:true, value:true})\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/font_style_bold.png\",\"disabledIcon\":\"/temp/font_style_bold_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Bold\",\"type\":null},{\"click\":\"chrome:field:execute({command:\\\"Italic\\\", userInterface:true, value:true})\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/font_style_italics.png\",\"disabledIcon\":\"/temp/font_style_italics_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Italic\",\"type\":null},{\"click\":\"chrome:field:execute({command:\\\"Underline\\\", userInterface:true, value:true})\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/font_style_underline.png\",\"disabledIcon\":\"/temp/font_style_underline_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Underline\",\"type\":null},{\"click\":\"chrome:field:insertlink\",\"header\":\"\",\"icon\":\"/temp/iconcache/office/16x16/link.png\",\"disabledIcon\":\"/temp/link_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Insert a link into the text field.\",\"type\":null},{\"click\":\"chrome:field:insertimage\",\"header\":\"Insert image\",\"icon\":\"/temp/iconcache/office/16x16/photo_landscape.png\",\"disabledIcon\":\"/temp/photo_landscape_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Insert an image into the text field.\",\"type\":null},{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"/temp/iconcache/office/16x16/cubes.png\",\"disabledIcon\":\"/temp/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"/temp/iconcache/office/16x16/users_family.png\",\"disabledIcon\":\"/temp/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"/temp/iconcache/office/16x16/windows.png\",\"disabledIcon\":\"/temp/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the variations.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"Body\",\"expandedDisplayName\":null}

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

"; -export const generalLinkField = "{\"commands\":[{\"click\":\"chrome:field:editcontrol({command:\\\"webedit:editlink\\\"})\",\"header\":\"Edit link\",\"icon\":\"\/temp\/iconcache\/networkv2\/16x16\/link_edit.png\",\"disabledIcon\":\"\/temp\/link_edit_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edits the link destination and appearance\",\"type\":\"\"},{\"click\":\"chrome:field:editcontrol({command:\\\"webedit:clearlink\\\"})\",\"header\":\"Clear Link\",\"icon\":\"\/temp\/iconcache\/networkv2\/16x16\/link_delete.png\",\"disabledIcon\":\"\/temp\/link_delete_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Clears The Link\",\"type\":\"\"},{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"\/temp\/iconcache\/office\/16x16\/cubes.png\",\"disabledIcon\":\"\/temp\/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"\/temp\/iconcache\/office\/16x16\/users_family.png\",\"disabledIcon\":\"\/temp\/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"},{\"click\":\"chrome:rendering:editvariations({command:\\\"webedit:editvariations\\\"})\",\"header\":\"Edit variations\",\"icon\":\"\/temp\/iconcache\/office\/16x16\/windows.png\",\"disabledIcon\":\"\/temp\/windows_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the variations.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore:\/\/master\/{5DE985D8-565B-4437-B6FF-0CED110BEDE6}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"link\",\"expandedDisplayName\":null}<\/code>hello world<\/a><\/code>"; -export const textField = "{\"commands\":[{\"click\":\"chrome:common:edititem({command:\\\"webedit:open\\\"})\",\"header\":\"Edit the related item\",\"icon\":\"\/temp\/iconcache\/office\/16x16\/cubes.png\",\"disabledIcon\":\"\/temp\/cubes_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Edit the related item in the Content Editor.\",\"type\":\"common\"},{\"click\":\"chrome:rendering:personalize({command:\\\"webedit:personalize\\\"})\",\"header\":\"Personalize\",\"icon\":\"\/temp\/iconcache\/office\/16x16\/users_family.png\",\"disabledIcon\":\"\/temp\/users_family_disabled16x16.png\",\"isDivider\":false,\"tooltip\":\"Create or edit personalization for this component.\",\"type\":\"sticky\"}],\"contextItemUri\":\"sitecore:\/\/master\/{D0BC9D8D-32A3-4E0B-B4A5-1F9A1DCEC31A}?lang=en&ver=1\",\"custom\":{},\"displayName\":\"Title\",\"expandedDisplayName\":null}<\/span>Sturdy Templates<\/span>"; +export const imageField = + '{"commands":[{"click":"chrome:field:editcontrol({command:\\"webedit: chooseimage\\"})","header":"Choose Image","icon":"/sitecore/shell/themes/standard/custom/16x16/photo_landscape2.png","disabledIcon":"/temp/photo_landscape2_disabled16x16.png","isDivider":false,"tooltip":"Choose an image.","type":""},{"click":"chrome:field:editcontrol({command:\\"webedit: editimage\\"})","header":"Properties","icon":"/sitecore/shell/themes/standard/custom/16x16/photo_landscape2_edit.png","disabledIcon":"/temp/photo_landscape2_edit_disabled16x16.png","isDivider":false,"tooltip":"Modify image appearance.","type":""},{"click":"chrome:field:editcontrol({command:\\"webedit: clearimage\\"})","header":"Clear","icon":"/sitecore/shell/themes/standard/custom/16x16/photo_landscape2_delete.png","disabledIcon":"/temp/photo_landscape2_delete_disabled16x16.png","isDivider":false,"tooltip":"Remove the image.","type":""},{"click":"chrome:common:edititem({command:\\"webedit: open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit: personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit: editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Edit the variations.","type":"sticky"}],"contextItemUri":"sitecore://master/{F5201E35-7674-44EB-B903-E52488A0EB5A}?lang=en&ver=1","custom":{},"displayName":"Image","expandedDisplayName":null}'; +export const richTextField = + '{"commands":[{"click":"chrome:field:editcontrol({command:\\"webedit:edithtml\\"})","header":"Edit Text","icon":"/temp/iconcache/office/16x16/pencil.png","disabledIcon":"/temp/pencil_disabled16x16.png","isDivider":false,"tooltip":"Edit the text","type":null},{"click":"chrome:field:execute({command:\\"bold\\", userInterface:true, value:true})","header":"","icon":"/temp/iconcache/office/16x16/font_style_bold.png","disabledIcon":"/temp/font_style_bold_disabled16x16.png","isDivider":false,"tooltip":"Bold","type":null},{"click":"chrome:field:execute({command:\\"Italic\\", userInterface:true, value:true})","header":"","icon":"/temp/iconcache/office/16x16/font_style_italics.png","disabledIcon":"/temp/font_style_italics_disabled16x16.png","isDivider":false,"tooltip":"Italic","type":null},{"click":"chrome:field:execute({command:\\"Underline\\", userInterface:true, value:true})","header":"","icon":"/temp/iconcache/office/16x16/font_style_underline.png","disabledIcon":"/temp/font_style_underline_disabled16x16.png","isDivider":false,"tooltip":"Underline","type":null},{"click":"chrome:field:insertlink","header":"","icon":"/temp/iconcache/office/16x16/link.png","disabledIcon":"/temp/link_disabled16x16.png","isDivider":false,"tooltip":"Insert a link into the text field.","type":null},{"click":"chrome:field:insertimage","header":"Insert image","icon":"/temp/iconcache/office/16x16/photo_landscape.png","disabledIcon":"/temp/photo_landscape_disabled16x16.png","isDivider":false,"tooltip":"Insert an image into the text field.","type":null},{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Edit the variations.","type":"sticky"}],"contextItemUri":"sitecore://master/{362C0651-3686-429C-BB70-6113EDD6ECBD}?lang=en&ver=1","custom":{},"displayName":"Body","expandedDisplayName":null}

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

'; +export const generalLinkField = + '{"commands":[{"click":"chrome:field:editcontrol({command:\\"webedit:editlink\\"})","header":"Edit link","icon":"/temp/iconcache/networkv2/16x16/link_edit.png","disabledIcon":"/temp/link_edit_disabled16x16.png","isDivider":false,"tooltip":"Edits the link destination and appearance","type":""},{"click":"chrome:field:editcontrol({command:\\"webedit:clearlink\\"})","header":"Clear Link","icon":"/temp/iconcache/networkv2/16x16/link_delete.png","disabledIcon":"/temp/link_delete_disabled16x16.png","isDivider":false,"tooltip":"Clears The Link","type":""},{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"},{"click":"chrome:rendering:editvariations({command:\\"webedit:editvariations\\"})","header":"Edit variations","icon":"/temp/iconcache/office/16x16/windows.png","disabledIcon":"/temp/windows_disabled16x16.png","isDivider":false,"tooltip":"Edit the variations.","type":"sticky"}],"contextItemUri":"sitecore://master/{5DE985D8-565B-4437-B6FF-0CED110BEDE6}?lang=en&ver=1","custom":{},"displayName":"link","expandedDisplayName":null}
hello world'; +export const textField = + '{"commands":[{"click":"chrome:common:edititem({command:\\"webedit:open\\"})","header":"Edit the related item","icon":"/temp/iconcache/office/16x16/cubes.png","disabledIcon":"/temp/cubes_disabled16x16.png","isDivider":false,"tooltip":"Edit the related item in the Content Editor.","type":"common"},{"click":"chrome:rendering:personalize({command:\\"webedit:personalize\\"})","header":"Personalize","icon":"/temp/iconcache/office/16x16/users_family.png","disabledIcon":"/temp/users_family_disabled16x16.png","isDivider":false,"tooltip":"Create or edit personalization for this component.","type":"sticky"}],"contextItemUri":"sitecore://master/{D0BC9D8D-32A3-4E0B-B4A5-1F9A1DCEC31A}?lang=en&ver=1","custom":{},"displayName":"Title","expandedDisplayName":null}Sturdy Templates'; diff --git a/packages/sitecore-jss-angular/src/testData/non-ee-data.ts b/packages/sitecore-jss-angular/src/testData/non-ee-data.ts index ef8bc7999c..d1f786b3fe 100644 --- a/packages/sitecore-jss-angular/src/testData/non-ee-data.ts +++ b/packages/sitecore-jss-angular/src/testData/non-ee-data.ts @@ -1,54 +1,53 @@ // these rules enforce "correct" JSON format instead of normal object format -/* tslint:disable:object-literal-key-quotes quotemark trailing-comma one-line max-line-length prettier */ - export const convertedDevData = { sitecore: { context: { pageEditing: false, }, route: { - name: "home", - displayName: "Home", + name: 'home', + displayName: 'Home', placeholders: { main: [ { - componentName: "Home", + componentName: 'Home', fields: { message: { - value: "JavaScript all the things!", + value: 'JavaScript all the things!', }, }, - uid: "2339622d-093b-4258-8334-95979e41efa6", + uid: '2339622d-093b-4258-8334-95979e41efa6', renderingParams: [], placeholders: { - "page-header": [ + 'page-header': [ { - componentName: "Jumbotron", + componentName: 'Jumbotron', params: { - shade: "dark", - titleSize: "1", + shade: 'dark', + titleSize: '1', }, fields: { titleText: { - value: "Your Favorite Source of Free Bootstrap Themes!", + value: 'Your Favorite Source of Free Bootstrap Themes!', }, body: { - value: "

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

", + value: + '

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

', }, }, - uid: "53c31a2a-75d5-43c6-a0b8-66b7c7859c30", + uid: '53c31a2a-75d5-43c6-a0b8-66b7c7859c30', }, ], - "page-content": [ + 'page-content': [ { - componentName: "DownloadCallout", + componentName: 'DownloadCallout', fields: { linkText: { - value: "Download", + value: 'Download', }, }, - uid: "6701ac71-845d-4de4-bf8e-1f4feddf8908", + uid: '6701ac71-845d-4de4-bf8e-1f4feddf8908', params: [], }, ], @@ -57,7 +56,7 @@ export const convertedDevData = { ], }, fields: { - key: "This is a some sample <p>field data</p> o'boy! "wow"", + key: 'This is a some sample <p>field data</p> o'boy! "wow"', }, }, }, @@ -69,57 +68,59 @@ export const convertedLayoutServiceData = { pageEditing: false, }, route: { - name: "home", - displayName: "Home", + name: 'home', + displayName: 'Home', placeholders: { main: [ { - componentName: "Home", + componentName: 'Home', fields: { message: { - value: "JavaScript all the things!", - editable: "JavaScript all the things!", + value: 'JavaScript all the things!', + editable: 'JavaScript all the things!', }, }, - uid: "2339622d-093b-4258-8334-95979e41efa6", + uid: '2339622d-093b-4258-8334-95979e41efa6', renderingParams: [], placeholders: { - "page-header": [ + 'page-header': [ { - componentName: "Jumbotron", + componentName: 'Jumbotron', fields: { titleText: { - value: "Your Favorite Source of Free Bootstrap Themes!", - editable: "Your Favorite Source of Free Bootstrap Themes!", + value: 'Your Favorite Source of Free Bootstrap Themes!', + editable: 'Your Favorite Source of Free Bootstrap Themes!', }, body: { - value: "

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

", - editable: "

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

", + value: + '

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

', + editable: + '

Start Bootstrap can help you build better websites using the Bootstrap CSS framework! Just download your template and start going, no strings attached!

', }, }, params: { shade: { - value: "dark", - editable: "dark", + value: 'dark', + editable: 'dark', }, titleSize: { - value: "1", - editable: "1", + value: '1', + editable: '1', }, }, - uid: "53c31a2a-75d5-43c6-a0b8-66b7c7859c30", + uid: '53c31a2a-75d5-43c6-a0b8-66b7c7859c30', }, ], - "page-content": [ + 'page-content': [ { - componentName: "DownloadCallout", + componentName: 'DownloadCallout', fields: { linkText: { - value: "Download", - editable: "Download", + value: 'Download', + editable: 'Download', }, }, - uid: "6701ac71-845d-4de4-bf8e-1f4feddf8908", + uid: '6701ac71-845d-4de4-bf8e-1f4feddf8908', params: [], }, ], @@ -128,7 +129,7 @@ export const convertedLayoutServiceData = { ], }, fields: { - key: "This is a some sample <p>field data</p> o'boy! "wow"", + key: 'This is a some sample <p>field data</p> o'boy! "wow"', }, }, }, diff --git a/packages/sitecore-jss-angular/tslint.json b/packages/sitecore-jss-angular/tslint.json deleted file mode 100644 index 6dc74dbc44..0000000000 --- a/packages/sitecore-jss-angular/tslint.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": [ - "../../tslint.json" - ], - "rulesDirectory": [ - "node_modules/codelyzer" - ] -} diff --git a/packages/sitecore-jss-cli/.eslintrc b/packages/sitecore-jss-cli/.eslintrc new file mode 100644 index 0000000000..5c9d573e39 --- /dev/null +++ b/packages/sitecore-jss-cli/.eslintrc @@ -0,0 +1,6 @@ +{ + "extends": "../../.eslintrc", + "rules": { + "@typescript-eslint/explicit-module-boundary-types": "off" + } +} \ No newline at end of file diff --git a/packages/sitecore-jss-cli/.npmignore b/packages/sitecore-jss-cli/.npmignore index 5a13aa45a8..2277964bfa 100644 --- a/packages/sitecore-jss-cli/.npmignore +++ b/packages/sitecore-jss-cli/.npmignore @@ -4,12 +4,11 @@ sitecore index.test.js .vscode .babelrc -.eslintrc.json +.eslintrc .npmignore .gitignore jsconfig.json tsconfig.json -tslint.json npm-debug* !/types .nycrc diff --git a/packages/sitecore-jss-cli/package-lock.json b/packages/sitecore-jss-cli/package-lock.json index dd318e8fff..c6d69e0ea5 100644 --- a/packages/sitecore-jss-cli/package-lock.json +++ b/packages/sitecore-jss-cli/package-lock.json @@ -30,6 +30,38 @@ "js-tokens": "^4.0.0" } }, + "@eslint/eslintrc": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.2.2.tgz", + "integrity": "sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -252,6 +284,18 @@ "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, "aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -366,6 +410,12 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -430,6 +480,12 @@ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -555,6 +611,15 @@ "assert-plus": "^1.0.0" } }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -587,6 +652,12 @@ "type-detect": "^4.0.0" } }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -641,6 +712,15 @@ "path-type": "^4.0.0" } }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -655,6 +735,15 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -756,12 +845,242 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "eslint": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.16.0.tgz", + "integrity": "sha512-iVWPS785RuDA4dWuhhgXTNrGxHHK3a8HLSMBgbbU59ruJDubUraXN8N5rn7kb8tG6sjg74eE0RA3YWT51eusEw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.2.2", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^6.0.0", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.4", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "semver": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", + "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -796,6 +1115,12 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, "fastq": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", @@ -805,6 +1130,15 @@ "reusify": "^1.0.4" } }, + "file-entry-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz", + "integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -831,6 +1165,22 @@ "is-buffer": "~2.0.3" } }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.0.tgz", + "integrity": "sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA==", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -873,6 +1223,12 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -914,6 +1270,23 @@ "is-glob": "^4.0.1" } }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, "globby": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", @@ -1012,6 +1385,22 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -1220,6 +1609,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -1267,6 +1662,16 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, "lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", @@ -1362,6 +1767,15 @@ "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -1671,6 +2085,18 @@ } } }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "nise": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", @@ -1763,6 +2189,20 @@ "wrappy": "1" } }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -1798,6 +2238,15 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse-json": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", @@ -1853,11 +2302,23 @@ "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", "dev": true }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "promise.allsettled": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", @@ -1998,6 +2459,12 @@ "strip-indent": "^3.0.0" } }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -2050,6 +2517,12 @@ "path-parse": "^1.0.6" } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -2148,6 +2621,49 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2285,6 +2801,64 @@ "has-flag": "^3.0.0" } }, + "table": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/table/-/table-6.0.4.tgz", + "integrity": "sha512-sBT4xRLdALd+NFBvwOz8bw4b15htyythha+q+DVZqy2RS08PPC8O2sZFgJYEY7bJvbCFKccs+WIZ/cd+xxTWCw==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "lodash": "^4.17.20", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, "tmp": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", @@ -2353,6 +2927,15 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, "type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", @@ -2394,6 +2977,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8-compile-cache": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "dev": true + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -2463,6 +3052,12 @@ } } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "workerpool": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", @@ -2489,6 +3084,12 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yargs": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", diff --git a/packages/sitecore-jss-cli/package.json b/packages/sitecore-jss-cli/package.json index ab4894f8c1..b3621047d9 100644 --- a/packages/sitecore-jss-cli/package.json +++ b/packages/sitecore-jss-cli/package.json @@ -6,7 +6,7 @@ "build": "npm run clean && tsc", "watch": "npm run build -- --watch", "clean": "del-cli dist types", - "lint": "tslint -p . -c ../../tslint.json \"src/**/*.ts\"", + "lint": "eslint --fix ./src/**/*.ts", "prepublishOnly": "npm run build", "jss": "node ./dist/bin/jss.js", "test": "mocha --require ts-node/register \"./src/**/*.test.ts\"", @@ -60,6 +60,7 @@ "chai": "^4.2.0", "cross-env": "^6.0.3", "del-cli": "^3.0.1", + "eslint": "^7.15.0", "mocha": "^8.1.3", "sinon": "^7.5.0", "ts-node": "^8.4.1", diff --git a/packages/sitecore-jss-cli/src/cli-shared.ts b/packages/sitecore-jss-cli/src/cli-shared.ts index b3eb3d82bb..871c417176 100644 --- a/packages/sitecore-jss-cli/src/cli-shared.ts +++ b/packages/sitecore-jss-cli/src/cli-shared.ts @@ -7,11 +7,17 @@ process.on('unhandledRejection', (err) => { throw err; }); -export default function cli(commands: { [key: string]: CommandModule & { disableStrictArgs?: boolean} }) { +/** + * @param {any} commands + */ +export default function cli(commands: { + [key: string]: CommandModule & { disableStrictArgs?: boolean }; +}) { let appCommands = yargs.usage('$0 '); // this prevents yargs from showing help with 'jss.js' as the base command // when the command is just 'jss' as a global bin + // eslint-disable-next-line @typescript-eslint/no-explicit-any (appCommands as any).$0 = 'jss'; for (const cmd of Object.keys(commands)) { diff --git a/packages/sitecore-jss-cli/src/cli.global.ts b/packages/sitecore-jss-cli/src/cli.global.ts index b2744dc23a..8e273ed881 100644 --- a/packages/sitecore-jss-cli/src/cli.global.ts +++ b/packages/sitecore-jss-cli/src/cli.global.ts @@ -1,8 +1,10 @@ import cli from './cli-shared'; import * as commands from './scripts/index.global'; -// implements CLI commands when executed from a globally installed node_modules folder - +/** + * implements CLI commands when executed from a globally installed node_modules folder + */ export default function() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any cli(commands as any); } diff --git a/packages/sitecore-jss-cli/src/cli.ts b/packages/sitecore-jss-cli/src/cli.ts index ede4b8d026..f1e5da04ee 100644 --- a/packages/sitecore-jss-cli/src/cli.ts +++ b/packages/sitecore-jss-cli/src/cli.ts @@ -4,6 +4,9 @@ import resolvePackage from './resolve-package'; import runPackageScript from './run-package-script'; import * as commands from './scripts'; +/** + * Get package script commands + */ async function getPackageScriptCommands() { const packageJson = await resolvePackage(); const result: { [key: string]: CommandModule } = {}; @@ -23,6 +26,7 @@ async function getPackageScriptCommands() { builder: {}, disableStrictArgs: true, handler: (argv: Arguments) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any if ((argv as any)._[0]) { runPackageScript(process.argv.slice(2)); } @@ -35,7 +39,9 @@ async function getPackageScriptCommands() { return result; } -// implements CLI commands when executed from a local node_modules folder +/** + * implements CLI commands when executed from a local node_modules folder + */ export default async function() { const packageScripts = await getPackageScriptCommands(); diff --git a/packages/sitecore-jss-cli/src/create/create.source.folder.ts b/packages/sitecore-jss-cli/src/create/create.source.folder.ts index cdea111c30..1bd7ef53d8 100644 --- a/packages/sitecore-jss-cli/src/create/create.source.folder.ts +++ b/packages/sitecore-jss-cli/src/create/create.source.folder.ts @@ -3,10 +3,12 @@ import fs from 'fs-extra'; import path from 'path'; export class FolderSource { + // eslint-disable-next-line @typescript-eslint/no-explicit-any argv: any; destinationPath: string; templatePath = ''; + // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(argv: any, destinationPath: string) { this.argv = argv; this.destinationPath = destinationPath; diff --git a/packages/sitecore-jss-cli/src/create/create.source.github.ts b/packages/sitecore-jss-cli/src/create/create.source.github.ts index afbbe880cb..bf60d17d63 100644 --- a/packages/sitecore-jss-cli/src/create/create.source.github.ts +++ b/packages/sitecore-jss-cli/src/create/create.source.github.ts @@ -9,9 +9,11 @@ export class GitHubSource { branch: string; githubListApi: string; githubDownloadUrl: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any argv: any; destinationPath: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(argv: any, destinationPath: string) { const repository = argv.repository || 'Sitecore/jss'; const branch = argv.branch || 'master'; @@ -26,7 +28,7 @@ export class GitHubSource { async getFromSource() { await this.verifyTemplate(); - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { tmp.setGracefulCleanup(); // unsafeCleanup just means it'll kill any files left in the temp folder @@ -50,40 +52,51 @@ export class GitHubSource { async verifyTemplate() { return new Promise((resolve) => { - // tslint:disable-next-line:max-line-length - request.get(this.githubListApi, { proxy: this.argv.proxy, json: true, headers: { 'User-Agent': 'SitecoreJSSCLI' } }, (error, response, body) => { - if (error) { - console.error(chalk.red(error)); - process.exit(1); - } - - if (response.statusCode !== 200) { - console.error(chalk.red(`Server sent ${response.statusCode} ${response.statusMessage} while enumerating templates.`)); - process.exit(1); - } - - if (!body || !Array.isArray(body)) { - console.log(body); - console.error(chalk.red('Received unexpected response from server while trying to enumerate templates.')); - process.exit(1); - } - - const apiResult: Array<{ name: string }> = body; - if (!apiResult.some((result) => result.name === this.argv.template)) { - console.error(chalk.red(`Template ${this.argv.template} did not exist.`)); - console.error(chalk.red('Valid templates are: ')); - apiResult.forEach((result) => { - if (result.name === 'node-headless-ssr-proxy') { - return; - } - - console.error(chalk.yellow(result.name)); - }); - process.exit(1); - } + request.get( + this.githubListApi, + { proxy: this.argv.proxy, json: true, headers: { 'User-Agent': 'SitecoreJSSCLI' } }, + (error, response, body) => { + if (error) { + console.error(chalk.red(error)); + process.exit(1); + } + + if (response.statusCode !== 200) { + console.error( + chalk.red( + `Server sent ${response.statusCode} ${response.statusMessage} while enumerating templates.` + ) + ); + process.exit(1); + } + + if (!body || !Array.isArray(body)) { + console.log(body); + console.error( + chalk.red( + 'Received unexpected response from server while trying to enumerate templates.' + ) + ); + process.exit(1); + } + + const apiResult: Array<{ name: string }> = body; + if (!apiResult.some((result) => result.name === this.argv.template)) { + console.error(chalk.red(`Template ${this.argv.template} did not exist.`)); + console.error(chalk.red('Valid templates are: ')); + apiResult.forEach((result) => { + if (result.name === 'node-headless-ssr-proxy') { + return; + } - resolve(apiResult); - }); + console.error(chalk.yellow(result.name)); + }); + process.exit(1); + } + + resolve(apiResult); + } + ); }); } @@ -91,7 +104,10 @@ export class GitHubSource { console.log(chalk.cyan(`Acquiring templates from ${this.githubDownloadUrl}...`)); await new Promise((resolve, reject) => { - const res = request.get(this.githubDownloadUrl, { proxy: this.argv.proxy, headers: { 'User-Agent': 'SitecoreJSSCLI' } }); + const res = request.get(this.githubDownloadUrl, { + proxy: this.argv.proxy, + headers: { 'User-Agent': 'SitecoreJSSCLI' }, + }); const fileStream = fs.createWriteStream(fileName, { autoClose: true }); res.pipe(fileStream); res.on('error', reject); @@ -106,36 +122,39 @@ export class GitHubSource { fs.mkdirSync(this.destinationPath); - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { fs.readFile(zipFile, (err, data) => { if (err) { reject(err); } const jszip = new JSZip(); - const writePromises: Array> = []; + const writePromises: Array> = []; jszip.loadAsync(data).then(async (zip) => { - zip.filter((innerPath) => filter.test(innerPath)).forEach((file) => { - const relativePath = (filter.exec(file.name) as any)[1]; - const outputPath = path.join(this.destinationPath, relativePath); - - if (file.dir) { - // create directory - if (!fs.existsSync(outputPath)) { - console.log(chalk.gray(`mkdir ${outputPath}`)); - fs.mkdirSync(outputPath); + zip + .filter((innerPath) => filter.test(innerPath)) + .forEach((file) => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const relativePath = (filter.exec(file.name) as any)[1]; + const outputPath = path.join(this.destinationPath, relativePath); + + if (file.dir) { + // create directory + if (!fs.existsSync(outputPath)) { + console.log(chalk.gray(`mkdir ${outputPath}`)); + fs.mkdirSync(outputPath); + } + } else { + // read file from zip, write to file + writePromises.push( + file.async('nodebuffer').then((content) => { + console.log(chalk.gray(`write ${outputPath}`)); + fs.writeFileSync(outputPath, content); + }) + ); } - } else { - // read file from zip, write to file - writePromises.push( - file.async('nodebuffer').then((content) => { - console.log(chalk.gray(`write ${outputPath}`)); - fs.writeFileSync(outputPath, content); - }) - ); - } - }); + }); await Promise.all(writePromises); resolve(); diff --git a/packages/sitecore-jss-cli/src/create/index.ts b/packages/sitecore-jss-cli/src/create/index.ts index 35e4436ae0..bd457a42fe 100644 --- a/packages/sitecore-jss-cli/src/create/index.ts +++ b/packages/sitecore-jss-cli/src/create/index.ts @@ -3,6 +3,11 @@ import fs from 'fs'; import glob from 'glob'; import path from 'path'; +/** + * @param {string} projectFolder + * @param {string} name + * @param {string} hostName + */ export function applyNameToProject(projectFolder: string, name: string, hostName: string) { console.log(chalk.cyan(`Setting package name ${name}...`)); diff --git a/packages/sitecore-jss-cli/src/micro-manifest.ts b/packages/sitecore-jss-cli/src/micro-manifest.ts index 44329f284c..fb63046f99 100644 --- a/packages/sitecore-jss-cli/src/micro-manifest.ts +++ b/packages/sitecore-jss-cli/src/micro-manifest.ts @@ -1,4 +1,8 @@ -import { packageDeploy, resolveScJssConfig, verifySetup } from '@sitecore-jss/sitecore-jss-dev-tools'; +import { + packageDeploy, + resolveScJssConfig, + verifySetup, +} from '@sitecore-jss/sitecore-jss-dev-tools'; import fs from 'fs'; import path from 'path'; import tmp from 'tmp'; @@ -6,7 +10,15 @@ import resolvePackage from './resolve-package'; import { handler as manifestHandler } from './scripts/manifest'; import { handler as packageHandler } from './scripts/package'; -export default async function microManifest(argv: { [key: string]: any }, manifestContents: string) { +/** + * @param {any} argv + * @param {string} manifestContents + */ +export default async function microManifest( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + argv: { [key: string]: any }, + manifestContents: string +) { verifySetup(); const packageJson = await resolvePackage(); @@ -18,13 +30,12 @@ export default async function microManifest(argv: { [key: string]: any }, manife throw new Error('App Name was not defined as a parameter or in the package.json config'); } - const jssConfig = await resolveScJssConfig({ configPath: argv.config }); + const jssConfig = await resolveScJssConfig({ configPath: argv.config as string }); if (!argv.deployUrl) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any const legacyConfig = jssConfig.sitecore as any; - argv.deployUrl = legacyConfig.shipUrl - ? legacyConfig.shipUrl - : jssConfig.sitecore.deployUrl; + argv.deployUrl = legacyConfig.shipUrl ? legacyConfig.shipUrl : jssConfig.sitecore.deployUrl; } if (!argv.deployUrl) { throw new Error('deployUrl was not defined as a parameter or in the scjssconfig.json file'); @@ -32,7 +43,6 @@ export default async function microManifest(argv: { [key: string]: any }, manife if (/\/ship\/services\/package/.test(argv.deployUrl)) { throw new Error( - // tslint:disable-next-line:max-line-length 'deployUrl appears to be a Sitecore.Ship endpoint. JSS no longer uses Ship. You will need to reconfigure your endpoint to the JSS deploy service and provide an app shared secret to deploy.' ); } @@ -44,13 +54,17 @@ export default async function microManifest(argv: { [key: string]: any }, manife throw new Error('deploySecret was not defined as a parameter or in the scjssconfig.json file'); } - return new Promise((resolve, reject) => { + return new Promise((resolve, reject) => { tmp.dir({ unsafeCleanup: true }, async (err, tempDir, cleanupTempDir) => { - if (err) { reject(err); } + if (err) { + reject(err); + } // generate micro-manifest to deploy with const manifestFolder = path.join(tempDir, 'manifest'); - if (!fs.existsSync(manifestFolder)) { fs.mkdirSync(manifestFolder); } + if (!fs.existsSync(manifestFolder)) { + fs.mkdirSync(manifestFolder); + } const manifestArgs = { manifestSourceFiles: [path.join(manifestFolder, 'tempManifestSource.js')], @@ -66,7 +80,9 @@ export default async function microManifest(argv: { [key: string]: any }, manife // run a package deploy of our custom manifest const packageDir = path.join(tempDir, 'package'); - if (!fs.existsSync(packageDir)) { fs.mkdirSync(packageDir); } + if (!fs.existsSync(packageDir)) { + fs.mkdirSync(packageDir); + } const packageArgs = { skipManifest: true, diff --git a/packages/sitecore-jss-cli/src/resolve-package.ts b/packages/sitecore-jss-cli/src/resolve-package.ts index a4773496e8..276513bd6e 100644 --- a/packages/sitecore-jss-cli/src/resolve-package.ts +++ b/packages/sitecore-jss-cli/src/resolve-package.ts @@ -1,5 +1,6 @@ import resolve from 'resolve'; +// eslint-disable-next-line @typescript-eslint/no-explicit-any export default (): Promise => new Promise((resolvePromise, rejectPromise) => { resolve('./package.json', { basedir: process.cwd() }, (error, packageJson) => { @@ -7,6 +8,7 @@ export default (): Promise => console.warn('No package.json could be found in the current directory.'); rejectPromise(); } else { + // eslint-disable-next-line @typescript-eslint/no-var-requires resolvePromise(require(packageJson as string)); } }); diff --git a/packages/sitecore-jss-cli/src/run-package-script.ts b/packages/sitecore-jss-cli/src/run-package-script.ts index 5eb56ce202..4659178192 100644 --- a/packages/sitecore-jss-cli/src/run-package-script.ts +++ b/packages/sitecore-jss-cli/src/run-package-script.ts @@ -3,7 +3,14 @@ import spawn from './spawn'; // runs a package.json script using npm // uses yarn semantics for args (i.e. pass ['scriptname', '--myarg=value'], no -- needed) -export default function runPackageScript(args: string[], options?: SpawnSyncOptionsWithStringEncoding) { +/** + * @param {string[]} args + * @param {SpawnSyncOptionsWithStringEncoding} [options] + */ +export default function runPackageScript( + args: string[], + options?: SpawnSyncOptionsWithStringEncoding +) { // npm needs a -- delimiter before any extra args const npmArgs = ['run', ...args.slice(0, 1), '--', ...args.slice(1)]; @@ -12,7 +19,14 @@ export default function runPackageScript(args: string[], options?: SpawnSyncOpti // runs a package.json script using yarn or npm // uses yarn semantics for args (i.e. pass ['scriptname', '--myarg=value'], no -- needed) -export function runPackageManagerCommand(npmArgs: string[], options?: SpawnSyncOptionsWithStringEncoding) { +/** + * @param {string[]} npmArgs + * @param {SpawnSyncOptionsWithStringEncoding} options + */ +export function runPackageManagerCommand( + npmArgs: string[], + options?: SpawnSyncOptionsWithStringEncoding +) { console.log(`> npm ${npmArgs.join(' ')}`); spawn('npm', npmArgs, options); } diff --git a/packages/sitecore-jss-cli/src/scripts/clean.ts b/packages/sitecore-jss-cli/src/scripts/clean.ts index d39403141d..144ca6e6e2 100644 --- a/packages/sitecore-jss-cli/src/scripts/clean.ts +++ b/packages/sitecore-jss-cli/src/scripts/clean.ts @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import { clean } from '@sitecore-jss/sitecore-jss-dev-tools'; import resolvePackage from '../resolve-package'; @@ -13,6 +14,10 @@ export const builder = { }, }; +/** + * @param {any} argv + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any export async function handler(argv: any) { const packageJson = await resolvePackage(); diff --git a/packages/sitecore-jss-cli/src/scripts/create.ts b/packages/sitecore-jss-cli/src/scripts/create.ts index 35663b6f09..d07bb39f86 100644 --- a/packages/sitecore-jss-cli/src/scripts/create.ts +++ b/packages/sitecore-jss-cli/src/scripts/create.ts @@ -1,3 +1,4 @@ +/* eslint-disable prettier/prettier */ import chalk from 'chalk'; import fs from 'fs'; import path from 'path'; @@ -7,6 +8,9 @@ import { GitHubSource } from '../create/create.source.github'; import { runPackageManagerCommand } from '../run-package-script'; import spawn from '../spawn'; +/** + * @param {any} yargs + */ export function builder(yargs: Argv) { return yargs.command( 'create